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

الوثائق

استكشاف أخطاء سطح المكتب وإصلاحها

حدد العملية الفاشلة، وافحص نقطة النهاية الحقيقية ودليل البيانات، واسترجعها دون الخلط بين المعاينة والمثابرة.

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

تحديد وقت التشغيل قبل تغييره

جلسة سطح المكتب لها حدود فشل منفصلة: يوفر Vite أصول الواجهة الأمامية أثناء التطوير؛ تمتلك عملية Tauri Rust التكامل الأصلي؛ يخدم Bun Sidecar طلبات التقديم والمثابرة؛ يتصل عرض الويب SolidJS بواجهة برمجة التطبيقات (API) تلك. يمكن أن يكون للنافذة الفارغة، ومهلة التمهيد، والاستجابة 401، وقائمة المشاريع الفارغة أسباب مختلفة.

وضع الإطلاقالخلفيةما يمكنه تأسيسه
حزمة سطح المكتب dev بدون عنوان URL السايدكارعميل وهمي في الذاكرةسلوك الشاشة المعتمد على التركيبات، وليس تخزين التطبيقات الدائم.
Vite مع URL والرمز المميزتشغيل السايدكار المختارةطلبات المتصفح إلى الخادم والثبات في دليل ذلك الخادم.
جذر desktop:devتجميع السايدكار الخاضعة للإشرافالغلاف الأصلي وعرض الويب والخادم/الموارد المجمعة وتدفق التطبيقات.
تطبيق سطح المكتب tauri:dev مع عدم وجود ثنائي موجودتم إنشاء كعب السايدكارسلوك الصدفة المعزولة؛ كعب الروتين ليس API التطبيق الكامل.

قم بتسجيل أمر الإطلاق وما إذا كانت نقطة النهاية جاءت من متغيرات Tauri أو Vite. لا تقم بحذف قاعدة بيانات أو إعادة تثبيت التبعيات لمجرد أن وقت تشغيل مختلف يعرض بيانات مختلفة.

فهم توقيت بدء التشغيل

يُنشئ Rust Shell رمزًا مميزًا للإطلاق، ويحل بيانات التطبيق وأدلة الترحيل، وينتج السايدكار المستهدفة. الطفل يربط 127.0.0.1 على منفذ سريع الزوال. وينتظر حتى الجمهور /api/health الإجابات، ثم يكتب حدث JSON جاهزًا باستخدام هذا المنفذ. يستدعي عرض الويب get_sidecar_endpoint وينشئ وقت تشغيل API المُدار الخاص به.

ميزانيةالقيمة الحاليةمعنى
شل المصافحة جاهزة60 ثانية لكل بدايةالحد الأقصى لانتظار الحدث الجاهز للاستخدام لدى الطفل.
إعادة تشغيل المشرف التلقائيواحدلا يتم إعادة تشغيل الطفل الفاشل إلى أجل غير مسمى.
نقطة النهاية الأصلية تنتظر125 ثانيةميزانيتين جاهزتين بالإضافة إلى الركود.
محاولة اتصال Webview30 ثانيةمهلة الصحة/الاتصال لمحاولة.
حلقة إعادة محاولة عرض الويب150 ثانية، 750 توقف مؤقتإعادة حل نقاط النهاية قبل عرض فشل انتهاء المهلة.

إعادة المحاولة تعيد تشغيل محاولات اتصال عرض الويب؛ فهو لا يجدد ميزانية الإشراف المنهكة في مجال Rust. أصلح سبب بدء التشغيل وأعد تشغيل التطبيق عندما يصل المشرف إلى حالة الفشل النهائية. يمكن أن يكون المنفذ الموجود قبل إعادة تشغيل الطفل قديمًا.

تحقق من المنافذ والصحة بشكل منفصل

استخدامات فيت localhost:1420 مع اختيار صارم للمنفذ، يتوافق مع عنوان URL الخاص بالتطوير الذي تم تكوينه في Tauri. يفشل بدلاً من الانتقال بصمت إلى منفذ آخر. منفذ السايدكار غير مرتبط ويتغير بين عمليات الإطلاق. منفذ HTTPS المصاحب هو مستمع ثالث، افتراضي 8443، ويستخدم الاستوديو الاسترجاع 4396.

