الوثائق
بنيان
حدود التنفيذ وتدفق الطلب والاستمرارية ونقاط الامتداد عبر سطح المكتب والسايدكار والرفيق المحمول وموقع التوثيق.
مترجم تلقائيًا من الإنجليزية. عرض الأصل بالإنجليزية
العمليات وحدود الثقة
تمتلك Tauri تكامل النوافذ الأصلي وأوامر بيانات الاعتماد الآمنة والقوائم والتحديثات ودورة حياة السايدكار. يقوم عرض الويب الخاص به بتشغيل تطبيق SolidJS. يفتح Bun Sidecar المترجم قاعدة البيانات ويخدم HTTP 127.0.0.1 مع منفذ مخصص لنظام التشغيل. الواجهة الأمامية لا تفتح SQLite.
نقطة دخول السايدكار هي apps/sidecar/src/main.ts. يقوم بإنشاء خادم HTTP، وبناء طبقات التطبيق، والتحقيقات /api/health، ثم يطبع حدث جاهزية JSON الذي يحتوي على المنفذ المختار. يتم توجيه السجلات إلى stderr بحيث يظل stdout متاحًا لبروتوكول Shell.
يصل الرفيق المحمول إلى بوابة سطح المكتب المقترنة بشكل صريح. تكون بيانات اعتماد النقل والجهاز الأصلية الخاصة به منفصلة عن اتصال الاسترجاع الخاص بعرض الويب لسطح المكتب. يعد عامل التوثيق عملية نشر منفصلة وليس له أي اتصال ضمني بسطح مكتب المستخدم.
تبعيات المكتبة
@cadcamfun/core يحتوي على CAD، والرسم، وحساب CAM. يعتمد ذلك على تأثير المخططات وتكامل الحدود؛ الحلقات الخوارزمية هي TypeScript عادية. @cadcamfun/api يستورد الأنواع والمخططات الأساسية للإعلان عن مدخلات ومخرجات وأخطاء وتدفقات HTTP.
@cadcamfun/db يمتلك خدمة قاعدة بيانات التطبيق والمخطط ومنطق الترحيل. يجمعها Sidecar مع الحزم الأساسية وAPI وAI وSDK وVCS وحزم سير العمل. تستخدم مستودعاتها خدمة قاعدة البيانات؛ تفويض المعالجات إلى المستودعات والخدمات.
يقوم سطح المكتب باستيراد كليهما @cadcamfun/api و @cadcamfun/core. ويستخدم واجهة برمجة التطبيقات في وقت التشغيل من خلال عميل Effect ويستخدم الهندسة الأساسية في ميزات CAD/CAM وإطار العرض. يعتمد الهاتف المحمول على حزمة API ويغلف الطلبات المصاحبة في عميله. يكتشف المكون الإضافي nikcli المستقل كتالوج إجراءات التطبيق قيد التشغيل عبر HTTP بدلاً من استيراد تطبيقات الواجهة الخلفية.
دورة حياة طلب HTTP
- يحصل عرض الويب على اتصال السايدكار من الغلاف الأصلي.
apps/desktop/src/app/client.tsينشئ عميل Effect HttpApi بتفويض لحامله ورمز مميز اختياري لجلسة الحساب.packages/api/src/client.tsيوفر عميل عقد قابل لإعادة الاستخدام للمستهلكين الآخرين.apps/sidecar/src/layers.tsيجمعServedApiوالمعالجات والترخيص وCORS وطبقات الخدمة المشتركة.- يقوم المعالج بالتحقق من صحة مدخلات العقد، وحل الخدمات، وإجراء العمليات الحسابية أو المثابرة، وإرجاع النجاح المعلن أو تمثيل الخطأ. تحافظ نقاط النهاية المتدفقة على بروتوكول الدفق المُعلن عنه.
يسمح CORS بأصول إنتاج Tauri وأصول استرجاع HTTP المستخدمة في التطوير. ولا يحل محل الترخيص. تكشف واجهة برمجة التطبيقات (API) عن العديد من أنماط مغلفات الاستجابة؛ يجب على المستهلكين اتباع مخطط كل نقطة نهاية بدلاً من افتراض أن كل استجابة لها نفس الشكل.
دورة حياة الخدمة والتخزين
تحصل طبقات التأثير على قاعدة البيانات والخدمات المشتركة ضمن نطاق التطبيق. تقوم طبقة قاعدة البيانات بإنشاء الدليل الأصلي الخاص بها، وتمكين WAL والمفاتيح الخارجية، وتطبيق عمليات الترحيل بشكل اختياري، وتغليف فشل الاستعلام باسم العملية. تحاول عملية الإنهاء اقتطاع نقطة تفتيش WAL وإغلاق مقبض SQLite.
ال DatabaseLive طبقة تختار dataDir/cadcamfun.db. يجب توفير مجلد الترحيل لتطبيق عمليات الترحيل عند بدء التشغيل. تتم معالجة بيانات اعتماد الذكاء الاصطناعي وحالة البرنامج المساعد وكائنات VCS وتنفيذ سير العمل وتخزين الملفات من خلال واجهات الخدمة الخاصة بها؛ يتم وصف تفاصيل التخزين في صفحات الوحدة النمطية الخاصة بهم.
الاستوديو المحلي في packages/web/script/studio-server.ts هي عملية Bun إضافية. فهو يفتح قاعدة بيانات التطبيق الموجودة والتي تم تكوينها مباشرة ويقدم بيانات عامة موثقة على منفذ الاسترجاع 4396. تعد جلسات وكيل التطوير وملفات تعريف الارتباط الخاصة بها مستقلة عن اتصال Tauri Sidecar.
يتم نشر أحداث المشروع المباشرة (طلبات السحب، والالتزامات، وعمليات سير العمل، ومراحل جلسة العمل المساعدة) من خلال خدمة الأحداث قيد التشغيل. يتلقى المشترك الجديد أولاً ما يصل إلى 20 من الأحداث المطابقة الأخيرة ثم الأحداث المباشرة، والتي تتم تصفيتها اختياريًا حسب نوع المشروع والحدث (apps/sidecar/src/services/live-events.ts).
حدود الامتداد
هناك نوعان من تكاملات البرنامج المساعد. يحدد البرنامج المساعد للتطبيق SDK البيانات والإمكانيات والتنشيط وعقود المضيف. يعرض جسر nikcli إجراءات CAD/CAM المسجلة لمساعد خارجي. يعد تثبيت مكون إضافي من خلال مسار تسجيل HTTP عملية منفصلة عن تنشيط الوحدة النمطية في مضيف وقت التشغيل.
تحليل سير العمل وجدولة العيش في packages/workflow. يتم تسجيل الخطوات المدعومة بالخدمة بواسطة طبقات السايدكار، بينما يمكن تشغيل خطوات المشروع وCAM النقية باستخدام المدخلات المتوفرة. يحسب VCS تجزئات الكائنات، والفرق، والدمج، وعمليات نقل GitHub في مكتبته؛ تربط خدمات Sidecar هذه العمليات باستمرارية المشروع.
يقوم مساعد توثيق الويب باسترداد الوثائق المقدمة ويمكنه نشر عناصر الدليل عند تكوين التخزين. يجيب على أسئلة التوثيق. ولا يرث الوصول إلى المشروع المحلي لتطبيق CAD/CAM.
حدود الاتصال وبيانات الاعتماد
| بيانات الاعتماد | غاية | الحدود |
|---|---|---|
| رمز حامل التطبيق | قبول التطبيق المحلي لمسارات السايدكار المحمية. | تم إنشاؤها/توفيرها لإطلاق السايدكار؛ يحصل عرض الويب عليه من خلال الاتصال الأصلي. |
x-session-token | حدد الحساب الذي يعمل خلف الطلب المقبول. | تعود الجلسة الغائبة أو غير الصالحة أو منتهية الصلاحية أو المعزولة إلى ملف التعريف المحلي. |
| رمز الجهاز المرافق | السماح بهاتف مقترن بشكل فردي بمسارات البوابة. | تم التحقق منه بواسطة بوابة HTTPS المنفصلة وقائمة الطرق/المسار المسموح بها. |
| رمز جسر الذكاء الاصطناعي | كشف الإجراءات المسموح بها لمشروع واحد لوكيل خارجي. | يقبل نقطتي نهاية جسر الإجراء ويفرض نطاق القراءة أو القراءة/الكتابة. |
| مفتاح واجهة برمجة التطبيقات للموفر | مصادقة المكالمات النموذجية الصادرة. | تتم إدارتها بواسطة خدمة بيانات الاعتماد السايدكار؛ ليس بديلا عن ترخيص التطبيق. |
| رمز جيثب | تنفيذ عملية المرآة المطلوبة. | المقدمة لتلك المكالمة من خلال x-github-token; لا مشروع بيانات لقطة. |
التفويض متعدد الطبقات. إن تمرير البرنامج الوسيط لحامله لا يثبت ملكية رسم أو مشروع معين؛ تقوم المعالجات والمستودعات بفحص تلك الموارد. لا يؤدي الاقتران بالمثل إلى تحويل الهاتف إلى عميل سايدكار غير مقيد. راجع نقطة النهاية المحددة والسياسة المصاحبة قبل اختيار بيانات الاعتماد.
محول الترخيص هو apps/sidecar/src/http/authorization.ts. قرارات الرفيق والجسر تعيش في خدماتها الخاصة. يتيح الاحتفاظ بهذه المسارات منفصلة إبطال الجهاز المفقود أو رمز التكامل دون استبدال سر موفر الذكاء الاصطناعي.
عزل الفشل
تنتمي حالات الفشل قبل حدث الاستعداد إلى التهيئة السايدكار: التكوين، أو ترقية قاعدة البيانات، أو إنشاء الخدمة، أو بدء تشغيل HTTP. قد تكون حالات الفشل بعد الاستعداد خاصة بالموفر أو عملية نظام الملفات أو نقطة النهاية أو جلسة العميل. تختلف دورة حياة الصدفة عن ميزانية إعادة محاولة الاتصال في عرض الويب؛ قم بفحص كليهما عند إعادة التشغيل لتغيير منفذ الاستماع.
لا يؤدي بالضرورة دفق AI المنفصل إلى إيقاف المحادثة من جانب الخادم. قم باستعادة حالة الجلسة قبل إعادة إرسال تعليمات التحرير. لا يؤدي سير العمل الفاشل إلى التراجع عن الالتزام الذي تم تشغيله. الدفع عن بعد غير الناجح لا يمحو التاريخ المحلي. تمنع هذه الفروق التعامل مع فشل الشبكة كما لو أن العملية المستمرة لم تحدث أبدًا.
بالنسبة لطلب واجهة برمجة التطبيقات الفاشل، سجل أسلوبه ومساره وحالته ومعرف نقطة النهاية والمعرفات غير السرية ذات الصلة. قارن الجري /api/openapi.json مع لقطة عقد التوثيق عندما تختلف إصدارات العميل والخادم. تجنب استكشاف الأخطاء وإصلاحها باستخدام رمز مميز من إطلاق سايدكار سابق.
لقطة معمارية حسب مسار المصدر
| منطقة | أين يعيش | ماذا تقرأ أولا |
|---|---|---|
| غلاف سطح المكتب (Rust) | apps/desktop/src-tauri/src/ | sidecar.rs (مشرف)، commands.rs, updater.rs, menu.rs, tray.rs, secrets.rs |
| واجهة مستخدم سطح المكتب | apps/desktop/src/ | app/, features/ (cAD، Cam، AI، Chat، Projects، Toolpaths، Plugins، ...)، viewport/, shared/ |
| دخول السايدكار | apps/sidecar/src/main.ts | مصافحة جاهزة، طبقات في layers.ts، التكوين في config.ts |
| معالجات HTTP | apps/sidecar/src/http/ | ملف واحد لكل مجموعة، على سبيل المثال. toolpath-generator.ts, ai.ts, kv.ts |
| الخدمات والمستودعات | apps/sidecar/src/services/, repos/ | cam-program.ts, companion.ts, auth-tokens.ts, storage.ts |
| عقد | packages/api/src/ | index.ts, groups/, errors.ts, client.ts |
| نواة | packages/core/src/ | cad/history.ts, cad/sketch.ts, cam/kernel/, cam/post/ |
| مساعد | packages/ai/src/ | actions/, tools/, nikcli/, prompts/ |
| تخزين | packages/db/src/ | index.ts, upgrade.ts, schema.ts |
| تاريخ | packages/vcs/, packages/workflow/ | واجهة برمجة تطبيقات المستودع، والدمج، ومخطط سير العمل |
| رفيق | apps/mobile/ | app/ الطرق, lib/ الاتصال والاقتران |
التتبع: من الإطلاق إلى الطلب الأول
- يبدأ تاوري ويدخل المشرف
sidecar.rsيولد رمزا عشوائيا. - يولد
sidecar-<triple>معCADCAMFUN_TOKEN,CADCAMFUN_DATA_DIRوCADCAMFUN_MIGRATIONS_DIR. - يقرأ السايدكار تكوينه، ويفتح SQLite (WAL، والمفاتيح الخارجية)، وينسخ احتياطيًا ويرحل إذا لزم الأمر، ويبني طبقات الخدمة الخاصة به.
- إنه يربط
127.0.0.1على منفذ سريع الزوال ويطبع سطر JSON جاهز على stdout. ينتظر المشرف ما يصل إلى 60 ثانية لذلك. - المشرف يصدر
sidecar-status{ state: "ready", port }; مكالمات عرض الويبget_sidecar_endpointل{ baseUrl, token }. - يتم بناء عرض الويب
ApiClient.layer({ baseUrl, token })ويبدأ تحميل المشاريع.
إذا خرجت السايدكار، يقوم المشرف بإعادة تشغيلها مرة واحدة ويعلن عن المنفذ الجديد؛ الفشل الثاني يترك الحالة عند failed. عند الخروج، يكتب المشرف سطر إيقاف التشغيل، وينتظر 2 ثانية، ثم يحصد العملية؛ تقوم طبقة قاعدة البيانات بنقاط فحص WAL عند إغلاق نطاقها.
التتبع: طلب تصنيع
- تلتقط مساحة عمل CAM عناصر الرسم والمخزون والمكالمات
POST /api/toolpaths/manufacture. - تقبل البرمجيات الوسيطة للحامل الطلب؛ يتم فك تشفير الجسم ضد
CamKernelRequest. runKernelRequestفيservices/cam-program.tsالمكالماتcam.kernel.jobOfSnapshot; تصبح مشكلات الإعداد 400.cam.kernel.runJobيخطط العمليات أو يتابعها، ويحسب بيانات القطع، وينشئ مسارات الأدوات، وينشر NC لهجة الجهاز ويعيد تشغيلها على مخزون فوكسل لتقييم المطالبات.- يتم فك تشفير النتيجة ضد
CamKernelResultوعاد. لا يتم تخزين أي شيء حتى يقوم العميل بحفظ مسار الأدوات باستخدام مستند محمول، وعند هذه النقطة يقوم السايدكار بإعادة تشغيل الطلب الذي تم التقاطه ومقارنته.