الوثائق
التحليلات
مقاييس التطبيق والنشاط الأخير واستعلامات الاستخدام وطلبات التتبع.
مترجم تلقائيًا من الإنجليزية. عرض الأصل بالإنجليزية
أرسل هذه الطلبات إلى السايدكار الخاصة بك. تبقى القيم في هذا المتصفح.
كيف يعمل هذا
يستمع السايدكار إلى منفذ الاسترجاع الذي تم اختياره عند بدء التشغيل ويطبعه في منفذ الاسترجاع الخاص به ready خط؛ استخدم عنوان URL هذا و CADCAMFUN_TOKEN لقد بدأ مع. تذهب الطلبات مباشرة من هذه الصفحة إلى هذا العنوان.
يرسل السايدكار رؤوس CORS فقط إلى أصول Tauri وإلى http://localhost أو http://127.0.0.1 على أي منفذ. من المستندات المستضافة، يحظر المتصفح الاستجابة، لذا قم بتشغيل المستندات محليًا (bun run dev في packages/web) لاستخدام الملعب، أو نسخ الطلب كحليقة. للتجربة دون لمس البيانات الحقيقية، ابدأ تشغيل السايدكار باستخدام CADCAMFUN_DATA_DIR أشار إلى دليل مهمل - انظر إرشادات واجهة برمجة التطبيقات.
العمليات
10 نقاط نهاية في analytics المجموعة التي تم إنشاؤها من السايدكار مستند OpenAPI. تأخذ العمليات المحمية Authorization: Bearer $CADCAMFUN_TOKEN; يرى المصادقة. السلوك والحدود موجودة دليل النظام الفرعي.
| يحصل | /api/analytics/system-metrics | analytics.systemMetrics |
| يحصل | /api/analytics | analytics.index |
| يحصل | /api/analytics/dashboard-data | analytics.dashboardData |
| بريد | /api/analytics/log-view | analytics.logView |
| يحصل | /api/analytics/recent-activity | analytics.recentActivity |
| يحصل | /api/analytics/user-history | analytics.userHistory |
| يحصل | /api/analytics/user-metrics | analytics.userMetrics |
| يحصل | /api/analytics/user-usage | analytics.userUsage |
| يمسح | /api/analytics/user-usage | analytics.clearUserUsage |
| بريد | /api/analytics/track | analytics.track |
/api/analytics/system-metrics
analytics.systemMetrics يتطلب Authorization: Bearer <token>.
200 هدف application/json
{ cpuUsage: number | "Infinity" | "-Infinity" | "NaN" memoryUsage: number | "Infinity" | "-Infinity" | "NaN" storageUsed: number | "Infinity" | "-Infinity" | "NaN" networkLatency: number | "Infinity" | "-Infinity" | "NaN" activeConnections: number | "Infinity" | "-Infinity" | "NaN" cacheHitRatio: number | "Infinity" | "-Infinity" | "NaN" errorRate: number | "Infinity" | "-Infinity" | "NaN" responseTime: number | "Infinity" | "-Infinity" | "NaN" }
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
رد المثال تم الالتقاط · 200
{
"cpuUsage": 6,
"memoryUsage": 79,
"storageUsed": 72,
"networkLatency": 15,
"activeConnections": 145,
"cacheHitRatio": 98,
"errorRate": 0.04,
"responseTime": 52
} مثال SDK
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
// no input
const result = await client.analytics.systemMetrics() curl
curl --request GET "${CADCAMFUN_URL}/api/analytics/system-metrics" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" جربه
/api/analytics
analytics.index يتطلب Authorization: Bearer <token>.
| اسم | في | يكتب | مطلوب |
|---|---|---|---|
| startDate | استفسار | خيط | null | خياري |
| endDate | استفسار | خيط | null | خياري |
| itemType | استفسار | خيط | خيط[] | null | خياري |
| فعل | استفسار | خيط | خيط[] | null | خياري |
| groupBy | استفسار | خيط | null | خياري |
| userFilter | استفسار | خيط | خيط[] | null | خياري |
200 هدف application/json
{ success: true data: { countByType: Array<{ itemType: string _count: number | "Infinity" | "-Infinity" | "NaN" }> countByAction: Array<{ action: string _count: number | "Infinity" | "-Infinity" | "NaN" }> } isAdmin: boolean filters: unknown }
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 AnalyticsFailureEncoded application/json
AnalyticsFailureEncoded
رد المثال تم الالتقاط · 200
{
"success": true,
"data": {
"countByType": [],
"countByAction": []
},
"isAdmin": true,
"filters": {
"groupBy": "day"
}
} مثال SDK
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
// AnalyticsIndexInput
const result = await client.analytics.index({}) curl
curl --request GET "${CADCAMFUN_URL}/api/analytics" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" جربه
/api/analytics/dashboard-data
analytics.dashboardData يتطلب Authorization: Bearer <token>.
200 هدف application/json
{ components: { total: number | "Infinity" | "-Infinity" | "NaN" trend: number | "Infinity" | "-Infinity" | "NaN" recentActivity: number | "Infinity" | "-Infinity" | "NaN" } projects: { total: number | "Infinity" | "-Infinity" | "NaN" trend: number | "Infinity" | "-Infinity" | "NaN" activeProjects: number | "Infinity" | "-Infinity" | "NaN" } tools: { total: number | "Infinity" | "-Infinity" | "NaN" trend: number | "Infinity" | "-Infinity" | "NaN" mostUsed: string } materials: { total: number | "Infinity" | "-Infinity" | "NaN" trend: number | "Infinity" | "-Infinity" | "NaN" lowStock: number | "Infinity" | "-Infinity" | "NaN" } }
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
رد المثال تم الالتقاط · 200
{
"components": {
"total": 0,
"trend": 0,
"recentActivity": 0
},
"projects": {
"total": 0,
"trend": 0,
"activeProjects": 0
},
"tools": {
"total": 0,
"trend": 0,
"mostUsed": "No tools used yet"
},
"materials": {
"total": 0,
"trend": 0,
"lowStock": 0
}
} مثال SDK
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
// no input
const result = await client.analytics.dashboardData() curl
curl --request GET "${CADCAMFUN_URL}/api/analytics/dashboard-data" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" جربه
/api/analytics/log-view
analytics.logView يتطلب Authorization: Bearer <token>.
{ path?: string | null query?: unknown | null }
200 هدف application/json
{ success: true }
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
مثال SDK
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
// AnalyticsLogViewInput
const result = await client.analytics.logView({
path: "",
query: null
}) curl
curl --request POST "${CADCAMFUN_URL}/api/analytics/log-view" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json جربه
/api/analytics/recent-activity
analytics.recentActivity يتطلب Authorization: Bearer <token>.
| اسم | في | يكتب | مطلوب |
|---|---|---|---|
| حد | استفسار | خيط | null | خياري |
200 صفيف <كائن> application/json
Array<{ id: string type: string action: string itemName: string timestamp: string userId: string userName: string }>
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
رد المثال تم الالتقاط · 200
[] مثال SDK
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
// AnalyticsRecentActivityInput
const result = await client.analytics.recentActivity({}) curl
curl --request GET "${CADCAMFUN_URL}/api/analytics/recent-activity" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" جربه
/api/analytics/user-history
analytics.userHistory يتطلب Authorization: Bearer <token>.
| اسم | في | يكتب | مطلوب |
|---|---|---|---|
| حد | استفسار | خيط | null | خياري |
| إزاحة | استفسار | خيط | null | خياري |
| itemType | استفسار | خيط | خيط[] | null | خياري |
| فعل | استفسار | خيط | خيط[] | null | خياري |
| startDate | استفسار | خيط | null | خياري |
| endDate | استفسار | خيط | null | خياري |
200 هدف application/json
{ logs: unknown[] total: number | "Infinity" | "-Infinity" | "NaN" }
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
رد المثال تم الالتقاط · 200
{
"logs": [],
"total": 0
} مثال SDK
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
// AnalyticsUserHistoryInput
const result = await client.analytics.userHistory({}) curl
curl --request GET "${CADCAMFUN_URL}/api/analytics/user-history" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" جربه
/api/analytics/user-metrics
analytics.userMetrics يتطلب Authorization: Bearer <token>.
| اسم | في | يكتب | مطلوب |
|---|---|---|---|
| startDate | استفسار | خيط | null | خياري |
| endDate | استفسار | خيط | null | خياري |
| groupBy | استفسار | خيط | null | خياري |
| متري | استفسار | خيط | null | خياري |
200 هدف application/json
{ summary: { totalAiRequests: number | "Infinity" | "-Infinity" | "NaN" totalCadDrawings: number | "Infinity" | "-Infinity" | "NaN" totalStorageUsage: number | "Infinity" | "-Infinity" | "NaN" totalProjects: number | "Infinity" | "-Infinity" | "NaN" totalComponents: number | "Infinity" | "-Infinity" | "NaN" totalToolpaths: number | "Infinity" | "-Infinity" | "NaN" totalActivityCount?: number | "Infinity" | "-Infinity" | "NaN" | null } chartData: Array<{ [key: string]: string | number | "Infinity" | "-Infinity" | "NaN" }> }
400 AnalyticsKeyedBadRequestEncoded application/json
AnalyticsKeyedBadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
رد المثال تم الالتقاط · 200
{
"summary": {
"totalAiRequests": 0,
"totalCadDrawings": 0,
"totalStorageUsage": 0,
"totalProjects": 0,
"totalComponents": 0,
"totalToolpaths": 0,
"totalActivityCount": 0
},
"chartData": [
{
"date": "2026-09-15",
"activityCount": 0,
"toolpathsGenerated": 0,
"connections": 0,
"programRuns": 0,
"aiRequests": 0,
"cadDrawings": 0,
"storageUsage": 0,
"projects": 0,
"components": 0,
"toolpaths": 0
},
{
"date": "2026-09-16",
"activityCount": 0,
"toolpathsGenerated": 0,
"connections": 0,
"programRuns": 0,
"aiRequests": 0,
"cadDrawings": 0,
"storageUsage": 0,
"projects": 0,
"components": 0,
"toolpaths": 0
},
{
"date": "2026-09-17",
"activityCount": 0,
"toolpathsGenerated": 0,
"connections": 0,
"programRuns": 0,
"aiRequests": 0,
"cadDrawings": 0,
"storageUsage": 0,
"projects": 0,
"components": 0,
"toolpaths": 0
},
{
"date": "2026-09-18",
"activityCount": 0,
"toolpathsGenerated": 0,
"connections": 0,
"programRuns": 0,
"aiRequests": 0,
"cadDrawings": 0,
"storageUsage": 0,
"projects": 0,
"components": 0,
"toolpaths": 0
},
{
"date": "2026-09-19",
"activityCount": 0,
"toolpathsGenerated": 0,
"connections": 0,
"programRuns": 0,
"aiRequests": 0,
"cadDrawings": 0,
"storageUsage": 0,
"projects": 0,
"components": 0,
"toolpaths": 0
},
{
"date": "2026-09-20",
"activityCount": 0,
"toolpathsGenerated": 0,
"connections": 0,
"programRuns": 0,
"aiRequests": 0,
"cadDrawings": 0,
"storageUsage": 0,
"projects": 0,
"components": 0,
"toolpaths": 0
},
{
"date": "2026-09-21",
"activityCount": 0,
"toolpathsGenerated": 0,
"connections": 0,
"programRuns": 0,
"aiRequests": 0,
"cadDrawings": 0,
"storageUsage": 0,
"projects": 0,
"components": 0,
"toolpaths": 0
},
{
"date": "2026-09-22",
"activityCount": 0,
"toolpathsGenerated": 0,
"connections": 0,
"programRuns": 0,
"aiRequests": 0,
"cadDrawings": 0,
"storageUsage": 0,
"projects": 0,
"components": 0,
"toolpaths": 0
},
{
"
… مثال SDK
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
// AnalyticsUserMetricsInput
const result = await client.analytics.userMetrics({}) curl
curl --request GET "${CADCAMFUN_URL}/api/analytics/user-metrics" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" جربه
/api/analytics/user-usage
analytics.userUsage يتطلب Authorization: Bearer <token>.
| اسم | في | يكتب | مطلوب |
|---|---|---|---|
| userId | استفسار | خيط | null | خياري |
| startDate | استفسار | خيط | null | خياري |
| endDate | استفسار | خيط | null | خياري |
| فترة | استفسار | خيط | null | خياري |
200 هدف application/json
{ summary?: unknown | null breakdown?: unknown | null users?: unknown[] | null systemStats?: unknown | null }
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
403 AnalyticsKeyedForbiddenEncoded application/json
AnalyticsKeyedForbiddenEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
رد المثال تم الالتقاط · 200
{
"users": [],
"systemStats": {
"totalUsers": 0,
"totalTokens": 0,
"totalCost": 0,
"totalRequests": 0,
"averageCostPerUser": 0,
"topSpendingUsers": [],
"modelDistribution": {}
}
} مثال SDK
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
// AnalyticsUserUsageInput
const result = await client.analytics.userUsage({}) curl
curl --request GET "${CADCAMFUN_URL}/api/analytics/user-usage" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" جربه
analytics.clearUserUsage يتطلب Authorization: Bearer <token>.
200 هدف application/json
{ message: string }
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
مثال SDK
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
// no input
const result = await client.analytics.clearUserUsage() curl
curl --request DELETE "${CADCAMFUN_URL}/api/analytics/user-usage" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" جربه
/api/analytics/track
analytics.track يتطلب Authorization: Bearer <token>.
{ itemId?: string | null itemType?: string | null action?: string | null details?: unknown | null }
200 هدف application/json
{ success: true }
400 BadRequestEncoded application/json
BadRequestEncoded
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
مثال SDK
import { CadCam } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
// AnalyticsTrackInput
const result = await client.analytics.track({
itemId: "",
itemType: "",
action: "",
details: null
}) curl
curl --request POST "${CADCAMFUN_URL}/api/analytics/track" \
--header "Authorization: Bearer ${CADCAMFUN_TOKEN}" \
--header "Content-Type: application/json" \
--data-binary @request.json جربه
المخططات
يمكن الوصول إلى المخططات المسماة من معلمات هذه المجموعة وأجسامها واستجاباتها. أ ? يمثل حقلاً اختياريًا؛ | null يضع علامة على الحقل الذي قد يكون موجودًا بقيمة فارغة.
AnalyticsFailureEncoded{ _tag: "AnalyticsFailure" success: false message: string }
AnalyticsKeyedBadRequestEncoded{ _tag: "AnalyticsKeyedBadRequest" error: string }
AnalyticsKeyedForbiddenEncoded{ _tag: "AnalyticsKeyedForbidden" error: string }
BadRequestEncoded{ _tag: "BadRequest" message: string }
InternalErrorEncoded{ _tag: "InternalError" message: string }
KeyedInternalEncoded{ _tag: "KeyedInternal" error: string }
استدعاء هذه المجموعة
معرفات العملية لها النموذج analytics.<name>. وعد SDK الذي تم إنشاؤه (@cadcamfun/api/sdk) يعرض معظمهم client.<namespace>.<method>(input)، أين input هو كائن مسطح واحد من معلمات المسار وحقول النص؛ يُظهر مثال SDK لكل بطاقة الملحق الدقيق ونوع الإدخال. لا يتم إنشاء التحميلات متعددة الأجزاء والاستجابات الثنائية أو استجابات JavaScript وخطافات الويب الأولية؛ تظهر تلك البطاقات fetch بدلاً من ذلك.
import { CadCam, ClientError } from "@cadcamfun/api/sdk"
const client = CadCam.make({
baseUrl: process.env.CADCAMFUN_URL!,
headers: { authorization: `Bearer ${process.env.CADCAMFUN_TOKEN}` },
})
try {
await client.projects.list()
} catch (error) {
if (error instanceof ClientError) {
// Transport | UnexpectedStatus | UnsupportedContentType | MalformedResponse | SseEventTooLarge
} else {
// a declared error body: switch on error._tag
}
} استكشاف الأخطاء وإصلاحها
| أعراض | السبب المحتمل | يصلح |
|---|---|---|
| 401 في كل طلب | رمز مميز من إطلاق سابق، أو مفقود Bearer بادئة | يرسل Authorization: Bearer <token> بالرمز المميز الذي بدأت به السايدكار. |
| 400 قبل أن يحدث أي شيء | النص أو المعلمة لا يتطابقان مع المخطط | قارن الحمولة بمخطط الطلب الموجود على البطاقة. |
| 403 أو 404 لسجل يمكنك رؤيته في مكان آخر | حساب التمثيل يختلف | أرسل الحق x-session-tokenأو استخدم ملف التعريف المحلي الذي يملك السجل. |
| 409 | حالة متعارضة، مثل اسم مكرر أو رأس فرع قديم | أعد قراءة المورد وأعد المحاولة باستخدام البيانات الحالية. |
| جربه يقول "تم حظره بواسطة CORS" | يتم تقديم المستندات من أصل غير استرجاعي | قم بتشغيل المستندات محليًا أو انسخ الطلب كـ curly. |
| رفض اتصال | تم إعادة تشغيل السايدكار في منفذ جديد | قراءة المنفذ من الجديد ready سطر. |