دقق في عربة تطوير معزولة؛ استبدل مثال المنفذ/الرمز المميز
CADCAM_URL=http://127.0.0.1:43111
CADCAM_TOKEN=local-development-token

curl --max-time 5 --fail-with-body "$CADCAM_URL/api/health"
curl --max-time 5 --fail-with-body "$CADCAM_URL/health"   -H "Authorization: Bearer $CADCAM_TOKEN"
curl --max-time 5 --fail-with-body "$CADCAM_URL/version"   -H "Authorization: Bearer $CADCAM_TOKEN"

يقوم مسار الصحة العامة بإرجاع الحالة والطابع الزمني. تكشف مسارات النظام المصادق عليها مدى الاستعداد وإصدار التطبيق. لا تثبت العملية السليمة أن جميع الموفرين أو استعلامات قاعدة البيانات أو مربعات الحوار الأصلية تعمل. قارن واجهة برمجة التطبيقات الصحية و واجهة برمجة تطبيقات النظام عند اختيار المجسات.

إذا كان المنفذ 1420 مشغولاً، فحدد خادم التطوير الحالي وأوقفه عمدًا. إذا رفض منفذ API الذي تم تذكره الاتصالات، فاقرأ الحدث الجاهز الحالي أو أعد حل نقطة نهاية Tauri بدلاً من تخمين المنافذ المجاورة.

تتكاثر مع سايدكار معزولة

تعد العملية المصدر مفيدة لفصل مشكلات الحزمة الأصلية عن سلوك الخادم. قم بتشغيل هذا من جذر المستودع في محطة تفاعلية؛ يقوم بإنشاء دليل بيانات جديد ويستخدم مجلد الترحيل الذي تم إنشاؤه بشكل صريح.

أبقِ هذه المحطة وstdin مفتوحين
CADCAM_DIAGNOSTIC_DIR=$(mktemp -d /tmp/cadcamfun-desktop-guide.XXXXXX)
CADCAMFUN_TOKEN=local-development-token CADCAMFUN_DATA_DIR="$CADCAM_DIAGNOSTIC_DIR/data" CADCAMFUN_MIGRATIONS_DIR="$PWD/packages/db/drizzle" CADCAMFUN_AI_OFFLINE=true bun --no-env-file apps/sidecar/src/main.ts

انسخ المنفذ المعلن إلى متغيرات المسبار في المحطة الثانية. يتجنب وضع AI غير المتصل الاعتماد على نموذج بعيد تم تكوينه لتشخيصات بدء التشغيل الأساسية؛ ولا يقوم بتشغيل نموذج محلي بديل. يلاحظ الخادم stdin EOF، وحدث إيقاف التشغيل الصريح، ومقاطعات وقت التشغيل العادية.

تستخدم العملية المصدر الملفات الحالية. تستخدم العملية الأصلية الملف القابل للتنفيذ المترجم الذي تم تنظيمه بالفعل src-tauri/binaries. في حالة فشل التشغيل المترجم فقط، قم بإعادة البناء من خلاله bun run build:sidecar وفحص موارد التجميع/الترحيل. تحرير TypeScript لا يحل محل الملف القابل للتنفيذ قيد التشغيل بالفعل.

حل مسار قاعدة البيانات الفعلي

Process/toolاختيار المسار
السايدكار التي أطلقتها TauriTauri app_data_dir()، ثم cadcamfun.db.
سايدكار يدويةCADCAMFUN_DATA_DIR/cadcamfun.db.
مؤشر الهجرةDATABASE_URL، خلاف ذلك ./data/cadcamfun.db نسبة إلى دليل العملية الخاص به.
جذر db:migrate إزاريعمل في حزمة قاعدة البيانات، ويعطي عادة packages/db/data/cadcamfun.db بشكل افتراضي.
واجهة برمجة تطبيقات الاستوديو المحليةCADCAMFUN_DB، ثم DATABASE_URL، ثم جذر المستودع data/cadcamfun.db.

