الوثائق
رمز المساهمة
تتبع إجراء المستخدم من خلال الوحدات الحقيقية، وتحديث عقده، والتحقق من السلوك الناتج.
مترجم تلقائيًا من الإنجليزية. عرض الأصل بالإنجليزية
تحديد موقع التنفيذ
ابدأ بالسلوك الذي تغيره. لإجراء سطح المكتب، اتبع apps/desktop/src/app/routes.tsx إلى محول الصفحة وشاشة الميزة. حدد موقع الطلب في العميل أو مساعد الميزة، في مخطط نقطة النهاية packages/api، المعالج في apps/sidecar/src/http، والخدمة أو المستودع الموجود أسفله.
لتغيير الشكل الهندسي أو تغيير مخرجات NC، ابدأ في packages/core والاختبارات المجاورة لها. بالنسبة لمشكلة الثبات، قم بفحص استعلام المستودع و packages/db/src/schema.ts. بالنسبة لدورة الحياة الأصلية، أو مربع حوار الملفات، أو سلسلة المفاتيح، أو سلوك المحدث، قم بفحص apps/desktop/src-tauri/src. وهذا يبقي التغيير قريبًا من مسؤوليته الفعلية.
مسؤوليات مساحة العمل
| الوحدة النمطية | مسؤولية |
|---|---|
packages/core | نماذج وخوارزميات CAD/CAM خالصة، ومنشورات، وتحليل البرامج، والتحقق. |
packages/api | المخططات المشتركة وعقود نقطة النهاية والعملاء المُنشأين. |
packages/db | دورة حياة اتصال SQLite ومخطط Drizzle وعمليات الترحيل وترقية النسخ الاحتياطية. |
packages/ai | تكامل النماذج والمضيف المضمن وكتالوج الإجراءات والجلسات وأدوات الذكاء الاصطناعي. |
packages/plugin-sdk, packages/nikcli-plugin | عقد البرنامج المساعد للتطبيق وعميل nikcli action-bridge المستقل. |
packages/vcs, packages/workflow | تاريخ المشروع وتعريفات / تنفيذ سير العمل. |
apps/sidecar | محولات HTTP وتكوين الخدمة والمستودعات والبوابة وتكامل التطبيقات. |
apps/desktop, apps/mobile | واجهة مستخدم سطح المكتب/القشرة الأصلية وعميل iOS المقترن. |
packages/httpapi-codegen, packages/web | إنشاء عميل API وموقع التوثيق/الاستوديو. |
استخدم نقطة الدخول العامة للوحدة عندما تكون متاحة. حافظ على وصول SQLite بعيدًا عن الهندسة الأساسية والعملاء. يجب ألا تتجاوز شاشات الميزات ترخيص السايدكار أو تقوم بتضمين بيانات اعتماد الخادم. يجب أن تقوم التغييرات الشاملة بتحديث كل الحدود المتأثرة بشكل صريح.
تغيير العقود المشتركة عمدا
- تحديد الطلب والاستجابة ومخططات الأخطاء المكتوبة في حزمة العقد.
- تنفيذ المعالج وسلوك الخدمة/المستودع الخاص به، بما في ذلك التحقق من الملكية.
- قم بإعادة إنشاء العملاء وتأكد من أن المخرجات التي تم إنشاؤها حديثة.
- قم بتحديث عملاء سطح المكتب أو المرافق أو البرنامج الإضافي أو العملاء الخارجيين الذين يستخدمون السطح الذي تم تغييره.
- قم بتوثيق المدخلات والمخرجات وسلوك الفشل والحدود التشغيلية المدعومة.
bun run generate
bun run generate:check
bun run --filter @cadcamfun/api typecheck
bun run --filter @cadcamfun/sidecar typecheck العملاء الذين تم إنشاؤهم هم مخرجات منشئ العقد. إصلاح العقد أو المولد عندما تكون أشكالهما خاطئة؛ سيتم فقدان التصحيح المكتوب بخط اليد للمخرجات التي تم إنشاؤها عند التجديد. الحفاظ على دلالات العميل الحالية أو تحديد تأثير التوافق لتغيير متعمد لواجهة برمجة التطبيقات.
اتفاقيات التنفيذ
اكتب التعليمات البرمجية والتعليقات والوثائق باللغة الإنجليزية. اجعل واجهات TypeScript المصدرة صريحة ومستخدمة unknown بالإضافة إلى التحقق من صحة المخطط للقيم غير الموثوق بها. استخدام واردات TypeScript النسبية .ts ملحقات. تستخدم مسافات CAD المليمترات وتستخدم زوايا الرسم الراديان؛ تكريم الميزة ذات القيمة الواضحة والمدخلات الدوارة لـ CAM. تنسيق أرقام NC عند حدود البريد.
يستخدم رمز التأثير واجهات برمجة التطبيقات للخدمة/الطبقة/الخطأ الخاصة بالإصدار المثبت. الخدمات تمتلك تبعيات خارجية؛ طبقات محددة الموارد الخاصة. تجنب إضافة قراءات تكوين العملية المخفية داخل وحدة المجال. حافظ على حسابات الهندسة نقية وعزل عمليات نظام الملفات والشبكة وقاعدة البيانات خلف محولاتها.
لتغيير المخطط، قم بالتعديل schema.tsوإنشاء عملية ترحيل وممارسة الإنشاء الجديد وترقية قاعدة البيانات الموجودة. لتغيير واجهة المستخدم، احتفظ بمحولات المسار صغيرة وضع منطق التفاعل في الميزة ذات الصلة. بالنسبة للعمل الأصلي، احتفظ بالهندسة ومنطق المستودع في السايدكار/الأساسي بدلاً من نقله إلى Rust.
التحقق قبل المراجعة
- قم بإجراء فحص نوعي للحزمة المتأثرة واختبارات ذات معنى للسلوك المتغير.
- لإصلاح الأخطاء، قم بإظهار حالة الفشل والنتيجة المصححة لها.
- بالنسبة للعقود المشتركة، تحقق من العملاء الذين تم إنشاؤهم والمستهلكين المتأثرين.
- من أجل الاستمرارية، تحقق من سلوك الترحيل وسلامة البيانات باستخدام قواعد البيانات المعزولة.
- بالنسبة للتفاعلات الأصلية أو المقدمة، قم بممارسة وقت التشغيل المستهدف الفعلي بالإضافة إلى الاختبارات المنطقية.
- قم بتحديث وثائق المستخدم/المطور وشرح القيود التشغيلية المتبقية.
الشيكات الجذرية هي bun run typecheck و bun run test. لدى CI أيضًا وظائف خاصة بRust والرفيق. الإبلاغ عن ما تم تشغيله وأي حالات فشل أو تغطية وقت التشغيل غير المتوفرة؛ التمييز بين سير العمل الذي تم تكوينه والتشغيل الناجح.
إبقاء التغييرات قابلة للمراجعة
احتفظ بالعناصر التي تم إنشاؤها وتحديثات التبعية وتغييرات السلوك وتغييرات التوثيق التي يمكن تتبعها لنفس الغرض الملموس. تجنب إعادة تنسيق الوحدات غير ذات الصلة. احتفظ بعمل المستخدم الحالي واستخدم أدلة البيانات التي يمكن التخلص منها لإجراء التجارب.
لا تقم بتضمين الرموز المميزة للإطلاق، أو روابط إقران الجهاز، أو مفاتيح الطراز، أو محتويات قاعدة البيانات، أو بيانات اعتماد التوقيع في التصحيحات أو لقطات الشاشة. يجب أن تستخدم الأمثلة العناصر النائبة. يمكن لمقدم خدمة محلي أو مستهزئ التحقق من صحة التدفق الحتمي؛ وثيقة حيث يظل الموفر الحقيقي أو التكامل الأصلي ضروريًا.
الشيكات مفيدة
bun run --filter @cadcamfun/core typecheck
bun test packages/core
bun test apps/sidecar/test
bun test apps/desktop/src
bun run --cwd apps/mobile typecheck
bun run --cwd apps/mobile test
bun run --cwd packages/web check
bun run --cwd packages/web build استخدامات التغليف الأصلية scripts/build.ts; يستخدم --help أو --dry-run لتفقد مراحله اختبارات الوحدة منفصلة عن مرحلة فحص النوع الخاصة بخط أنابيب البناء. راجع دليل الإصدار للتوقيع والبنية المستهدفة والتحقق من صحة المحدث.
مثال: تغيير التحقق من صحة المشروع
لنفترض أن مشروع إنشاء/تحديث تغييرات القاعدة. مخطط الطلب هو packages/api/src/projects.ts، محول HTTP هو apps/sidecar/src/http/projects.ts، والمثابرة تنفذ بواسطة ProjectRepo. المخطط يجعل حاليا name اختياري، بينما يحتاجه المعالجون للإنشاء والتحديث. قم بفحص كلا المستويين قبل الوعد بنجاح الطلب الصالح للمخطط.
- حدد حالات الإدخال المقصودة: الاسم المفقود، والنوع غير الصالح، والنص الفارغ، والمؤسسة التي يمكن الوصول إليها، والمؤسسة التي لا يمكن الوصول إليها.
- حدد الشرط الذي يعد خطأ في فك التشفير وأي شرط يعد بمثابة التحقق من صحة الأعمال. الحفاظ على الحالة الموثقة/شكل الخطأ لنقطة النهاية.
- أضف تأكيدات على حدود المعالج/الخدمة ذات الصلة وتحقق من أن المتصلين غير المصرح لهم أو غير الأعضاء لا يمكنهم تجاوز القاعدة.
- إذا تغير المخطط العام، فأعد إنشاء عائلات العملاء ومستهلكي التحقق من الكتابة.
- استخدم نموذج سطح المكتب وقم بتوثيق أي متطلبات طلب تم تغييرها.
يُرجع الإنشاء حاليًا صف مشروع مكشوف باستخدام HTTP 201. قائمة/احصل على صفوف معززة بالعلاقات. لا تفرض مظروف نجاح عام على هذه العائلة دون تحديث عقدها وعملائها. تستخدم عائلات نقاط النهاية الأخرى عمدًا مظاريف مختلفة.
نقطة دخول المولد هي packages/api/scripts/generate-clients.ts. مخرجاتها تعيش تحت src/client/generated و src/sdk/generated. التغييرات في سطح العقد تنتمي إلى العقد المصدر؛ يجب أن تكون المخرجات الناتجة قابلة للتكرار.
اختر الانحدار في العمق الصحيح
يجب أن يؤكد الانحدار الهندسي الشكل الهندسي، وليس فقط تكرار الحساب الذي تم تغييره. توفر اختبارات التصادم الحالية أنماطًا مفيدة: فالتداخل الثابت هو تصادم عند الزمن صفر؛ يمكن أن تتصادم عملية المسح الدوراني المتوسطة حتى عندما تكون نقطة النهاية واضحة؛ الارتباط غير الكافي لم يتم حله؛ ويتم مقارنة التخليص المعتمد بمرجع مستقل كثيف.
bun test packages/core/src/cam/kernel/collision.test.ts
bun run --filter @cadcamfun/core typecheck
bun test packages/core اختر الحدود المماثلة لأعمال أخرى. يحتاج ترحيل قاعدة البيانات إلى حالات جديدة/ترقية وسلوك فشل النسخ الاحتياطي. يحتاج محلل الدفق إلى تقسيم الإطارات والإلغاء. يتطلب تغيير حفظ واجهة المستخدم تحديد الوجهة وفشل الطلب وإعادة المحاولة وإعادة فتح الحالة المحفوظة. يحتاج الأمر الأصلي إلى التحقق من الصحة وسلوك دورة الحياة بالإضافة إلى فحص نوع الواجهة الأمامية.
إبقاء الشيكات متناسبة مع التغيير. تحتاج تعديلات المحتوى إلى التحقق من التنقل/القالب؛ فهي لا تتطلب اختراع اختبارات مجال جديدة. يدعم الاختبار الضيق الذي يتم اجتيازه سلوكه المؤكد فقط، لذا قم بتضمين عمليات فحص الحزمة أو التكامل التي يتطلبها السطح العام المتغير.
المساهمة في التوثيق
الموقع موجود في packages/web. استخدام صفحات التوثيق DocsLayoutوجدول محتويات ومعرفات الأقسام ومكونات التعليمات البرمجية/وسيلة الشرح/الارتباطات ذات الصلة المشتركة. حافظ على اصطلاحات الصفحة والتصميم المرئي الحالي مع تحسين المحتوى.
- اقرأ التنفيذ والبيان والتكوين لكل سلوك تقوم بتوثيقه.
- استخدم أمرًا مدعومًا أو شكل طلب واذكر دليل العمل الضروري وبيانات الاعتماد ومسار البيانات والمتطلبات الأساسية الأصلية.
- وصف النتيجة وأوضاع فشلها. تسمية الأمثلة كأمثلة؛ استدعاء الاستجابة التي تم التقاطها فقط عندما تم التقاطها بالفعل.
- قم بتحديث بيانات تعريف التنقل والاسترداد عند إضافة مسار أو إعادة تسميته، وإصلاح كل رابط محلي إلى الموقع القديم.
- قم بتشغيل عمليات فحص الفهرس وبناء Astro، ثم قم بفحص الصفحة المعروضة ونقاط ارتساءها.
bun run --cwd packages/web check
bun run --cwd packages/web typecheck
bun run --cwd packages/web build يجب أن توضح المطالبات المتعلقة بـ CI التي تم تكوينها ما يفعله سير العمل. تحتاج المطالبات المتعلقة بالنشر الناجح أو قبول وقت التشغيل إلى التشغيل/المنتج المحدد كدليل. يجب أن يميز التوثيق بين السلوك المطبق والافتراضيات والحدود دون تحويل ملاحظات التخطيط الداخلي إلى تعليمات المنتج.
سحب قائمة التحقق من الطلب
bun run typecheckيمر في الجذر.bun run testيمر؛ السلوك الجديد لديه اختبار بجانب الكود.- يتم إعادة إنشاء تغييرات العقد:
bun run generate:checkوbun run --filter @cadcamfun/web checkنظيفة. - تتضمن تغييرات المخطط مجلد الترحيل الذي تم إنشاؤه ولا تعد مطلقًا تعديلات على الترحيل المطبق.
- تمر تغييرات Rust
cargo clippyوcargo test(CI يدير كليهما). - ينعكس السلوك المرئي للمستخدم في صفحة المستندات التي تصفه.
يقوم CI بتشغيل نفس الأوامر في كل دفعة، لذا فإن التشغيل المحلي باللون الأخضر هو أفضل مؤشر لطلب السحب الأخضر.