هوشِ دیزاینسیستم
نسلِ سومِ دیگ (v3) یک لایهٔ تحلیل روی رجیستری/مهاجرت/چرخهٔحیات/وابستگیِ موجود اضافه میکند، فقط ترکیب و تفسیر، نه یک موتورِ محاسباتیِ تازه. همهچیز فقطخواندنی است: هیچ دستوری در این صفحه فایلی تغییر نمیدهد.
معماری در یک نگاه
هر لایه دقیقاً روی لایهٔ قبلی سوار است، بدونِ دوبارهسازیِ منطقش:
dependency-graph.ts + migration.ts + lifecycle.ts + release.ts
│
▼ ترکیب میشوند در
governance.ts → dig governance <component>
│
▼ بهعلاوهٔ repo-scanner.ts (استفادهٔ محلی) و health.ts (پذیرش)
intelligence-export.ts → dig export-health --json
│
▼ قانونمحور (یا AI، اگر پیکربندی شده)
doctor.ts (AIAnalyzer) → dig doctor
│
▼ انتخابِ یک پیشنهادِ عملی برای یک کامپوننت
migration-assistant.ts (MigrationAssistant) → dig migrate-assist <component>dig health
v2گزارشِ یکپارچهٔ سلامتِ دیزاینسیستم برایِ همین پروژه: پذیرش، مهاجرتهای در انتظار، چرخهٔحیات، ریسکِ وابستگی و کامپوننتهای بدونِ استفاده، همه در یک صفحه.
dig healthdig health --jsondig export-health
v2قراردادِ صادراتِ پایدار و ماشینخوان، همان دادهٔ dig health، فقط به شکلِ per-component و مسطح برای مصرفکنندههای آینده (از جمله داشبورد). همیشه JSON برمیگرداند.
dig export-health --json{
"system": {
"version": "v2"
},
"health": {
"adoptionRate": 78,
"risk": "medium"
},
"components": [
{
"name": "button",
"usageCount": 35,
"deprecated": false,
"migrationPending": true,
"dependencyImpact": 12,
"changeType": "breaking"
}
]
}dig doctor
v3تحلیلِ خودکارِ یافتهها: برای هر مسئله (مهاجرتِ در انتظار، کامپوننتِ منسوخ، وابستگیِ پرریسک، عدمِاستفاده، پذیرشِ پایین) یک finding با شدت و پیشنهاد میسازد.
dig doctordig doctor --json--explain: ردِ استدلال
برای هر finding، دلیلِ دقیق (چند بند) و سطحِ اطمینان را هم نشان میدهد، افزودنی؛ خروجیِ پیشفرضِ dig doctor بدونِ این پرچم دستنخورده میماند.
dig doctor --explaindig migrate-assist --explain
v3مثلِ dig doctor --explain، ولی برای یک پیشنهادِ مشخص: چرا این قاعده (مهاجرت/جایگزین/بررسیِ دستی) انتخاب شد و چه شواهدی پشتش است.
dig migrate-assist button --explainپیکربندیِ ارائهدهندهٔ AI
پیشفرض همیشه تحلیلِ قطعیِ قانونمحور است، بدونِ هیچ کلید/شبکهای. اگر بخواهید --explain از یک مدلِ واقعی (Claude) استفاده کند، این دو متغیرِ محیطی را ست کنید:
DIG_AI_PROVIDER=claude
ANTHROPIC_API_KEY=sk-ant-...اگر هرکدام نباشد، یا کلید اشتباه باشد، یا پاسخِ مدل نامعتبر/دیرهنگام باشد، بدونِ خطا و بدونِ کرش، همان تحلیلِ قانونمحور نمایش داده میشود. رفتارِ fallback هرگز نمیشکند.
چیزی که برای AI ارسال میشود فقط متادیتای عددی/boolean است (نامِ کامپوننت، تعدادِ استفاده، وضعیتِ مهاجرت/چرخهٔحیات، تأثیرِ وابستگی)، هرگز کدِ منبع، هرگز محتوای فایل، هرگز کلیدِ API در بدنه یا لاگ.
بدونِ پیکربندی، هیچ فراخوانیِ شبکهایای رخ نمیدهد؛ هیچ تلهمتریای هم وجود ندارد.