تخطَّ إلى المحتوى
CADCAMFUN
الوثائق

الوثائق

التحليلات

مقاييس التطبيق والنشاط الأخير واستعلامات الاستخدام وطلبات التتبع.

مترجم تلقائيًا من الإنجليزية. عرض الأصل بالإنجليزية

ساحة التجربة

أرسل هذه الطلبات إلى السايدكار الخاصة بك. تبقى القيم في هذا المتصفح.

غير متصل
كيف يعمل هذا

يستمع السايدكار إلى منفذ الاسترجاع الذي تم اختياره عند بدء التشغيل ويطبعه في منفذ الاسترجاع الخاص به 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
عمليات التحليلات في 3د اسحب إلى المدار · قم بالتمرير للتكبير · اسحب بزر الماوس الأيمن للتحريك
كتلة واحدة لكل عملية (10)، مكدسة لكل قسم موارد في هذه الصفحة وملونة حسب الطريقة: GET الأخضر، POST البرتقالي، PUT الأزرق، PATCH البنفسجي، DELETE الأحمر. تم إنشاؤها من مستند OpenAPI في وقت الإنشاء.

/api/analytics/system-metrics

يحصل /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
الحصول على /api/analytics/system-metrics
{
  "cpuUsage": 6,
  "memoryUsage": 79,
  "storageUsed": 72,
  "networkLatency": 15,
  "activeConnections": 145,
  "cacheHitRatio": 98,
  "errorRate": 0.04,
  "responseTime": 52
}
مثال SDK
analytics.systemMetrics
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
الحصول على /api/analytics/system-metrics
curl --request GET "${CADCAMFUN_URL}/api/analytics/system-metrics" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
جربه

/api/analytics

يحصل /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
الحصول على /api/analytics
{
  "success": true,
  "data": {
    "countByType": [],
    "countByAction": []
  },
  "isAdmin": true,
  "filters": {
    "groupBy": "day"
  }
}
مثال SDK
analytics.index
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
الحصول على /api/analytics
curl --request GET "${CADCAMFUN_URL}/api/analytics" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
جربه

/api/analytics/dashboard-data

يحصل /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
الحصول على /api/analytics/dashboard-data
{
  "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
analytics.dashboardData
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
الحصول على /api/analytics/dashboard-data
curl --request GET "${CADCAMFUN_URL}/api/analytics/dashboard-data" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
جربه

/api/analytics/log-view

بريد /api/analytics/log-view # analytics.logView

يتطلب Authorization: Bearer <token>.

نص الطلب · مطلوب · application/json
{
  path?: string | null
  query?: unknown | null
}
الردود
200 هدف application/json
{
  success: true
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 InternalErrorEncoded application/json
InternalErrorEncoded
مثال SDK
analytics.logView
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
POST /api/analytics/log-view
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

يحصل /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
الحصول على /api/analytics/recent-activity
[]
مثال SDK
analytics.recentActivity
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
الحصول على /api/analytics/recent-activity
curl --request GET "${CADCAMFUN_URL}/api/analytics/recent-activity" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
جربه

/api/analytics/user-history

يحصل /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
الحصول على /api/analytics/user-history
{
  "logs": [],
  "total": 0
}
مثال SDK
analytics.userHistory
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
الحصول على /api/analytics/user-history
curl --request GET "${CADCAMFUN_URL}/api/analytics/user-history" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
جربه

/api/analytics/user-metrics

يحصل /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
الحصول على /api/analytics/user-metrics
{
  "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
analytics.userMetrics
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
الحصول على /api/analytics/user-metrics
curl --request GET "${CADCAMFUN_URL}/api/analytics/user-metrics" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
جربه

/api/analytics/user-usage

يحصل /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
الحصول على /api/analytics/user-usage
{
  "users": [],
  "systemStats": {
    "totalUsers": 0,
    "totalTokens": 0,
    "totalCost": 0,
    "totalRequests": 0,
    "averageCostPerUser": 0,
    "topSpendingUsers": [],
    "modelDistribution": {}
  }
}
مثال SDK
analytics.userUsage
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
الحصول على /api/analytics/user-usage
curl --request GET "${CADCAMFUN_URL}/api/analytics/user-usage" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
جربه
يمسح /api/analytics/user-usage # analytics.clearUserUsage

يتطلب Authorization: Bearer <token>.

الردود
200 هدف application/json
{
  message: string
}
401 UnauthorizedEncoded application/json
UnauthorizedEncoded
500 KeyedInternalEncoded application/json
KeyedInternalEncoded
مثال SDK
analytics.clearUserUsage
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
احذف /api/analytics/user-usage
curl --request DELETE "${CADCAMFUN_URL}/api/analytics/user-usage" \
  --header "Authorization: Bearer ${CADCAMFUN_TOKEN}"
جربه

/api/analytics/track

بريد /api/analytics/track # analytics.track

يتطلب Authorization: Bearer <token>.

نص الطلب · مطلوب · application/json
{
  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
analytics.track
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
POST /api/analytics/track
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
}
UnauthorizedEncoded
{
  _tag: "Unauthorized"
  message: string
}

استدعاء هذه المجموعة

معرفات العملية لها النموذج analytics.<name>. وعد SDK الذي تم إنشاؤه (@cadcamfun/api/sdk) يعرض معظمهم client.<namespace>.<method>(input)، أين input هو كائن مسطح واحد من معلمات المسار وحقول النص؛ يُظهر مثال SDK لكل بطاقة الملحق الدقيق ونوع الإدخال. لا يتم إنشاء التحميلات متعددة الأجزاء والاستجابات الثنائية أو استجابات JavaScript وخطافات الويب الأولية؛ تظهر تلك البطاقات fetch بدلاً من ذلك.

أخطاء من Promise SDK
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 سطر.