هذه الملفات ليست أسماء مستعارة. قم بمطابقة مسار العملية المحدد قبل التحقق من الرسومات المفقودة. لا تفتح تركيبات المتصفح ملفات SQLite هذه أبدًا. يطبق السايدكار عمليات الترحيل فقط عندما يوفر تكوينه مجلد ترحيل؛ لا يؤدي حذفه إلى اكتشاف مجلد الشجرة المصدر تلقائيًا.

تعمل طبقة قاعدة البيانات على تمكين WAL والمفاتيح الخارجية. قبل ترقية قاعدة البيانات الموجودة، تقوم بكتابة نسخة احتياطية تلقائية قبل الترحيل وتحتفظ بخمس نسخ احتياطية مطابقة. ولا يقوم بإنشاء مثل هذه النسخة الاحتياطية عند كل عملية حفظ أو بدء تشغيل بدون تغيير أو إنشاء أول أو اختبار في الذاكرة. الاحتفاظ بنسخة احتياطية متسقة من خلال إجراء قاعدة البيانات/الاسترداد؛ يمكن أن يؤدي نسخ الملف الرئيسي لقاعدة بيانات WAL قيد التشغيل فقط إلى حذف محتوى WAL الملتزم.

قراءة مخرجات البروتوكول والسجلات

في المحطة السايدكار المصدر، يتم حجز stdout لأحداث بروتوكول الاستعداد/الخطأ وتنتقل سجلات تطبيق JSON إلى stderr. في التطبيق الأصلي، يلتقط المكون الإضافي لتسجيل Rust أحداث جانب الصدفة، بما في ذلك المخرجات الفرعية الخاضعة للإشراف. تقوم الصدفة بتنقيح الأسطر التي قد تحتوي على بيانات اعتماد الإطلاق الخاصة بها.

الأصلي get_logs_dir يقوم الأمر بحل دليل سجل تطبيق نظام التشغيل. إنه أكثر موثوقية من افتراض مسار عالمي واحد عبر الأنظمة. يمكن لتشخيص المطور داخل عرض الويب استدعاءه من خلال واجهة أوامر Tauri الحالية؛ يقتصر فتح المسار الأصلي على المجلدات المسموح بها ويرفض أنواع الملفات القابلة للتنفيذ.

يدعم مكون شاشة التمهيد القابل لإعادة الاستخدام رد اتصال عرض السجلات الاختياري، ولكن الحالي App.tsx لا يمر رد الاتصال هذا. لا تفترض أن زر عرض السجلات سيكون مرئيًا أثناء فشل بدء التشغيل. احتفظ بمحطة إطلاق التطوير متاحة أو استخدم دليل السجل الأصلي من خلال سطح تشخيص مناسب.

بالنسبة للتقرير، قم بتضمين وضع التشغيل، ومسارات الترحيل/البيانات غير السرية، والانتظار المنقضي، وإصدار واجهة برمجة التطبيقات الحالي، وعلامة/رسالة الخطأ الدقيقة، وآخر أحداث بدء التشغيل ذات الصلة. قم بتنقيح الرموز المميزة للإطلاق/الجلسة/الجهاز، وروابط الاقتران، ومفاتيح النموذج، ومواد التوقيع.

التمييز بين المصادقة والبيانات الفارغة

يتطلب وضع العميل الحقيقي للمتصفح كليهما VITE_SIDECAR_URL و VITE_SIDECAR_TOKEN. عنوان URL الذي لا يحتوي على رمز مميز لا ينشط الإجراء الاحتياطي الزائف؛ فشل قرار نقطة النهاية. يجب توفير المتغيرات قبل بدء تشغيل Vite. لا يؤدي تحديث الغلاف الأصلي إلى إعادة تكوين خادم قيد التشغيل بالفعل.

المتصفح متصل بعملية المصدر المعزولة
VITE_SIDECAR_URL=http://127.0.0.1:43111 VITE_SIDECAR_TOKEN=local-development-token bun run --filter @cadcamfun/desktop dev

