दस्तावेज़
योगदान कोड
वास्तविक मॉड्यूल के माध्यम से उपयोगकर्ता की कार्रवाई का पता लगाएं, उसके अनुबंध को अपडेट करें और परिणामी व्यवहार को सत्यापित करें।
अंग्रेज़ी से स्वचालित रूप से अनुवादित। अंग्रेज़ी मूल देखें
कार्यान्वयन का पता लगाएं
उस व्यवहार से शुरुआत करें जिसे आप बदल रहे हैं। डेस्कटॉप कार्रवाई के लिए, फ़ॉलो करें apps/desktop/src/app/routes.tsx इसके पेज एडॉप्टर और फीचर स्क्रीन पर। इसके क्लाइंट या फ़ीचर हेल्पर, एंडपॉइंट स्कीमा में अनुरोध का पता लगाएं packages/api, हैंडलर अंदर apps/sidecar/src/http, और इसके नीचे सेवा या रिपॉजिटरी।
ज्यामिति या एनसी-आउटपुट परिवर्तन के लिए, प्रारंभ करें packages/core और इसके निकटवर्ती परीक्षण। दृढ़ता संबंधी समस्या के लिए, रिपॉजिटरी क्वेरी का निरीक्षण करें और packages/db/src/schema.ts. मूल जीवनचक्र, फ़ाइल-संवाद, किचेन, या अपडेटर व्यवहार के लिए निरीक्षण करें apps/desktop/src-tauri/src. यह बदलाव को उसकी वास्तविक ज़िम्मेदारी के करीब रखता है।
कार्यस्थल की जिम्मेदारियां
| मॉड्यूल | ज़िम्मेदारी |
|---|---|
packages/core | शुद्ध CAD/CAM मॉडल और एल्गोरिदम, पोस्ट, प्रोग्राम पार्सिंग और सत्यापन। |
packages/api | साझा स्कीमा, समापन बिंदु अनुबंध और उत्पन्न ग्राहक। |
packages/db | SQLite कनेक्शन जीवनचक्र, ड्रिज़ल स्कीमा, माइग्रेशन और अपग्रेड बैकअप। |
packages/ai | मॉडल एकीकरण, एम्बेडेड होस्ट, एक्शन कैटलॉग, सत्र और एआई उपकरण। |
packages/plugin-sdk, packages/nikcli-plugin | एप्लिकेशन प्लगइन अनुबंध और स्टैंडअलोन निकली एक्शन-ब्रिज क्लाइंट। |
packages/vcs, packages/workflow | प्रोजेक्ट इतिहास और वर्कफ़्लो परिभाषाएँ/निष्पादन। |
apps/sidecar | HTTP एडेप्टर, सेवा संरचना, रिपॉजिटरी, गेटवे और एप्लिकेशन एकीकरण। |
apps/desktop, apps/mobile | डेस्कटॉप यूआई/नेटिव शेल और युग्मित आईओएस क्लाइंट। |
packages/httpapi-codegen, packages/web | एपीआई क्लाइंट जनरेशन और दस्तावेज़ीकरण/स्टूडियो साइट। |
उपलब्ध होने पर मॉड्यूल के सार्वजनिक प्रवेश बिंदु का उपयोग करें। SQLite एक्सेस को कोर ज्योमेट्री और क्लाइंट से दूर रखें। फ़ीचर स्क्रीन को साइडकार प्राधिकरण या एंबेड सर्वर क्रेडेंशियल्स को बायपास नहीं करना चाहिए। क्रॉस-कटिंग परिवर्तनों को प्रत्येक प्रभावित सीमा को स्पष्ट रूप से अद्यतन करना चाहिए।
साझा अनुबंधों को जानबूझकर बदलें
- अनुबंध पैकेज में अनुरोध, प्रतिक्रिया और टाइप की गई त्रुटि स्कीमा को परिभाषित करें।
- स्वामित्व जांच सहित हैंडलर और उसकी सेवा/भंडार व्यवहार को लागू करें।
- क्लाइंट को पुनर्जीवित करें और जांचें कि जेनरेट किया गया आउटपुट चालू है।
- परिवर्तित सतह का उपयोग करने वाले डेस्कटॉप, सहयोगी, प्लगइन या बाहरी क्लाइंट उपभोक्ताओं को अपडेट करें।
- समर्थित इनपुट, आउटपुट, विफलता व्यवहार और परिचालन सीमाओं का दस्तावेजीकरण करें।
bun run generate
bun run generate:check
bun run --filter @cadcamfun/api typecheck
bun run --filter @cadcamfun/sidecar typecheck जेनरेट किए गए क्लाइंट अनुबंध जनरेटर के आउटपुट हैं। जब उनके आकार गलत हों तो अनुबंध या जनरेटर को ठीक करें; उत्पन्न आउटपुट में हस्तलिखित सुधार पुनर्जनन पर खो जाएगा। मौजूदा क्लाइंट शब्दार्थ को सुरक्षित रखें या जानबूझकर एपीआई परिवर्तन के संगतता प्रभाव की पहचान करें।
कार्यान्वयन सम्मेलन
कोड, टिप्पणियाँ और दस्तावेज़ीकरण अंग्रेजी में लिखें। निर्यातित टाइपस्क्रिप्ट इंटरफ़ेस को स्पष्ट रखें और उपयोग करें unknown अविश्वसनीय मूल्यों के लिए प्लस स्कीमा सत्यापन। सापेक्ष टाइपस्क्रिप्ट आयात का उपयोग .ts एक्सटेंशन. सीएडी दूरियां मिलीमीटर का उपयोग करती हैं और कोण बनाने में रेडियन का उपयोग होता है; स्पष्ट रूप से डिग्री-मूल्यवान सुविधा और सीएएम रोटरी इनपुट का सम्मान करें। पोस्ट सीमा पर एनसी नंबरों को प्रारूपित करें।
प्रभाव कोड पिन किए गए संस्करण की सेवा/परत/त्रुटि एपीआई का उपयोग करता है। सेवाओं की अपनी बाहरी निर्भरताएँ होती हैं; दायरे वाली परतों के पास स्वयं के संसाधन हैं। किसी डोमेन मॉड्यूल के अंदर छिपी हुई प्रक्रिया कॉन्फ़िगरेशन को जोड़ने से बचें। ज्यामिति गणनाओं को शुद्ध रखें और फ़ाइल सिस्टम, नेटवर्क और डेटाबेस संचालन को उनके एडॉप्टर के पीछे अलग करें।
स्कीमा परिवर्तन के लिए, संशोधित करें schema.ts, एक माइग्रेशन उत्पन्न करें, और मौजूदा डेटाबेस का नए सिरे से निर्माण और उन्नयन दोनों करें। यूआई परिवर्तन के लिए, रूट एडेप्टर को छोटा रखें और संबंधित सुविधा में इंटरेक्शन लॉजिक रखें। मूल कार्य के लिए, ज्योमेट्री और रिपॉजिटरी लॉजिक को रस्ट में ले जाने के बजाय साइडकार/कोर में रखें।
समीक्षा से पहले सत्यापन
- प्रभावित पैकेज के टाइपचेक और बदले हुए व्यवहार के लिए सार्थक परीक्षण चलाएँ।
- बग फिक्स के लिए, विफल स्थिति और उसके सही परिणाम को प्रदर्शित करें।
- साझा अनुबंधों के लिए, उत्पन्न ग्राहकों और प्रभावित उपभोक्ताओं की जाँच करें।
- दृढ़ता के लिए, पृथक डेटाबेस का उपयोग करके माइग्रेशन व्यवहार और डेटा अखंडता को सत्यापित करें।
- मूल या रेंडर किए गए इंटरैक्शन के लिए, तर्क परीक्षणों के अलावा वास्तविक लक्ष्य रनटाइम का अभ्यास करें।
- उपयोगकर्ता/डेवलपर दस्तावेज़ीकरण को अद्यतन करें और शेष परिचालन सीमाओं की व्याख्या करें।
जड़ जाँच हैं bun run typecheck और bun run test. सीआई के पास रस्ट और साथी-विशिष्ट नौकरियां भी हैं। क्या चलाया गया और किसी विफलता या अनुपलब्ध रनटाइम कवरेज की रिपोर्ट करें; एक कॉन्फ़िगर वर्कफ़्लो को एक सफल रन से अलग करना।
परिवर्तनों को समीक्षा योग्य रखें
उत्पन्न कलाकृतियों, निर्भरता अद्यतनों, व्यवहार परिवर्तनों और दस्तावेज़ीकरण परिवर्तनों को एक ही ठोस उद्देश्य से पता लगाने योग्य रखें। असंबंधित मॉड्यूल को पुन: स्वरूपित करने से बचें। मौजूदा उपयोगकर्ता कार्य को सुरक्षित रखें और प्रयोगों के लिए डिस्पोजेबल डेटा निर्देशिकाओं का उपयोग करें।
पैच या स्क्रीनशॉट में लॉन्च टोकन, डिवाइस पेयरिंग लिंक, मॉडल कुंजी, डेटाबेस सामग्री या हस्ताक्षरित क्रेडेंशियल शामिल न करें। उदाहरणों में प्लेसहोल्डर्स का उपयोग करना चाहिए. एक स्थानीय स्थिरता या नकली प्रदाता एक नियतात्मक प्रवाह को मान्य कर सकता है; दस्तावेज़ जहां वास्तविक प्रदाता या मूल एकीकरण आवश्यक रहता है।
उपयोगी जाँचें
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, सामग्री की एक तालिका, अनुभाग पहचानकर्ता, और साझा कोड/कॉलआउट/संबंधित-लिंक घटक। सामग्री में सुधार करते हुए उन पेज परंपराओं और मौजूदा विज़ुअल डिज़ाइन को संरक्षित करें।
- आपके द्वारा दस्तावेज़ित प्रत्येक व्यवहार के लिए कार्यान्वयन, प्रकटीकरण और कॉन्फ़िगरेशन पढ़ें।
- एक समर्थित कमांड या अनुरोध आकार का उपयोग करें और आवश्यक कार्यशील निर्देशिका, क्रेडेंशियल्स, डेटा पथ और मूल पूर्वापेक्षाएँ बताएं।
- परिणाम और उसकी विफलता के तरीकों का वर्णन करें। उदाहरणों को उदाहरण के रूप में लेबल करें; किसी प्रतिक्रिया को तभी कॉल करें जब उसे वास्तव में कैप्चर किया गया हो।
- किसी मार्ग को जोड़ते या उसका नाम बदलते समय नेविगेशन और पुनर्प्राप्ति मेटाडेटा को अपडेट करें और प्रत्येक स्थानीय लिंक को पुराने स्थान पर ठीक करें।
- इंडेक्स जांच और एस्ट्रो बिल्ड चलाएं, फिर रेंडर किए गए पेज और उसके एंकर का निरीक्षण करें।
bun run --cwd packages/web check
bun run --cwd packages/web typecheck
bun run --cwd packages/web build कॉन्फ़िगर किए गए सीआई के बारे में दावों को यह बताना चाहिए कि वर्कफ़्लो क्या करता है। सफल प्रकाशन या रनटाइम स्वीकृति के दावों के लिए साक्ष्य के रूप में विशेष रन/विरूपण साक्ष्य की आवश्यकता होती है। दस्तावेज़ीकरण को आंतरिक नियोजन नोट्स को उत्पाद निर्देशों में बदले बिना कार्यान्वित व्यवहार, चूक और सीमाओं को अलग करना चाहिए।
अनुरोध चेकलिस्ट खींचें
bun run typecheckजड़ से गुजरता है.bun run testगुजरता है; नए व्यवहार में कोड के आगे एक परीक्षण है।- अनुबंध परिवर्तन पुन: उत्पन्न होते हैं:
bun run generate:checkऔरbun run --filter @cadcamfun/web checkसाफ़ हैं. - स्कीमा परिवर्तनों में जेनरेट किया गया माइग्रेशन फ़ोल्डर शामिल होता है और यह कभी भी लागू माइग्रेशन का संपादन नहीं होता है।
- Rust परिवर्तन गुजरता है
cargo clippyऔरcargo test(सीआई दोनों चलाता है)। - उपयोगकर्ता-दृश्य व्यवहार दस्तावेज़ पृष्ठ में प्रतिबिंबित होता है जो इसका वर्णन करता है।
सीआई प्रत्येक पुश पर समान कमांड चलाता है, इसलिए ग्रीन लोकल रन ग्रीन पुल अनुरोध का सबसे अच्छा भविष्यवक्ता है।