الوثائق
التنمية المحلية
اختر عملية API ودليل البيانات ووضع العميل بشكل صريح.
مترجم تلقائيًا من الإنجليزية. عرض الأصل بالإنجليزية
عمليات التطوير
تعمل جلسة تطوير سطح المكتب الكاملة على تشغيل Rust Shell وBun Sidecar وVite. توفر القشرة ميزات أصلية وتشرف على السايدكار. يوفر Vite أصول عرض الويب والتحديث السريع. bun run desktop:dev يقوم بإعداد الموارد الثنائية وموارد الترحيل قبل بدء تلك العمليات.
للعمل بشكل أسرع على الشاشة، قم بتشغيل سطح المكتب dev البرنامج النصي وحده. App.tsx يحدد واجهة برمجة تطبيقات معاينة الذاكرة فقط خارج Tauri وفقط عندما VITE_SIDECAR_URL غائب. من المتوقع أن تؤدي حالات فشل المعاينة لمجموعات API غير المدعومة إلى إرجاع 501. استخدم سايدكار مباشرة للاستمرارية والترخيص وتدفق الذكاء الاصطناعي وخدمات الخادم.
CADCAMFUN_TOKEN=local-development-token CADCAMFUN_DATA_DIR=/tmp/cadcamfun-development CADCAMFUN_MIGRATIONS_DIR="$PWD/packages/db/drizzle" bun --no-env-file apps/sidecar/src/main.ts الرمز المميز أعلاه هو مثال لعملية تطوير محلية معزولة. اختر القيمة الخاصة بك. أبقِ stdin مفتوحًا: يؤدي إغلاقه إلى إيقاف السايدكار. يقوم الخادم بطباعة JSON واحد ready الحدث مع منفذ سريع الزوال بعد /api/health يستجيب؛ تذهب السجلات إلى stderr.
VITE_SIDECAR_URL=http://127.0.0.1:43111 VITE_SIDECAR_TOKEN=local-development-token bun run --filter @cadcamfun/desktop dev استبدل المنفذ 43111 بمنفذ الحدث الجاهز واستخدم الرمز المميز المتوفر لتلك السايدكار قبل التشغيل. يستخدم Vite المنفذ 1420 مع تحديد منفذ صارم، ويطابق عنوان URL الخاص بتطوير Tauri. يسمح السايدكار بأصول CORS للمتصفح على مضيف/استرجاع HTTP المحلي وأصول Tauri المدعومة؛ لا يزال يتطلب الترخيص المناسب للطرق المحمية.
أدلة البيانات والترحيلات
تفتح السايدكار <CADCAMFUN_DATA_DIR>/cadcamfun.db. يختار Tauri دليل بيانات التطبيق الخاص به ويمرره إلى الطفل. تستخدم العملية اليدوية الدليل الذي تقدمه. تكون قواعد البيانات هذه مستقلة حتى عندما يكون اسم الملف الخاص بها متطابقًا.
يقرأ البرنامج النصي لترحيل CLI DATABASE_URL وغير ذلك من الاستخدامات ./data/cadcamfun.db نسبة إلى دليل العمل الخاص به. جذر db:migrate يعمل في الداخل packages/db. اختر عنوان URL مطلقًا للملف لعمليات CLI المقصودة؛ لا تستنتج الهدف من اسم ملف نسبي يظهر في السجل.
DATABASE_URL=file:/tmp/cadcamfun-cli/cadcamfun.db bun run db:migrate تنشأ تغييرات المخطط في packages/db/src/schema.ts. يجري bun run db:generate، قم بمراجعة الترحيل الذي تم إنشاؤه، وقم بتطبيقه على قاعدة بيانات معزولة أولاً. يستخدم السايدكار CADCAMFUN_MIGRATIONS_DIR عند تقديمها؛ تقوم الإصدارات المعبأة بتجهيز الدليل الذي تم إنشاؤه كمورد.
تعمل طبقة قاعدة البيانات على تمكين WAL والمفاتيح الخارجية. عندما يحتاج ملف موجود إلى الترحيل، يقوم مسار الترقية بإنشاء نسخة احتياطية بجانبه أسفل backups/ ويحتفظ بأحدث خمس نسخ احتياطية تلقائية مطابقة. لا يؤدي الإنشاء الأول والمخطط غير المتغير وقواعد البيانات الموجودة في الذاكرة إلى إنشاء نسخة احتياطية للترقية. الحفاظ على البيانات بشكل مستقل قبل عمليات الاسترداد اليدوية.
الشيكات المستهدفة
bun run --filter @cadcamfun/core typecheck
bun test packages/core
bun run --filter @cadcamfun/desktop typecheck
bun test apps/desktop/src/viewport
bun run --cwd packages/web check
bun run --cwd packages/web build حدد الشيكات التي تم تغييرها بواسطة الحدود. تحتاج التغييرات الهندسية البحتة إلى تأكيدات هندسية؛ تحتاج تغييرات عقد واجهة برمجة التطبيقات (API) إلى فحوصات العميل التي تم إنشاؤها والمعالجات المتأثرة؛ تحتاج تغييرات الثبات إلى اختبارات المستودع والهجرة؛ تحتاج تغييرات تفاعل واجهة المستخدم إلى المكون ذي الصلة وتدفق وقت التشغيل. الجذر test يتضمن البرنامج النصي packages, apps، و scripts.
يتم تشغيل عمليات فحص الصدفة الأصلية من apps/desktop/src-tauri مع cargo clippy --all-targets -- -D warnings و cargo test. قم بإعداد السايدكار المستهدفة وعمليات الترحيل أولاً، نظرًا لأن سياق بناء Tauri يتضمن تلك الموارد. يمكن أن تتطلب اختبارات تكامل نظام التشغيل وجود سطح مكتب أصلي وسلسلة مفاتيح.
تكوين وقت التشغيل
apps/sidecar/src/config.ts يمتلك طبقة تكوين السايدكار. المدخلات المطلوبة هي CADCAMFUN_TOKEN و CADCAMFUN_DATA_DIR. CADCAMFUN_MIGRATIONS_DIR يختار موارد الهجرة. مضيف الذكاء الاصطناعي الافتراضي هو nikcli; CADCAMFUN_AI_HOST=direct يختار المكالمات المباشرة، و CADCAMFUN_AI_OFFLINE يدعم التشغيل دون الاتصال بالإنترنت/الاختبار.
يتضمن التكوين الاختياري عنوان URL للتطبيق وروابط مصادقة التطوير وبيانات اعتماد Stripe ومعرفات الأسعار وإعدادات المسؤول/cron، و OTEL_EXPORTER_OTLP_ENDPOINT. الفوترة غير متاحة بدون تكوين الموفر ذي الصلة؛ تم إيقاف تصدير القياس عن بعد بدون نقطة نهاية المجمع الخاصة به. قم بتوفير المدخلات اللازمة لتدفقك فقط.
متغيرات نقطة نهاية المتصفح هي تكوين Vite، وليس تكوين Sidecar. يحتوي الاقتران المصاحب على رمز مميز وعنوان HTTPS مختلفين. رمز جسر الإجراء المستقل له نطاقه الخاص وعمره الخاص. لا تستبدل بيانات الاعتماد هذه ببعضها البعض.
استخدم تكوين العملية الصريحة أو إعدادات التطبيق. يقوم أمر العينة السايدكار بتعطيل تحميل ملف بيئة Bun. لا تقم مطلقًا بطباعة الرموز المميزة أو مفاتيح النماذج أو روابط الاقتران أو توقيع المواد في السجلات أو أمثلة الوثائق.
التأثير وملكية الموارد
تأثير دبابيس المستودع على 4.0.0-rc.112. استخدام الخدمات Context.Service، يتم توفير التطبيقات من خلال الطبقات، وترجع العمليات التأثيرات المكتوبة. استخدم المثبت effect/ai-docs/src الوثائق عند تغيير واجهة برمجة التطبيقات هذه، بما في ذلك وحدات HTTP غير المستقرة.
فك تشفير المدخلات الخارجية عند الحدود. قم بتعيين الاستثناءات الأجنبية في الأخطاء المكتوبة، واحتفظ بعلامات الخطأ الثابتة، واسمح للطبقة ذات النطاق الخاص بمقابض قاعدة البيانات والعاملين والتدفقات وموارد الخادم. يعالج تدفق إيقاف التشغيل الخاص بالسايدكار حدث إيقاف التشغيل الأصلي، وإغلاق stdin، وانقطاع وقت التشغيل؛ السجلات وstdout البروتوكول لها وجهات مختلفة.
تظل حسابات CAD/CAM الأساسية وظائف عادية في المسارات الحسابية الساخنة. لا يتطلب التحقق من صحة الالتفاف عند الحدود وضع كل عملية هندسية داخل التأثير. استخدم اصطلاحات وحدة الهندسة الأساسية وقم بإجراء تحويلات العرض/التصدير على الحافة المناسبة. زوايا الرسم تستخدم الراديان؛ تستخدم بعض معلمات الميزات وقيم المحور الدوار CAM الدرجات بشكل صريح.
استكشاف أخطاء بدء التشغيل وإصلاحها
- ميناء Vite مشغول: المنفذ الحر 1420 أو قم بإيقاف خادم التطوير الحالي؛ لا يقوم وضع المنفذ الصارم باختيار منفذ آخر بصمت.
- يستمر التمهيد في إعادة المحاولة: افحص مخرجات السايدكار الجاهزة/الخطأ ومسار الترحيل. يقوم التطبيق بإعادة حل نقطة النهاية بينما تبقى ميزانية الاتصال الخاصة به.
- يخرج الخادم على الفور: تحقق من التكوين المطلوب وما إذا كانت عملية الإطلاق قد أغلقت stdin.
- المشاريع المفقودة: تأكد من دليل البيانات ونقطة نهاية واجهة برمجة التطبيقات (API) وما إذا كان التطبيق يستخدم العميل المزيف.
- 401 الردود: تحقق من أن العميل يستخدم الرمز المميز للعملية الحالية بدلاً من الإطلاق السابق.
- 501 في معاينة المتصفح: استخدم سايدكار حقيقية لمجموعة API تلك.
- فشل بناء السياق الأصلي: قم بتجهيز الموارد ثنائيات السايدكار وموارد الترحيل للهدف الصحيح.
التوثيق والتطوير المصاحب
bun run --cwd packages/web start يدير أسترو وحده. bun run --cwd packages/web dev يبدأ تشغيل Astro بالإضافة إلى واجهة برمجة تطبيقات Studio المحلية. يتحقق فحص الوثائق من صحة فهرس المسار؛ يتحقق البناء من صحة تجميع Astro والعرض المسبق.
لنظام التشغيل iOS، bun run --cwd apps/mobile start يبدأ تشغيل Metro لعميل تطوير مخصص. bun run --cwd apps/mobile ios إنشاء/تشغيل التطبيق الأصلي؛ build تصدير جافا سكريبت فقط. يتطلب التثبيت الأصلي وحدة Swift المحلية ولا يمكن تشغيله في Expo Go.
bun scripts/build.ts --help يسرد خيارات خط أنابيب الإصدار. --only=resources يعيد الهجرات دون إعادة البناء، و --dry-run يطبع الخطة دون كتابة أي شيء.
مرجع تكوين العملية
| عامل | Default/requirement | يستخدم |
|---|---|---|
CADCAMFUN_TOKEN | مطلوب | الرمز المميز للحامل الذي يتم توفيره بواسطة Shell أو مشغل التطوير. |
CADCAMFUN_DATA_DIR | مطلوب | قاعدة بيانات Sidecar وحالة خدمة التطبيق. |
CADCAMFUN_MIGRATIONS_DIR | خياري | مجلد الهجرات التي تم إنشاؤها. تتخطى طبقة قاعدة البيانات عمليات الترحيل في حالة عدم توفير أي مجلد. |
CADCAMFUN_AI_HOST | nikcli | nikcli المضيف المضمن أو direct مكالمات الذكاء الاصطناعي. |
CADCAMFUN_AI_OFFLINE | خطأ شنيع | تشغيل غير متصل بالإنترنت/اختبار الذكاء الاصطناعي؛ ليس نموذجا بديلا محليا. |
CADCAMFUN_AI_MINIMAX_BASE_URL | غير محدد | تجاوز نقطة نهاية MiniMax الاختيارية للمضيف المضمن. |
CADCAMFUN_APP_URL | غير محدد | أصل التطبيق المستخدم في روابط المصادقة. |
CADCAMFUN_DEBUG_LINKS | خطأ شنيع | يمكن أن تؤدي استجابات مصادقة التطوير إلى كشف روابط إعادة التعيين/السحر. |
OTEL_EXPORTER_OTLP_ENDPOINT | غير محدد | تمكين تصدير القياس عن بعد عند تكوينه. |
VITE_SIDECAR_URL, VITE_SIDECAR_TOKEN | غير محدد | اتصال عرض الويب للمتصفح؛ كلاهما مطلوب لسايدكار حقيقية. |
DATABASE_URL | الافتراضي الخاص بـ CLI | هدف أداة ترحيل/إنشاء قاعدة البيانات، بشكل مستقل عن تكوين السايدكار. |
يتم فك تشفير المدخلات المنطقية عن طريق تكوين التأثير، وليس عن طريق صدق السلسلة العشوائية. استخدم قيم صواب/خطأ صريحة. فشل حرفي مضيف AI غير معروف في فك التشفير. تكوين العرض قبل إنشاء العملية؛ لا يؤدي تغيير متغير المحطة الأصل إلى تحديث السايدكار قيد التشغيل بالفعل.
استخدم Studio مقابل قاعدة بيانات صريحة
تستمع واجهة برمجة تطبيقات Studio المحلية إلى منفذ الاسترجاع 4396. أسبقية مسارها هي CADCAMFUN_DB، ثم DATABASE_URL مع أ file: تمت إزالة البادئة، ثم جذر المستودع data/cadcamfun.db. ويختلف هذا عن مسار دليل عمل CLI الافتراضي لحزمة قاعدة البيانات. فهو يفتح فقط قاعدة بيانات موجودة ولا يقوم بإنشاء/ترحيل واحدة تلقائيًا.
DATABASE_URL=file:/tmp/cadcamfun-studio/cadcamfun.db bun run db:migrate
CADCAMFUN_DB=/tmp/cadcamfun-studio/cadcamfun.db bun run --cwd packages/web dev يقوم الأمر الأول بتهيئة الملف. يبدأ الثاني Studio plus Astro في هذا المسار. لا يحتوي المخطط الجديد المُرحَّل على جلسة مستخدم/كلمة مرور لمجرد وجودها؛ يتطلب تسجيل الدخول إلى الاستوديو حسابًا مناسبًا. تستخدم الطلبات التي تمت مصادقتها ملف تعريف الارتباط لجلسة الاستوديو وترجع 401 بدون جلسة صالحة.
عندما يكون الملف مفقودًا، تقوم Studio API بإرجاع 503 بالمسار المحدد. عند تشغيل Astro بدون عملية الاستوديو المصاحبة، يتم استخدام الوكيل /studio/api لا يمكن للطلبات الوصول إلى المنفذ 4396. يمكن تطوير صفحات التوثيق نفسها باستخدام packages/web start دون بدء الاستوديو.
مراسي التنفيذ: packages/web/script/dev.ts, script/studio-server.ts, astro.config.mjs, packages/db/src/migrate.ts، و apps/sidecar/src/config.ts.
حلقة تطوير قابلة للتكرار
- اختر دليل بيانات السايدكار يمكن التخلص منه ومجلد ترحيل صريح.
- ابدأ تشغيل السايدكار في محطة تفاعلية وقم بتسجيل المنفذ من الحدث الجاهز الخاص به.
- ابدأ تشغيل Vite في محطة طرفية أخرى باستخدام عنوان URL/الرمز المميز المطابق، أو افتح التطبيق الأصلي باستخدام السايدكار الخاضعة للإشراف.
- قم بإعادة إنتاج إجراء واحد وفحص استجابته وحالته المستمرة.
- لإجراء تغييرات على الواجهة الخلفية، أعد تشغيل السايدكار، وقم بتحديث نقطة نهاية المتصفح إذا تغير المنفذ الخاص به، ثم كرر الإجراء.
- قم بإيقاف العملية باستخدام مسار المقاطعة العادي أو مسار إيقاف التشغيل الأصلي حتى يتم الانتهاء من الموارد.
تستنزف السايدكار نطاقات HTTP لفترة وجيزة، ونقاط تفتيش WAL، وتغلق SQLite عند إيقاف التشغيل العادي. يمكن أن يؤدي إنهاء العملية بدون هذا المسار إلى مقاطعة العمل أثناء الرحلة. لا يحل تحرير المصدر محل الملف الثنائي المترجم الذي يشرف عليه Tauri بالفعل؛ قم بإعادة بناء السايدكار عند اختبار السلوك المترجم.
للتحقق من صحة وقت التشغيل المترجم، scripts/smoke-sidecar.ts يمكن تشغيل ملف ثنائي محدد باستخدام دليل رئيسي/بيانات معزول وذكاء اصطناعي غير متصل بالإنترنت. فهو يقيس سلوك الاستعداد/الصحة/العمل ويمارس وظيفة النواة. بدون --binary يقوم أولاً بتجميع ملف تنفيذي مؤقت، لذا خطط لتكلفة البناء؛ ونتيجته منفصلة عن اختبارات مستوى المصدر.
العملية التي تجري فيها
| يأمر | يبدأ | دليل البيانات | قاعدة البيانات |
|---|---|---|---|
bun run desktop:dev | السايدكار المجمعة + نافذة Tauri dev | دليل بيانات التطبيق الذي اختاره Tauri | <dataDir>/cadcamfun.db |
السايدكار اليدوية (bun apps/sidecar/src/main.ts) | Sidecar فقط، على منفذ استرجاع سريع الزوال | CADCAMFUN_DATA_DIR | <dataDir>/cadcamfun.db |
bun run db:migrate | نص الهجرة | — | DATABASE_URL أو packages/db/data/cadcamfun.db |
bun run --filter @cadcamfun/web studio | الاستوديو المحلي | — | CADCAMFUN_DB, DATABASE_URL أو data/cadcamfun.db |
bun run --filter @cadcamfun/web dev | موقع المستندات | — | — |
أربعة إعدادات افتراضية مختلفة لقاعدة البيانات
لا تشترك نقاط الإدخال هذه في المسار الافتراضي. قم بتعيين المسار بشكل صريح عندما تحتاج إلى أداتين للنظر في نفس الملف.
الحلقة الداخلية حسب نوع التغيير
| لقد تغيرت | يجري |
|---|---|
رمز النواة في packages/core | bun test packages/core |
عقد في packages/api | bun run generate, bun run generate:check، اختبارات السايدكار، ثم المستندات generate:api-reference |
| معالج أو خدمة سايدكار | bun test apps/sidecar |
| المخطط | bun run db:generate، قم بتنفيذ مجلد الترحيل الجديد، bun scripts/build.ts --only=resources |
Rust في src-tauri | cargo clippy و cargo test في apps/desktop/src-tauri |
| صفحات المستندات | bun run typecheck و bun run build في packages/web |