يمكن للمكالمات المحمية استخدام سياق جلسة الحساب بالإضافة إلى الرمز المميز للتطبيق. تتميز الرموز المميزة للجسر المصاحب والمستقل بنطاقات أضيق وليست بدائل لرمز الإطلاق المميز. يحتاج 401 إلى تشخيص بيانات الاعتماد؛ يحتاج 403 إلى تشخيص التشغيل/الوصول؛ يمكن الإبلاغ عن مشروع غائب أو لا يمكن الوصول إليه كـ 404.

تعمل بعض الشاشات، بما في ذلك علامات تبويب الموارد التابعة للمشروع، حاليًا على تحويل أخطاء القائمة الفردية إلى صفائف فارغة. لا تعتبر علامة التبويب الفارغة دليلاً كافيًا على حذف السجلات. قراءة المقابلة مشروع, رسم، أو مسار الأدوات نقطة النهاية قبل إعادة إنشاء العمل.

رمز الإطلاق الصالح هو 64 من الأحرف السداسية العشرية (32 بايت عشوائي) ويتغير في كل إطلاق. لم يتم إصدار رمز مميز ذو شكل مختلف بواسطة غلاف سطح المكتب.

التعرف على المعاينة والقيود الأصلية

تتعامل واجهة برمجة التطبيقات المزيفة مع المشاريع والرسومات والمواد والأدوات والآلات ومسارات الأدوات وKV ومسارات المولدات المحددة. تقوم المجموعات غير المدعومة بإرجاع HTTP 501 برسالة خاصة بالمعاينة. بيانات المباراة تنتمي إلى الصفحة الجاري تشغيلها. لا يمكن لإجراء المعاينة الناجح أن يُظهر استمرار التنظيم أو المكونات الإضافية أو الفوترة أو سلوك الموفر المباشر.

تتطلب مربعات الحوار الأصلية وعمليات سلسلة المفاتيح والدرج والمحدث ومواد macOS مضيف Tauri والإمكانيات الصحيحة. من الممكن أن يظل الأمر المسجل غير متاح لعرض الويب ضمن تكوين الإمكانات الخاص به. لفتح الملف، تقوم الصدفة بتسجيل الارتباطات المدعومة ومسارات إعادة التوجيه؛ وهذا وحده لا يثبت أن محررًا معينًا قام باستيراد المحتويات.

فشل الرسومات هو حد آخر. يعد حجم الحاوية غير الصفري والكيانات/الطبقات المرئية والتحديد غير المؤمن وWebGL المدعوم من المتطلبات الأساسية لتفاعلات إطار العرض ذات الصلة. تعتبر الشبكة المعروضة دليلاً على العرض، وليست عملية حفظ ناجحة أو التحقق من CAM. استخدم تشخيص منفذ العرض لقدرة العامل، والمهلة، والسلوك رباعي وجهات النظر.

استعادة التفضيلات ومشاكل العرض

سجل تفضيلات عرض الويب المشترك هو cadcamfun.settings. تتضمن الإعدادات الافتراضية المليمترات، وموضوع النظام، وثلاثة أرقام عشرية، وتفضيل GRBL، وتمكين الأداة، والتسامح 0.01 مم، وتمكين الزجاج. يتم التحقق من صحة الحقول المخزنة بشكل مستقل؛ تتراجع القيم غير الصالحة دون فشل الصدفة. التخزين المحلي الكامل/المحظور يمكن أن يمنع الثبات.

لا يؤدي تغيير وحدات العرض إلى إعادة قياس هندسة CAD المخزنة. يتم نشر تسامح المستند من خلال مساعد إعدادات CAD/المولد/التحقق المشترك. تستخدم بعض القيم المميزة/الدوارة الدرجات بشكل صريح؛ زوايا الرسم تستخدم الراديان. تحقق من العقد الميداني قبل تشخيص عدم التطابق العددي على أنه هندسة فاسدة.

يعتمد سلوك الزجاج على دعم Tauri/macOS. يستخدم التنفيذ Liquid Glass حيثما يكون مدعومًا، وحيويًا على نظام التشغيل macOS الأقدم من خلال البرنامج الإضافي، وخيارًا احتياطيًا غير شفاف عند عدم توفره أو تعطيله. لا تؤدي تغييرات الموضوع/المادة إلى تغيير الشكل الهندسي أو ملكية المشروع أو الأدلة الآلية.

تفضل الإعدادات ذات الصلة أو التحكم في الميزات على مسح كل مساحة تخزين عرض الويب. يمكن أن يحتوي هذا التخزين أيضًا على عمليات تسليم الجلسة/المحرر. لا تعد إعادة تعيين التفضيلات المرئية بمثابة إجراء لإصلاح قاعدة البيانات.

استرداد واجهة المستخدم المنفصلة عن أدلة المعالجة

يعد المشروع الذي تم تحميله وحفظ HTTP الناجح ومسار الأدوات المتحركة وNC الذي تم إنشاؤه بمثابة ملاحظات مختلفة. قبل الاعتماد على نتيجة المعالجة المحفوظة، قم بفحص NC الدقيق، ورسم/مخزون المصدر، وتجميعات الأدوات، ومظروف الماكينة، والمنشور المحدد، وإصدار/مشكلات التحقق لهذه النتيجة.

يحتفظ رمز لقطة CAM بدليل kernel فقط عندما يتطابق نص NC الحالي مع التجزئة الخاصة به. يقوم البرنامج المحمول بكتابة التحقق من تناسق المستند وقد يعيد تقييم طلبات kernel التي تم التقاطها. يمكن أن يؤدي تحرير NC أو تغيير المخزون إلى إبطال الأدلة السابقة. يمكن لإعادة فتح NC العادي تحليل البرنامج دون استعادة نفس دليل التصنيع.

بعد حدوث عطل أو انقطاع في الحفظ، قم أولاً بفحص الصف المحفوظ وإصداراته. يسجل نموذج حفظ CAM البرنامج السابق قبل التحديث، بينما يسجل الحفظ اليدوي لتفاصيل مسار الأدوات المراجعة المحدثة. تاريخ المشروع منفصل مرة أخرى. يستخدم مقارنة التاريخ لاختيار مسار الاسترداد.

لا تقم بتحويل الشيك الذي لم يتم حله إلى عملية مقبولة بسبب استرداد واجهة المستخدم. أعد تشغيل التحقق المناسب مقابل الموارد الفعلية وNC؛ ليس لمسبار صحة التطبيق أي سلطة على سلامة الماكينة.

فرز فشل واحد في وقت واحد

  1. سجل وضع التشغيل وإصدارات العملية والمنافذ ودليل البيانات الفعلي.
  2. التحقق من الصحة، ثم قراءة واحدة محمية. اتصال منفصل عن الترخيص.
  3. افحص أخطاء بدء التشغيل/الترحيل المنظمة قبل إعادة تعيين أو حذف أي شيء.
  4. إعادة إنتاج مقابل عملية مصدر معزولة عند الاشتباه في وجود مشكلة مترجمة/أصلية.
  5. أصلح السبب الذي تم تحديده، وأعد تشغيل العملية المناسبة، وقم بتحديث متغيرات نقطة النهاية التي لا معنى لها.
  6. أعد فتح المستند/البرنامج المحفوظ وافحص الحالة المستمرة والإصدارات والصادرات والتحقق الحالي.

مراسي التنفيذ هي app/App.tsx, app/sidecar.ts, src-tauri/src/{sidecar,commands,lib}.rsالسايدكار main.ts/config.ts/shutdown.ts، ودورة حياة قاعدة البيانات. التنمية المحلية تفاصيل تكوين الإمدادات؛ الاقتران رفيق يعالج حدود الشبكة المنفصلة.

قائمة التحقق من بدء التشغيل

  1. هل يوجد ثنائي Sidecar لهذا النظام الأساسي (src-tauri/binaries/sidecar-<target triple>)? desktop:dev يبنيه؛ tauri:dev قد يستخدم كعب.
  2. هل يتم تنظيم الهجرات في src-tauri/resources/migrations? bun run build:sidecar أو bun scripts/build.ts --only=resources يعيد لهم.
  3. هل طباعة السايدكار ready خلال 60 ثانية؟ ابحث عن error سطر على stdout وسجلات JSON على stderr في دليل السجل (get_logs_dir).
  4. هل تم إعادة التشغيل؟ يُسمح بإعادة التشغيل التلقائي مرة واحدة فقط؛ الفشل الثاني يترك الحالة عند failed.
  5. يفعل GET /api/health الإجابة على المنفذ المبلغ عنها؟ إذا حدث ذلك ولكن المسارات المحمية ترجع 401، فإن الرمز المميز ينتمي إلى عملية تشغيل مختلفة.
  6. هل دليل البيانات قابل للكتابة وهل ملف قاعدة البيانات غير مفتوح بواسطة عملية أخرى ذات عمليات ترحيل غير متوافقة؟
الموقتقيمةمالك
مصافحة جاهزة60 ثانية لكل محاولةمشرف Rust
إعادة التشغيل التلقائي1مشرف Rust
نقطة النهاية تنتظر125 ث (مصافحتان + 5 ث)get_sidecar_endpoint
ميزانية استرداد Webview150 ثانية، 30 ثانية لكل محاولة، 750 مللي ثانية بين المحاولاتعرض ويب
نعمة الاغلاق2 ثانية بعد خط إيقاف التشغيل، ثم يتم جني العملية (حتى 5 ثانية)مشرف Rust

قراءة السجلات

سجلات Sidecar هي خطوط JSON على stderr، ويتم الاحتفاظ بها منفصلة عن مصافحة stdout. يتم استبدال الأسطر التي يمكن أن تحتوي على بيانات الاعتماد بـ [redacted: line may contain credentials] قبل كتابتها، لذلك من المتوقع وجود سطر منقح في السجل، وليس الفساد. إذا كانت المصافحة نفسها تحمل مثل هذا الخط، فإن خطأ بدء التشغيل المُبلغ عنه هو علامة التنقيح؛ اقرأ خطوط stderr المحيطة بالسياق.

دليل السجل خاص بالنظام الأساسي. احصل عليه من get_logs_dir الأمر بدلاً من تخمين المسار، وافتحه باستخدام open_path، الذي يقبل دليل سجل التطبيق.

رسائل الخطأ وماذا تعني

رسالةمن أين يأتيما يجب القيام به
قائمة انتظار الشبكة 3D ممتلئة. تقليل تعقيد المشهد.قائمة انتظار ربط منفذ العرض (128 وظيفة)إخفاء الأجسام أو تبسيطها؛ تم مسح قائمة الانتظار
3انتهت مهلة الربط D. تقليل تعقيد المشهد.تجاوزت مهمة الربط الواحدة 15 ثانيةبسّط المادة الصلبة؛ تم إعادة تشغيل العامل
لم يتم تكوين أي مزود AI. أضف مفتاح API في إعدادات الذكاء الاصطناعي.تيار مساعد, code: "config"إضافة مفتاح موفر؛ لا شيء آخر خطأ
لا يتطابق دفتر يومية الترحيل القديم مع عمليات الترحيل المحليةترقية قاعدة البيانات عند بدء التشغيلاحتفظ بدليل البيانات؛ قم بتثبيت الإصدار المطابق
طلب السحب غير مفتوحدمج أو إغلاق العلاقات العامة المدمجة/المغلقةقم بتحديث قائمة العلاقات العامة
مراجعة غير معروفة <rev>استعادة التاريخ أو تسجيل الدخول بمراجعة سيئةاختر مراجعة من السجل
Plugin <id> may not use "<capability>": it was not granted at install timeسياق البرنامج المساعدأعد تثبيت الإمكانية ومنحها، أو قم بتغيير المكون الإضافي
لا يمكن للمحاور الدوارة للآلة أن تصل إلى مستوى العمل هذا ضمن حدودهاالآلات المفهرسةاستخدم إعدادًا آخر لهذا الوجه

في 3د

حيث يحدث فشل سطح المكتب اسحب إلى المدار · قم بالتمرير للتكبير · اسحب بزر الماوس الأيمن للتحريك
Processes at run time. The Tauri shell spawns the sidecar and waits for its {”event”:”ready”,”port”:N} line on stdout (sidecar.rs); the webview then talks HTTP to 127.0.0.1 on that port with the bearer token. The sidecar owns the SQLite database, the embedded nikcli AI host (CADCAMFUN_AI_HOST=nikcli, the default) and plugins; the mobile app reaches it through companion pairing.