@tera-system/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +13 -0
- package/MANIFEST.json +24 -0
- package/README.md +67 -0
- package/RELEASES.md +28 -0
- package/WELCOME.md +35 -0
- package/agents/application-blueprint.md +407 -0
- package/agents/auditor.md +665 -0
- package/agents/design-reviewer.md +392 -0
- package/agents/domain-expert-agent.md +510 -0
- package/agents/domain-research-agent.md +360 -0
- package/agents/engineering-agent-dotnet.md +218 -0
- package/agents/engineering-agent-phaser.md +275 -0
- package/agents/engineering-agent-typescript.md +300 -0
- package/agents/engineering-agent.md +143 -0
- package/agents/monitor.md +395 -0
- package/agents/production-erp-expert.md +506 -0
- package/agents/project-knowledge-agent.md +271 -0
- package/agents/qa-agent.md +498 -0
- package/agents/tera-business-transformation-consultant.md +290 -0
- package/agents/tera-client-engagement.md +891 -0
- package/agents/tera-software-designer.md +237 -0
- package/agents/tera-strategic-advisor.md +325 -0
- package/agents/tera-system-evolution.md +759 -0
- package/agents/tera.md +520 -0
- package/agents/ui-designer.md +426 -0
- package/commands/tera-approve.md +34 -0
- package/commands/tera-diagnose.md +47 -0
- package/commands/tera-gate.md +40 -0
- package/commands/tera-help.md +41 -0
- package/commands/tera-new-project.md +35 -0
- package/commands/tera-plan.md +34 -0
- package/commands/tera-request-build.md +45 -0
- package/commands/tera-resume.md +34 -0
- package/commands/tera-review.md +52 -0
- package/commands/tera-status.md +38 -0
- package/commands/tera-update.md +48 -0
- package/core/project-control/templates/TASK_TEMPLATE.md +146 -0
- package/core/tera-system/AGENT_ACTIVATION_MATRIX.md +285 -0
- package/core/tera-system/AGENT_DEPENDENCY_MAP.md +117 -0
- package/core/tera-system/AGENT_GENERATION_TEMPLATE.md +312 -0
- package/core/tera-system/AGENT_PERMISSION_MODEL.md +343 -0
- package/core/tera-system/AIS_PROTOCOL.md +191 -0
- package/core/tera-system/TERA_AGENT_CONDUCT.md +102 -0
- package/core/tera-system/TERA_CONTINUOUS_IMPROVEMENT_POLICY.md +111 -0
- package/core/tera-system/TERA_DISTRIBUTION_POLICY.md +291 -0
- package/core/tera-system/TERA_PROJECT_DECISION.md +281 -0
- package/core/tera-system/TERA_USER_GUIDE.md +462 -0
- package/core/tera-system/TOOLING_AND_MCP_POLICY.md +285 -0
- package/core/tera-system/TeraApplicationQuestionBank.md +362 -0
- package/core/tera-system/TeraArchitectureMap.md +91 -0
- package/core/tera-system/TeraClientPolicy.md +366 -0
- package/core/tera-system/TeraHelperAgents.md +970 -0
- package/core/tera-system/TeraPolicyMap.md +131 -0
- package/core/tera-system/TeraPreExecutionGate.md +818 -0
- package/core/tera-system/TeraPreparationDocumentationGovernance.md +370 -0
- package/core/tera-system/TeraPricingPolicy.md +674 -0
- package/core/tera-system/TeraProjectIntakePolicy.md +164 -0
- package/core/tera-system/TeraScenarioStressTests.md +168 -0
- package/core/tera-system/TeraSubAgents.md +854 -0
- package/core/tera-system/TeraSystemMaintenanceChecklist.md +80 -0
- package/core/tera-system/TeraTokenPolicy.md +362 -0
- package/core/tera-system/Tera_Project_Preparation_Files.md +1045 -0
- package/core/tera-system/agent-helpers/application-blueprint-details.md +177 -0
- package/core/tera-system/client-helpers/tera-client-engagement-discovery-domains.md +99 -0
- package/core/tera-system/client-helpers/tera-client-engagement-gates.md +258 -0
- package/core/tera-system/client-helpers/tera-client-engagement-pricing.md +341 -0
- package/core/tera-system/client-helpers/tera-client-engagement-protocols.md +692 -0
- package/core/tera-system/consulting-helpers/BTCA_METHODOLOGY_FRAMEWORK.md +195 -0
- package/core/tera-system/consulting-helpers/BTCA_REPORT_TEMPLATES.md +266 -0
- package/core/tera-system/design-system/ACCESSIBILITY_RULES.md +31 -0
- package/core/tera-system/design-system/COMPONENT_LIBRARY_SCHEMA.md +46 -0
- package/core/tera-system/design-system/DESIGN_MD_INTEGRATION.md +59 -0
- package/core/tera-system/design-system/DESIGN_REVIEW_STANDARDS.md +241 -0
- package/core/tera-system/design-system/DESIGN_SOURCE_PROTOCOL.md +61 -0
- package/core/tera-system/design-system/DESIGN_SYSTEM_OVERVIEW.md +66 -0
- package/core/tera-system/design-system/DESIGN_TOKENS_SCHEMA.md +66 -0
- package/core/tera-system/design-system/EXTERNAL_REFERENCE_ANALYSIS.md +52 -0
- package/core/tera-system/design-system/FIGMA_INTEGRATION.md +138 -0
- package/core/tera-system/design-system/INTERNAL_KITS_INDEX.md +26 -0
- package/core/tera-system/design-system/LAYOUT_PATTERNS.md +52 -0
- package/core/tera-system/design-system/MOBILE_UI_UX_STANDARDS.md +342 -0
- package/core/tera-system/design-system/RTL_LTR_RULES.md +39 -0
- package/core/tera-system/design-system/UI_ACCEPTANCE_GATE.md +80 -0
- package/core/tera-system/design-system/kits/KIT_ADMIN_DASHBOARD.md +102 -0
- package/core/tera-system/engineering-governance/ENGINEERING_AGENT_RESPONSIBILITIES.md +210 -0
- package/core/tera-system/engineering-governance/ENGINEERING_BEST_PRACTICES.md +468 -0
- package/core/tera-system/engineering-governance/ENGINEERING_GOVERNANCE_GATE.md +131 -0
- package/core/tera-system/engineering-governance/ENGINEERING_REVIEW_CHECKLIST.md +129 -0
- package/core/tera-system/engineering-governance/QUALITY_GATE_THRESHOLDS.md +159 -0
- package/core/tera-system/engineering-helpers/engineering-agent-core.md +171 -0
- package/core/tera-system/knowledge-base/OPENHANDS_ARCHITECTURE_REFERENCE.md +243 -0
- package/core/tera-system/knowledge-base/manufacturing/00_INDEX.md +32 -0
- package/core/tera-system/knowledge-base/manufacturing/01_MANUFACTURING_ERP_CORE_CONCEPTS.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/02_SAP_MANUFACTURING_RESEARCH.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/03_DYNAMICS_365_MANUFACTURING_RESEARCH.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/04_ORACLE_MANUFACTURING_RESEARCH.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/05_ODOO_MANUFACTURING_RESEARCH.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/06_ERPNEXT_MANUFACTURING_RESEARCH.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/07_MANUFACTURING_COSTING_GUIDE.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/08_PRODUCTION_DISCOVERY_QUESTIONS.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/09_MANUFACTURING_BLUEPRINT_CHECKLIST.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/10_PRODUCTION_TEST_SCENARIOS.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/11_QUALITY_REWORK_AND_SCRAP_GUIDE.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/12_MRP_AND_PLANNING_GUIDE.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/13_LOCAL_AND_REGIONAL_MANUFACTURING_CONTEXT.md +7 -0
- package/core/tera-system/knowledge-base/manufacturing/14_VENDOR_COMPARISON_MATRIX.md +7 -0
- package/core/tera-system/product-standards/maintenance-apps/BEST_PRACTICES_DOMAIN.md +325 -0
- package/core/tera-system/product-standards/maintenance-apps/STANDARD_DEFINITION.md +142 -0
- package/core/tera-system/profiles/PROFILES_INDEX.md +57 -0
- package/core/tera-system/profiles/TEMPLATE.md +47 -0
- package/core/tera-system/profiles/dotnet-blazor-ef.md +76 -0
- package/core/tera-system/profiles/dotnet-razorpages-adonet.md +137 -0
- package/core/tera-system/profiles/dotnet-wpf-sqlite.md +159 -0
- package/core/tera-system/profiles/effect-bun-opencode.md +109 -0
- package/core/tera-system/profiles/flutter-mobile.md +369 -0
- package/core/tera-system/profiles/nextjs-prisma.md +110 -0
- package/core/tera-system/profiles/phaser-react-node.md +302 -0
- package/core/tera-system/profiles/react-pwa.md +97 -0
- package/core/tera-system/runtime/CLIENT_DISCOVERY_PROTOCOL.md +145 -0
- package/core/tera-system/runtime/DOMAIN_INTELLIGENCE_PROTOCOL.md +124 -0
- package/core/tera-system/runtime/MVP_DEFINITION_PROTOCOL.md +176 -0
- package/core/tera-system/runtime/TERA_RUNTIME_CHECKLISTS.md +646 -0
- package/core/tera-system/runtime/TERA_RUNTIME_PROTOCOLS.md +50 -0
- package/core/tera-system/runtime/TERA_RUNTIME_PROTOCOLS_CLIENT.md +355 -0
- package/core/tera-system/runtime/TERA_RUNTIME_PROTOCOLS_CORE.md +799 -0
- package/core/tera-system/runtime/TERA_RUNTIME_TEMPLATES.md +908 -0
- package/core/tera-system/runtime/TERA_RUNTIME_TEMPLATES_DELIVERY.md +584 -0
- package/core/tera-system/runtime/TERA_RUNTIME_TEMPLATES_PREPARATION.md +376 -0
- package/core/tera-system/runtime/TERA_SOLUTION_PREPARATION_PROTOCOL.md +335 -0
- package/core/tera-system/runtime/TERA_SOLUTION_PREPARATION_TEMPLATES.md +397 -0
- package/core/tera-system/runtime/VERSION_LIFECYCLE_PROTOCOL.md +296 -0
- package/core/tera-system/semgrep-rules/README.md +32 -0
- package/core/tera-system/semgrep-rules/tera-security.yml +66 -0
- package/core/tera-system/semgrep-rules/tera-standards.yml +49 -0
- package/core/tera-system/teranoo-ui/README.md +48 -0
- package/core/tera-system/teranoo-ui/components/button.tsx +51 -0
- package/core/tera-system/teranoo-ui/components/card.tsx +49 -0
- package/core/tera-system/teranoo-ui/components/dashboard-layout.tsx +36 -0
- package/core/tera-system/teranoo-ui/components/data-table.tsx +146 -0
- package/core/tera-system/teranoo-ui/components/empty-state.tsx +31 -0
- package/core/tera-system/teranoo-ui/components/kpi-card.tsx +42 -0
- package/core/tera-system/teranoo-ui/components/page-header.tsx +25 -0
- package/core/tera-system/teranoo-ui/components/search-input.tsx +40 -0
- package/core/tera-system/teranoo-ui/components/sidebar.tsx +66 -0
- package/core/tera-system/teranoo-ui/components/stats-card.tsx +37 -0
- package/core/tera-system/teranoo-ui/registry.json +77 -0
- package/core/tera-system/teranoo-ui/styles/teranoo-theme.css +61 -0
- package/opencode.tera.example.json +30 -0
- package/package.json +37 -0
- package/scripts/build.mjs +110 -0
- package/scripts/install.js +244 -0
- package/scripts/lib/license.mjs +90 -0
- package/scripts/lib/public-key.pem +3 -0
- package/scripts/tera-license.mjs +63 -0
- package/tools/tera-clean.ps1 +97 -0
- package/tools/tera-fetch.ps1 +165 -0
- package/tools/tera-release.ps1 +96 -0
- package/tools/tera-schedule.ps1 +59 -0
- package/tools/tera-update.ps1 +472 -0
- package/tools/tera-watch.ps1 +154 -0
- package/tools/update-client-repositories.ps1 +92 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# تطبيق: ApplicationBlueprintAgent — تفاصيل مرجعية
|
|
2
|
+
|
|
3
|
+
> **ملف مساعد.** يُقرأ عند الحاجة — ليس ملفاً تشغيلياً أساسياً.
|
|
4
|
+
> المصدر الرئيسي: `.opencode/agents/application-blueprint.md`
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. Depth Control Matrix — مصفوفة التحكم بالعمق
|
|
9
|
+
|
|
10
|
+
### معايير التقييم
|
|
11
|
+
|
|
12
|
+
| البعد | Low | Medium | High |
|
|
13
|
+
|-------|-----|--------|------|
|
|
14
|
+
| **Risk** | تقنية مألوفة، domain معروف، متطلبات واضحة | تقنية معروفة، domain جديد جزئياً | تقنية جديدة، تكامل معقد، بيانات حساسة |
|
|
15
|
+
| **Uncertainty** | متطلبات واضحة بالكامل | متطلبات واضحة 70-80% | متطلبات غير واضحة، أقسام "TBD" |
|
|
16
|
+
| **Complexity** | متجر، مدونة، CRUD بسيط | مقاولات، عقارات، لوجستيك | ERP, محاسبة, تصنيع, طب, قانون |
|
|
17
|
+
|
|
18
|
+
### المصفوفة الكاملة
|
|
19
|
+
|
|
20
|
+
| Risk | Uncertainty | Complexity | Depth Level | الأقسام الإلزامية |
|
|
21
|
+
|------|-------------|------------|-------------|------------------|
|
|
22
|
+
| Low | Low | Low | **Core Only** | 0-10 (الأساسية) |
|
|
23
|
+
| Low | Low | Medium | **Standard** | 0-12 (الكاملة) |
|
|
24
|
+
| Low | Medium | Low | **Core Only** | 0-10 (الأساسية) |
|
|
25
|
+
| Low | Medium | Medium | **Standard** | 0-12 (الكاملة) |
|
|
26
|
+
| Medium | Low | Low | **Standard** | 0-12 (زيادة Risk يرفع المستوى) |
|
|
27
|
+
| High | * | * | **Full** | 0-15 (كاملة + C4 + ADR + Events) |
|
|
28
|
+
| * | High | * | **Full** | 0-15 (كاملة + Open Questions مفصلة) |
|
|
29
|
+
| * | * | High | **Full + Event Storming** | 0-15 + Event Storming مفصل |
|
|
30
|
+
|
|
31
|
+
### تأثير Depth Level
|
|
32
|
+
|
|
33
|
+
| المستوى | الأقسام | C4 Diagrams |
|
|
34
|
+
|----------|---------|-------------|
|
|
35
|
+
| **Core Only** | 11 قسماً (0-10) | اختياري — يُوصى به في حال وجود تكامل خارجي |
|
|
36
|
+
| **Standard** | 13 قسماً (0-12 + ADR Seeds) | يُوصى به بشدة — تقدير المهندس |
|
|
37
|
+
| **Full** | 15 قسماً (0-15) | مُوصى به بشدة — تقدير المهندس |
|
|
38
|
+
|
|
39
|
+
**⚠️ قاعدة C4:** تقدير المهندس بعد Depth Assessment. القرار يُوثّق مع السبب.
|
|
40
|
+
|
|
41
|
+
### تقييم سريع (للمشاريع الواضحة)
|
|
42
|
+
|
|
43
|
+
إذا كان المشروع واضحاً تماماً من first glance (جميع الأبعاد تقييمها Low):
|
|
44
|
+
- اختر **Core Only** مباشرة
|
|
45
|
+
- سجّل السبب في Depth Assessment: "All dimensions Low — Core Only selected directly"
|
|
46
|
+
- هذا يوفر 5-10 دقائق تقييم تفصيلي
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 2. ADR Seeds — بذور القرارات المعمارية
|
|
51
|
+
|
|
52
|
+
### الهيكل الكامل لكل Seed
|
|
53
|
+
|
|
54
|
+
| الحقل | الوصف | مثال |
|
|
55
|
+
|-------|-------|------|
|
|
56
|
+
| **Title** | عنوان يميّز القرار | "اختيار قاعدة بيانات" |
|
|
57
|
+
| **Context** | السياق الذي أثار الحاجة | "النظام يحتاج تخزين مرن للبيانات غير المهيكلة" |
|
|
58
|
+
| **Decision Candidate** | الخيار المقترح (مع خيارات بديلة) | "Primary: PostgreSQL مع JSONB. Alternatives: MongoDB, SQL Server" |
|
|
59
|
+
| **Tradeoffs** | مقايضات معروفة | "PostgreSQL: +نضج, +SQL, -المرونة. MongoDB: +المرونة, -الاتساق" |
|
|
60
|
+
| **Status** | `[ADR-Seed]` — ليس قراراً نهائياً | `[ADR-Seed]` |
|
|
61
|
+
|
|
62
|
+
### متى لا توجد قرارات معمارية؟
|
|
63
|
+
|
|
64
|
+
إذا كان المشروع صغيراً (Core Only) وليس هناك أي قرار معماري حقيقي:
|
|
65
|
+
```
|
|
66
|
+
1. Title: No significant architecture decisions identified yet
|
|
67
|
+
Context: Project scope is straightforward with standard patterns
|
|
68
|
+
Decision Candidate: Will emerge during formal preparation
|
|
69
|
+
Tradeoffs: N/A at this stage
|
|
70
|
+
Status: [ADR-Seed]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
هذا أفضل من إجبار قرارات غير موجودة.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 3. C4 Architecture Diagrams — النمذجة المعمارية
|
|
78
|
+
|
|
79
|
+
### مستويات C4
|
|
80
|
+
|
|
81
|
+
| المستوى | المحتوى | إلزامي في |
|
|
82
|
+
|----------|---------|-----------|
|
|
83
|
+
| **C1 — Context** | النظام في محيطه: المستخدمون الخارجيون، الأنظمة المتكاملة | Full |
|
|
84
|
+
| **C2 — Container** | المكونات الكبيرة: Web, API, Database, Workers, Queues | Full |
|
|
85
|
+
| **C3 — Component** | المكونات الداخلية (للمكونات الحرجة فقط) | اختياري |
|
|
86
|
+
|
|
87
|
+
### مصدر الحقيقة
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
مصدر الحقيقة هو ملف Structurizr DSL (.dsl) — نص version-controlled.
|
|
91
|
+
الـ diagrams (PNG/SVG) هي مخرجات مشتقة تُولّد لاحقاً.
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### قواعد كتابة DSL
|
|
95
|
+
|
|
96
|
+
```structurizr
|
|
97
|
+
workspace {
|
|
98
|
+
model {
|
|
99
|
+
// تعريف المستخدمين والأنظمة
|
|
100
|
+
user = person "مستخدم" "وصف"
|
|
101
|
+
system = softwareSystem "النظام" "وصف"
|
|
102
|
+
|
|
103
|
+
user -> system "يستخدم" "HTTP"
|
|
104
|
+
|
|
105
|
+
// تعريف الـ Containers
|
|
106
|
+
webApp = container "Web App" "تطبيق الواجهة" "React"
|
|
107
|
+
api = container "API" "واجهة الخدمات" "API"
|
|
108
|
+
db = container "Database" "قاعدة البيانات" "SQL"
|
|
109
|
+
|
|
110
|
+
system -> webApp "يحتوي"
|
|
111
|
+
webApp -> api "يستدعي" "HTTP/REST"
|
|
112
|
+
api -> db "يقرأ/يكتب" "EF Core"
|
|
113
|
+
}
|
|
114
|
+
views {
|
|
115
|
+
systemContext system "SystemContext" {
|
|
116
|
+
include *
|
|
117
|
+
autolayout
|
|
118
|
+
}
|
|
119
|
+
container system "Containers" {
|
|
120
|
+
include *
|
|
121
|
+
autolayout
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### توليد الـ Diagrams — الوضع الحالي
|
|
128
|
+
|
|
129
|
+
**✅ MCP مُفعّل:** `colincoleman/structurizr-mcp` — مثبت في `structurizr-mcp/`.
|
|
130
|
+
|
|
131
|
+
**الميزات المتاحة:**
|
|
132
|
+
- قراءة/كتابة ملفات `.dsl` ✅ (دائماً متاح)
|
|
133
|
+
- تصدير diagrams إلى SVG/PNG/Mermaid/PlantUML ✅ (يحتاج Docker قيد التشغيل)
|
|
134
|
+
- التحقق من صحة DSL ✅ (يحتاج Docker)
|
|
135
|
+
- معاينة النماذج عبر http://localhost:8081 ✅ (يحتاج Docker)
|
|
136
|
+
|
|
137
|
+
**إذا لم يعمل MCP (Docker غير متاح):**
|
|
138
|
+
الـ DSL النصي يكفي كمرجع معمارية كامل — الـ diagrams تُولّد لاحقاً عند تشغيل Docker.
|
|
139
|
+
|
|
140
|
+
**لتشغيل حاوية Structurizr (من جذر المستودع):**
|
|
141
|
+
```bash
|
|
142
|
+
docker run -d --rm -p 8081:8080 -v "%CD%\architecture:/usr/local/structurizr" structurizr/structurizr local
|
|
143
|
+
```
|
|
144
|
+
> **ملاحظة:** المسار نسبي من جذر المستودع (يعمل على أي جهاز). بديل PowerShell: `-v "$PWD\architecture:/usr/local/structurizr"`
|
|
145
|
+
> **ملاحظة:** المنفذ 8081 لأن 8080 مشغول بـ ERPNext. المعاينة عبر http://localhost:8081
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 4. Domain Events Map — خريطة أحداث المجال
|
|
150
|
+
|
|
151
|
+
للمشاريع ذات `Domain Complexity ≥ High` أو `Uncertainty ≥ High`.
|
|
152
|
+
|
|
153
|
+
### الهيكل
|
|
154
|
+
|
|
155
|
+
#### Domain Events (الأحداث)
|
|
156
|
+
| الحدث | المشغّل (Command) | الفاعل (Actor) | المصدر (Aggregate) |
|
|
157
|
+
|-------|-------------------|----------------|-------------------|
|
|
158
|
+
| "OrderPlaced" | PlaceOrderCommand | Customer | Order |
|
|
159
|
+
| "PaymentReceived" | ProcessPaymentCommand | System | Payment |
|
|
160
|
+
|
|
161
|
+
#### Commands (الأوامر)
|
|
162
|
+
| الأمر | النتيجة | الـ Actor |
|
|
163
|
+
|-------|---------|-----------|
|
|
164
|
+
| PlaceOrderCommand | OrderPlaced | Customer |
|
|
165
|
+
| ProcessPaymentCommand | PaymentReceived | System |
|
|
166
|
+
|
|
167
|
+
#### Key Aggregates (الكيانات الرئيسية)
|
|
168
|
+
| الكيان | الأحداث المرتبطة |
|
|
169
|
+
|--------|------------------|
|
|
170
|
+
| Order | OrderPlaced, OrderShipped, OrderCancelled |
|
|
171
|
+
| Payment | PaymentReceived, PaymentFailed |
|
|
172
|
+
|
|
173
|
+
### متى تستخدم Event Storming
|
|
174
|
+
|
|
175
|
+
- **إلزامي**: Domain Complexity ≥ High في Depth Assessment
|
|
176
|
+
- **اختياري**: المشاريع التي يظهر فيها أنماط أحداث معقدة أثناء blueprinting
|
|
177
|
+
- **غير مطلوب**: Core Only أو Standard للمشاريع البسيطة غير المعقدة
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Canonical source for the 13 mandatory TCEA discovery domains — single source of truth for numbering, naming, aliases, coverage, and blocking rules.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Discovery Domains — المجالات الـ 13 الرسمية للاكتشاف
|
|
6
|
+
|
|
7
|
+
> هذا الملف هو **المصدر الوحيد المعتمد** لتعريف وترقيم مجالات Discovery الـ 13.
|
|
8
|
+
> جميع الملفات الأخرى (Question Bank, Templates, Protocols) تشير إلى هذا الملف بدلاً من تعريف المجالات من جديد.
|
|
9
|
+
>
|
|
10
|
+
> **لا تقرأ هذا الملف افتراضياً.** اقرأه فقط عند بدء Discovery لعميل جديد، أو عند الشك في ترقيم أو اسم Domain معين.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## جدول المجالات الرسمي
|
|
15
|
+
|
|
16
|
+
| # | الاسم الرسمي (Canonical) | الأسماء المقبولة (Aliases) | Minimum Coverage | يحجب التسعير؟ | يحجب الهاندوف؟ |
|
|
17
|
+
|:-:|:-------------------------|:--------------------------|:----------------:|:-------------:|:--------------:|
|
|
18
|
+
| 1 | Business & Goals | Business Context & Value, Administrative | Client profile, problem, goal, decision maker | لا | نعم |
|
|
19
|
+
| 2 | Users, Roles & Access | Users & Roles, Functional | User types, roles hierarchy, permissions model | لا | نعم |
|
|
20
|
+
| 3 | Process & Workflow | Workflow & Operations | Core business processes, approval flows, states | نعم | نعم |
|
|
21
|
+
| 4 | Data & Content | Data & Content | Entities, relationships, data volume, file types + **Content Type (Application Data / User-Facing Content / Mixed)** — لمشاريع User-Facing Content/Mixed: استراتيجية المحتوى (التموضع/النبرة/Claims المسموحة/الخطوط الحمراء) مؤكدة من المالك | نعم | نعم |
|
|
22
|
+
| 5 | Scope & MVP | Scope & MVP | In/out scope, priorities, phases | نعم | نعم |
|
|
23
|
+
| 6 | Screens & UX | Screens & UX | Screen count, UI complexity, responsive needs | نعم | نعم |
|
|
24
|
+
| 7 | Notifications Engine | Notifications Engine | Email, SMS, in-app, push, templates | لا | نعم |
|
|
25
|
+
| 8 | Reports & Dashboards | Reports & Dashboards | Report types, charts, filters, export | نعم | نعم |
|
|
26
|
+
| 9 | Design & Branding | Design & Branding | Brand guidelines, design source (Figma/etc), UI kit | لا | نعم |
|
|
27
|
+
| 10 | Technical, Hosting & Compliance | Technical, Hosting & Compliance | Stack, hosting, domain, SSL, compliance needs | نعم | نعم |
|
|
28
|
+
| 11 | Security & Audit | Security & Audit | Auth method, data sensitivity, audit trail | نعم | نعم |
|
|
29
|
+
| 12 | Integrations & APIs | Integrations & APIs | Third-party APIs, webhooks, data sync | نعم | نعم |
|
|
30
|
+
| 13 | Acceptance, Commercials & Warranty | Acceptance, Commercials & Warranty | Acceptance criteria, budget, payment plan, warranty, support terms | نعم | نعم |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## القواعد
|
|
35
|
+
|
|
36
|
+
1. **هذا الترقيم هو المعتمد فقط.** لا يُستخدم ترقيم آخر في أي ملف من ملفات المنظومة.
|
|
37
|
+
2. **جميع Domains الـ 13 إلزامية التغطية** في `DISCOVERY_COVERAGE_SUMMARY.md` — لكن عمق التغطية (Minimum Coverage) يختلف حسب حجم المشروع (صغير/متوسط/معقد/غامض).
|
|
38
|
+
3. **Blocks Pricing = نعم** ← هذا المجال إذا كان `Missing` أو `Partial` دون حل يمنع إنتاج `DRAFT_QUOTATION.md` (Level 2).
|
|
39
|
+
4. **Blocks Handoff = نعم** ← هذا المجال إذا كان `Missing` أو `Partial` دون حل يمنع PASS في B.7b (Final Handoff Package Gate).
|
|
40
|
+
5. الأسماء المقبولة (Aliases) يمكن استخدامها في الأسئلة والحوارات مع Majed، لكن **الاسم الرسمي (Canonical)** يُستخدم في جميع الوثائق الرسمية (`DISCOVERY_COVERAGE_SUMMARY.md`, `DRAFT_QUOTATION.md`, `TERA_HANDOFF_PACKAGE.md`).
|
|
41
|
+
6. **المجال 13 (Acceptance, Commercials & Warranty)** يتطلب تغطية 3 جوانب داخلية على الأقل: (أ) معايير القبول والاختبارات, (ب) الميزانية وخطة الدفع, (ج) الضمان والصيانة.
|
|
42
|
+
7. **Content Type Rule (SCP-2026-08-15-016):** إذا كان Content Type = `User-Facing Content` أو `Mixed` (موقع/صفحة هبوط/تسويق/محتوى)، تُفعَّل **Content Confirmation Gate** في مرحلة التحضير (بعد `07_SCREENS_AND_UI_STRUCTURE.md` وقبل التصميم النهائي)، ويُشترط `CONTENT_REQUIREMENTS.md` معتمد من المالك في Solution Readiness Gate. التطبيقات القياسية (Application Data فقط) لا تُفعَّل — Anti-Bloat.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## علاقة هذا المصل بالملفات الأخرى
|
|
47
|
+
|
|
48
|
+
| الملف | العلاقة |
|
|
49
|
+
|-------|---------|
|
|
50
|
+
| `TeraApplicationQuestionBank.md` | يستخدم هذا الترقيم كمرجع للأسئلة — راجع discovery-domains.md للترقيم المعتمد |
|
|
51
|
+
| `TERA_RUNTIME_TEMPLATES.md §35` | Domain Coverage Matrix تستخدم هذا الترقيم والترتيب |
|
|
52
|
+
| `TERA_RUNTIME_PROTOCOLS.md` (Smart Interview) | تستخدم أسماء المجالات من هذا المصدر |
|
|
53
|
+
| `gates.md` (B.1 Discovery Coverage Gate) | تشير إلى "جميع Domains الـ 13" — تعريفها هنا |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## توجيهات Track A — تطوير تطبيق قائم `[Existing]`
|
|
58
|
+
|
|
59
|
+
> استخدم هذه التوجيهات إذا كان المشروع **Track A** مع `Application Status = [Existing]` (تطوير تطبيق قائم، لا تطبيق جديد من الصفر).
|
|
60
|
+
|
|
61
|
+
### Domain 10 (Technical, Hosting & Compliance) — أسئلة إضافية للتطبيقات القائمة
|
|
62
|
+
|
|
63
|
+
في Discovery للتطبيقات القائمة، أضف هذه الأسئلة إلى Domain 10:
|
|
64
|
+
|
|
65
|
+
| السؤال | الغرض |
|
|
66
|
+
|--------|-------|
|
|
67
|
+
| ما هي التقنيات المستخدمة حالياً؟ (لغة البرمجة، الإطار، قاعدة البيانات، الاستضافة) | فهم البيئة التقنية |
|
|
68
|
+
| هل يوجد Tech Debt معروف؟ (مشاكل أداء، أخطاء متكررة، كود قديم) | تقييم الجهد الإضافي المطلوب |
|
|
69
|
+
| هل يحتاج ترحيل بيانات (Data Migration)؟ ما حجمها؟ | تحديد تعقيد الترحيل |
|
|
70
|
+
| هل توجد قيود تكامل (Integrations) مع أنظمة أخرى؟ | تحديد نطاق التكامل المطلوب |
|
|
71
|
+
| هل التطبيق مُوثّق؟ (وثائق API، README، إلخ) | تقييم سهولة البدء |
|
|
72
|
+
| هل يوجد نظام اختبارات (Test Suite)؟ | تقييم جودة الكود الحالي |
|
|
73
|
+
|
|
74
|
+
### Handoff Note
|
|
75
|
+
|
|
76
|
+
في `TERA_HANDOFF_PACKAGE.md` للتطبيقات القائمة، أضف بنداً يلخص:
|
|
77
|
+
- التقنيات الحالية
|
|
78
|
+
- Tech Debt Assessment
|
|
79
|
+
- حالة قاعدة الكود (مُوثّقة، غير مُوثّقة، مختبرة)
|
|
80
|
+
- قيود التكامل المعروفة
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## توجيهات Track B — Product Implementation
|
|
85
|
+
|
|
86
|
+
> عندما يكون المسار **Track B**، الـ 13 Domain تبقى إلزامية التغطية لكن الأسلوب يتغير: بدلاً من "ما هي احتياجاتك؟" تسأل "هل منتجنا يغطي احتياجاتك؟"
|
|
87
|
+
|
|
88
|
+
### الفرق في الأسلوب بين Track A و Track B
|
|
89
|
+
|
|
90
|
+
| الجانب | Track A (Custom) | Track B (Product) |
|
|
91
|
+
|--------|:----------------:|:-----------------:|
|
|
92
|
+
| نوع الأسئلة | استكشافية مفتوحة | استقصائية — "هل المنتج الحالي يغطي X؟" |
|
|
93
|
+
| Narrative | "أخبرني عن مشكلتك لأبني حلاً" | "هذا منتجنا، كيف يلبي احتياجاتك؟" |
|
|
94
|
+
| Scope | يبنى من الصفر | يُقيّم (Fit/Gap) بقدرات المنتج |
|
|
95
|
+
| التسعير | Scorecard + حاسبة Excel | تراخيص + خدمات تنفيذ (راجع pricing.md) |
|
|
96
|
+
|
|
97
|
+
### الإشارة لملف Fit-Gap
|
|
98
|
+
|
|
99
|
+
في Track B، Discovery يتبعه مباشرة Fit-Gap Analysis مفصّلة في `protocols.md` (Fit-Gap Analysis Protocol). الـ 13 Domains هنا تمهيد للتحليل، وليس Scope نهائي كما في Track A.
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: TCEA operational gates — B.1 through B.7b detailed definitions for quality control.
|
|
3
|
+
---
|
|
4
|
+
# TCEA Gates — ملف المساعد البوابات
|
|
5
|
+
|
|
6
|
+
> **اقرأني فقط عندما:** تحتاج التحقق من شرط Gate قبل الانتقال بين Modes (A→B Discovery→Pricing, B→C Pricing→Handoff).
|
|
7
|
+
>
|
|
8
|
+
> **لا تقرأني:** في بداية Session أو أثناء Discovery الروتيني.
|
|
9
|
+
>
|
|
10
|
+
> **إظهار تأكيد القراءة:** فقط إذا كانت الجلسة Audit/Debug، أو طلب Majed ذلك صراحة، أو كان القرار عالي الأثر. مثال عند الحاجة فقط: "📖 قرأت gates.md — Gate [اسم البوابة] = [PASS/FAIL]"
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## B.1 Discovery Coverage Gate — بوابة تغطية الاستكشاف
|
|
15
|
+
|
|
16
|
+
| البند | التفاصيل |
|
|
17
|
+
|-------|----------|
|
|
18
|
+
| **الاسم** | Discovery Coverage Gate |
|
|
19
|
+
| **الهدف** | ضمان أن جميع مجالات الاستكشاف الـ 13 قد غُطّيت بشكل كافٍ قبل الانتقال إلى تصنيف المشروع والتسعير المبدئي |
|
|
20
|
+
| **المدخلات المطلوبة** | `DISCOVERY_COVERAGE_SUMMARY.md` (بعد تطبيق Self-Check Protocol A.6.1 على كل Domain) |
|
|
21
|
+
| **شروط النجاح** | 1. جميع Domains الـ 13 مغطاة — إما `Complete` أو `Partial` مع `UNCERTAINTY_NOTICE`<br>2. كل Domain `Complete`: مصدر المعلومة واضح، Majed confirmed، والخطورة `Low` أو `Medium`<br>3. كل Domain `Partial`: `UNCERTAINTY_NOTICE` موجود ومرفوع لـ Majed<br>4. لا يوجد Domain بخطورة `High` بدون تأكيد Majed |
|
|
22
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. Domain بخطورة `High` بدون تأكيد Majed ← توقف إجباري<br>2. Domain غير مغطى (لا `Complete` ولا `Partial`) ← توقف<br>3. `UNCERTAINTY_NOTICE` مرفوع ولم يحصل رد من Majed ← توقف |
|
|
23
|
+
| **الإخراج الإلزامي** | `DISCOVERY_COVERAGE_SUMMARY.md` + قرار البوابة: **PASS/FAIL**. إذا كان FAIL، يُذكر السبب بوضوح: `Needs More Info` أو `Rejected`. |
|
|
24
|
+
| **هل يمنع الانتقال؟** | **نعم** — لا يمكن تصنيف المشروع أو البدء بتحليل النطاق والتسعير قبل PASS |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## B.2 Budget-to-Scope Control Rule — قاعدة الموازنة بين النطاق والميزانية
|
|
29
|
+
|
|
30
|
+
| البند | التفاصيل |
|
|
31
|
+
|-------|----------|
|
|
32
|
+
| **الاسم** | Budget-to-Scope Control Rule |
|
|
33
|
+
| **الهدف** | مواءمة النطاق المقترح مع ميزانية العميل عبر تصنيف الميزات بالأولوية وحساب الجدوى المالية قبل التسعير |
|
|
34
|
+
| **المدخلات المطلوبة** | `FEATURE_LIST.md` (الميزات), `CLIENT_INTAKE.md` (ميزانية العميل من Majed), `CLIENT_DECISION_LOG.md` (للتسجيل) |
|
|
35
|
+
| **شروط النجاح** | 1. جميع الميزات مصنفة حسب الأولوية: P1 (Must-have), P2 (Should-have), P3 (Nice-to-have)<br>2. تكلفة P1 محسوبة تقديرياً وموثقة في `CLIENT_DECISION_LOG.md`<br>3. إذا P1 ≤ الميزانية → تم توزيع الباقي على P2/P3 مع توثيق<br>4. إذا P1 > الميزانية → تم رفع خيارات لـ Majed (تقليل النطاق / زيادة الميزانية / تقسيم مرحلي) وأخذ قرار موثق |
|
|
36
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. ميزانية العميل غير معروفة ← توقف واسأل Majed صراحة<br>2. P1 غير مقدرة ← توقف<br>3. P1 > الميزانية ولم يتم توثيق قرار Majed ← توقف |
|
|
37
|
+
| **الإخراج الإلزامي** | `CLIENT_DECISION_LOG.md` محدّث بتصنيف الأولويات + قرار توزيع الميزانية |
|
|
38
|
+
| **هل يمنع الانتقال؟** | **نعم** — يمنع إنتاج `DRAFT_QUOTATION.md` قبل توثيق القرار |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## B.3 Final Scope Reconciliation Gate — بوابة توحيد النطاق النهائي
|
|
43
|
+
|
|
44
|
+
| البند | التفاصيل |
|
|
45
|
+
|-------|----------|
|
|
46
|
+
| **الاسم** | Final Scope Reconciliation Gate |
|
|
47
|
+
| **الهدف** | توحيد حالة جميع الميزات في `FEATURE_LIST.md` قبل التسعير، وضمان عدم وجود ميزات غير مصنّفة أو معلقة بدون قرار |
|
|
48
|
+
| **المدخلات المطلوبة** | `FEATURE_LIST.md`, `CLIENT_DECISION_LOG.md` (قرارات الميزانية والتغيير), Budget-to-Scope documentation |
|
|
49
|
+
| **شروط النجاح** | 1. كل ميزة في `FEATURE_LIST.md` لها حالة: `In Scope` / `Out of Scope` / `Deferred` / `Pending Decision`<br>2. كل ميزة `In Scope` لها أولوية: P1, P2, P3<br>3. لا توجد ميزة بحالة `Undefined` أو `Unclassified`<br>4. لا توجد ميزة `In Scope` تعتمد على ميزة `Deferred` أو `Pending Decision`<br>5. Budget-to-Scope (B.2) مطبّق وموثّق<br>6. **كل ميزة في `In Scope` تحمل وسماً من A.6.4 — ولا يجوز أن تكون `[Research Hint]` أو `[Assumption]` أو `[Unresolved]`** |
|
|
50
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. أي ميزة بحالة `Undefined` ← توقف<br>2. ميزة `In Scope` بدون أولوية ← توقف<br>3. ميزة تعتمد على أخرى معلقة ← توقف<br>4. P1 > الميزانية بدون قرار Majed ← توقف<br>5. **أي ميزة `In Scope` موسومة بـ `[Research Hint]` أو `[Assumption]` أو `[Unresolved]` ← توقف — يجب ترقية الوسم إلى `[Confirmed by Majed]`** ← **MR1** |
|
|
51
|
+
| **الإخراج الإلزامي** | `FEATURE_LIST.md` محدّثة ومكتملة (كل الميزات: حالة + أولوية + وسم A.6.4) + `CLIENT_DECISION_LOG.md` محدّث |
|
|
52
|
+
| **هل يمنع الانتقال؟** | **نعم** — لا يمكن إنتاج `DRAFT_QUOTATION.md` قبل PASS |
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## B.4 Quotation Readiness Gate — بوابة جاهزية التسعير
|
|
57
|
+
|
|
58
|
+
| البند | التفاصيل |
|
|
59
|
+
|-------|----------|
|
|
60
|
+
| **الاسم** | Quotation Readiness Gate |
|
|
61
|
+
| **الهدف** | التأكد من اكتمال جميع متطلبات التسعير قبل إنتاج `DRAFT_QUOTATION.md` (Level 2) — منع القفز إلى التسعير دون اكتمال الأساسيات |
|
|
62
|
+
| **المدخلات المطلوبة** | `CLIENT_INTAKE.md`, `DISCOVERY_COVERAGE_SUMMARY.md` (مع قرار البوابة), `FEATURE_LIST.md` (بعد Reconciliation — جميع العناصر موسومة بـ `[Confirmed by Majed]`), `CLIENT_DECISION_LOG.md`, قائمة TeraPricingPolicy.md §2 (10 بنود تسعيرية), `TeraPricingCalculator.xlsx` (للجاهزية) |
|
|
63
|
+
| **شروط النجاح** | 1. Understanding Summary confirmed by Majed<br>2. Discovery Coverage Gate = PASS (B.1)<br>3. Final Scope Reconciliation Gate = PASS (B.3)<br>4. Budget-to-Scope Control Rule documented (B.2)<br>5. معلومات التسعير الأساسية كاملة (حسب TeraPricingPolicy.md §2 — 10 بنود)<br>6. جميع الافتراضات عالية الخطورة (High-risk) محلولة أو موثقة وواضحة لـ Majed ← **MR2**<br>7. **جميع عناصر النطاق والتسعير موسومة بـ `[Confirmed by Majed]` — لا `[Research Hint]` ولا `[Assumption]` ولا `[Unresolved]`** ← **MR1** |
|
|
64
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. Understanding Summary غير مؤكد أو لم يؤكده Majed ← توقف<br>2. Discovery Coverage Gate ≠ PASS ← توقف<br>3. Final Scope Reconciliation Gate ≠ PASS ← توقف<br>4. Budget-to-Scope غير موثق ← توقف<br>5. أي معلومة تسعيرية أساسية ناقصة (من TeraPricingPolicy.md §2) ← توقف<br>6. أي افتراض High-risk غير محسوم ← توقف ← **MR2**<br>7. **أي عنصر تسعير مبني على `[Research Hint]` أو `[Assumption]` ← توقف — يجب ترقية الوسم إلى `[Confirmed by Majed]`** ← **MR1** |
|
|
65
|
+
| **الإخراج الإلزامي** | تقرير **PASS/FAIL** + قائمة **Blocking Gaps** (الفجوات المانعة) إذا كان FAIL |
|
|
66
|
+
| **هل يمنع الانتقال؟** | **نعم** — لا يمكن إنتاج `DRAFT_QUOTATION.md` قبل PASS |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## B.5 CLIENT_DECISION_LOG.md — سجل قرارات العميل
|
|
71
|
+
|
|
72
|
+
| البند | التفاصيل |
|
|
73
|
+
|-------|----------|
|
|
74
|
+
| **الاسم** | CLIENT_DECISION_LOG.md |
|
|
75
|
+
| **الهدف** | توثيق كل قرار يُتخذ أثناء دورة حياة العميل — تغييرات النطاق، تعديلات السعر، تحولات الأولوية — في سجل واحد قابل للتتبع |
|
|
76
|
+
| **المدخلات المطلوبة** | القرارات الصادرة عن Majed أو العميل خلال كل مرحلة من تدفق العمل |
|
|
77
|
+
| **شروط النجاح** | 1. كل إدخال يحتوي على: Decision ID \| Date \| Topic \| Decision \| Rationale \| Status \| Source<br>2. جميع القرارات مسجلة فور حدوثها — لا تأجيل<br>3. قبل Tera Handoff: كل الإدخالات بحالة `Approved` أو `Deferred` — صفر `Pending Approval` |
|
|
78
|
+
| **الحالات المسموحة** | `Approved` (تم الاعتماد) \| `Deferred` (أُجّل) \| `Conditional` (معلق على شرط) \| `Pending Approval` (بانتظار الاعتماد) |
|
|
79
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. أي إدخال بحالة `Pending Approval` عند Tera Handoff ← يمنع PASS في B.7a (Handoff Draft Readiness) و B.7b (Final Handoff Package) ← **MR3**<br>2. قرار تغيير نطاق أو سعر غير موثق ← يعتبر مخالفة |
|
|
80
|
+
| **الإخراج الإلزامي** | `CLIENT_DECISION_LOG.md` محدّث باستمرار |
|
|
81
|
+
| **هل يمنع الانتقال؟** | **نعم** — بشكل غير مباشر: يمنع Tera Handoff إذا بقي أي إدخال `Pending Approval` |
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## B.6a Source Approval Consistency — فحص اتساق المصادر (قبل الحزمة)
|
|
86
|
+
|
|
87
|
+
| البند | التفاصيل |
|
|
88
|
+
|-------|----------|
|
|
89
|
+
| **الاسم** | Source Approval Consistency Check |
|
|
90
|
+
| **الهدف** | التأكد من أن جميع وثائق المصدر جاهزة ومعتمدة **قبل** صياغة `TERA_HANDOFF_PACKAGE.md` — لا يُذكر الحزمة لأنها لم تُنتج بعد |
|
|
91
|
+
| **المدخلات المطلوبة** | `CLIENT_INTAKE.md`, `SCOPE_SUMMARY.md`, `FEATURE_LIST.md`, `DRAFT_QUOTATION.md`, `CLIENT_DECISION_LOG.md`, `CHANGE_REQUEST_LOG.md`, `CLIENT_BRIEF.md` |
|
|
92
|
+
| **شروط النجاح** | 1. **لا مستندات عالقة:** لا يوجد مستند `Draft` يجب أن يكون `Approved`<br>2. **القرارات محسومة:** CLIENT_DECISION_LOG.md: 0 `Pending Approval`<br>3. **اتساق النطاق:** SCOPE_SUMMARY.md متطابق مع FEATURE_LIST.md — لا ميزات يتيمة<br>4. **اتساق السعر:** DRAFT_QUOTATION.md متوافق مع النطاق والميزات الموثقة<br>5. **حسم طلبات التغيير:** جميع CHANGE_REQUEST_LOG.md محسومة (Approved/Rejected/Deferred) |
|
|
93
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. أي مستند مصدر بحالة `Draft` ويتطلب `Approved` ← توقف<br>2. أي قرار بحالة `Pending Approval` ← توقف<br>3. SCOPE_SUMMARY.md لا يتطابق مع FEATURE_LIST.md ← توقف<br>4. CHANGE_REQUEST غير محسوم ← توقف |
|
|
94
|
+
| **الإخراج الإلزامي** | تقرير **PASS/FAIL** مع قائمة الاختبارات الراسبة. عند PASS فقط يُسمح بصياغة `TERA_HANDOFF_PACKAGE.md` كمسودة أولية |
|
|
95
|
+
| **هل يمنع الانتقال؟** | **نعم** — يمنع إنتاج مسودة `TERA_HANDOFF_PACKAGE.md` |
|
|
96
|
+
|
|
97
|
+
## B.6b Package Approval Consistency — فحص اتساق الحزمة (بعد الحزمة)
|
|
98
|
+
|
|
99
|
+
| البند | التفاصيل |
|
|
100
|
+
|-------|----------|
|
|
101
|
+
| **الاسم** | Package Approval Consistency Check |
|
|
102
|
+
| **الهدف** | التأكد من أن حالة `TERA_HANDOFF_PACKAGE.md` متسقة مع مصادرها — لا يمكن أن تكون الحزمة `Approved` إذا كان أي مصدر لا يزال `Draft` أو `Pending Approval` |
|
|
103
|
+
| **المدخلات المطلوبة** | `TERA_HANDOFF_PACKAGE.md`, `CLIENT_INTAKE.md`, `SCOPE_SUMMARY.md`, `FEATURE_LIST.md`, `DRAFT_QUOTATION.md`, `CLIENT_DECISION_LOG.md`, `CHANGE_REQUEST_LOG.md` |
|
|
104
|
+
| **شروط النجاح** | 1. **اتساق الحالة:** TERA_HANDOFF_PACKAGE.md تأخذ أقل حالة من جميع المصادر — إذا أي مصدر `Draft` أو `Pending`، فالحزمة لا يمكن أن تكون `Approved`<br>2. **جميع المصادر معتمدة:** لا يوجد مصدر بحالة `Draft` يتطلب `Approved` |
|
|
105
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. TERA_HANDOFF_PACKAGE.md بحالة أعلى من أقل مصدر (مثلاً الحزمة `Approved` وأحد المصادر `Draft`) ← توقف |
|
|
106
|
+
| **الإخراج الإلزامي** | تقرير **PASS/FAIL**. عند PASS فقط يمكن إعلان `TERA_HANDOFF_PACKAGE.md` كـ `Approved` وجاهزة للتسليم |
|
|
107
|
+
| **هل يمنع الانتقال؟** | **نعم** — يمنع تسليم `TERA_HANDOFF_PACKAGE.md` النهائية |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## B.7a Handoff Draft Readiness Gate — بوابة جاهزية مسودة الهاندوف
|
|
112
|
+
|
|
113
|
+
| البند | التفاصيل |
|
|
114
|
+
|-------|----------|
|
|
115
|
+
| **الاسم** | Handoff Draft Readiness Gate |
|
|
116
|
+
| **الهدف** | التأكد من اكتمال جميع المتطلبات المسبقة للهاندوف **قبل** صياغة `TERA_HANDOFF_PACKAGE.md` — منع إنتاج حزمة على أساس غير مكتمل |
|
|
117
|
+
| **المدخلات المطلوبة** | `CLIENT_INTAKE.md`, `SCOPE_SUMMARY.md`, `FEATURE_LIST.md`, `DRAFT_QUOTATION.md`, `CLIENT_DECISION_LOG.md`, `CHANGE_REQUEST_LOG.md`, `CLIENT_BRIEF.md` |
|
|
118
|
+
| **شروط النجاح** | 1. Source Approval Consistency = PASS (B.6a)<br>2. Quotation Readiness Gate = PASS (B.4)<br>3. Final Scope Reconciliation = PASS (B.3)<br>4. Budget-to-Scope documented (B.2)<br>5. CLIENT_DECISION_LOG.md: صفر `Pending Approval` ← **MR3**<br>6. Quotation معتمد من Majed (Level 2 Approved)<br>7. جميع CHANGE_REQUEST_LOG.md محسومة<br>8. Workspace Plan confirmed by Majed (المسار المتوقع: `clients/CLIENT-NAME/applications/APP-NAME/`، الاسم الرسمي، والهيكل المتوقع) — تخطيط فقط لا إنشاء مجلدات |
|
|
119
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. Source Approval Consistency = FAIL ← توقف<br>2. أي قرار `Pending Approval` ← توقف ← **MR3**<br>3. Level 2 Quotation غير معتمد من Majed ← توقف<br>4. CHANGE_REQUEST غير محسوم ← توقف<br>5. Workspace Plan غير مؤكد من Majed ← توقف |
|
|
120
|
+
| **الإخراج الإلزامي** | تقرير **PASS/FAIL** + قائمة **Blocking Gaps** عند FAIL. عند PASS: يُسمح بإنتاج `TERA_HANDOFF_PACKAGE.md` كمسودة أولية |
|
|
121
|
+
| **هل يمنع الانتقال؟** | **نعم** — لا يمكن إنتاج `TERA_HANDOFF_PACKAGE.md` قبل PASS |
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## B.7b Final Handoff Package Gate — بوابة الحزمة النهائية للهاندوف
|
|
126
|
+
|
|
127
|
+
| البند | التفاصيل |
|
|
128
|
+
|-------|----------|
|
|
129
|
+
| **الاسم** | Final Handoff Package Gate |
|
|
130
|
+
| **الهدف** | التأكد من أن `TERA_HANDOFF_PACKAGE.md` نفسها مكتملة ومتسقة وجاهزة للتسليم إلى ApplicationBlueprintAgent (مُهندس) — SCP-2026-07-28-118: مُهندس هو المستلم الإلزامي؛ TeraAgent يستلم لاحقاً من مُهندس |
|
|
131
|
+
| **المدخلات المطلوبة** | `TERA_HANDOFF_PACKAGE.md`, `CLIENT_INTAKE.md`, `SCOPE_SUMMARY.md`, `FEATURE_LIST.md`, `DRAFT_QUOTATION.md`, `CLIENT_DECISION_LOG.md`, `CHANGE_REQUEST_LOG.md`, Workspace Plan المعتمد من Majed (تخطيط فقط — لا إنشاء مجلدات) |
|
|
132
|
+
| **شروط النجاح** | 1. `TERA_HANDOFF_PACKAGE.md` تحتوي على جميع الوثائق الأساسية: CLIENT_BRIEF أو SCOPE_SUMMARY + FEATURE_LIST + DRAFT_QUOTATION + CLIENT_DECISION_LOG + CHANGE_REQUEST_LOG<br>2. **جميع العناصر في حزمة الهاندوف موسومة بـ `[Confirmed by Majed]` — لا `[Research Hint]` ولا `[Assumption]` ولا `[Unresolved]`** ← **MR1**<br>3. الحزمة متسقة مع المصادر (CLIENT_INTAKE.md, SCOPE_SUMMARY.md, FEATURE_LIST.md, DRAFT_QUOTATION.md)<br>4. جميع إدخالات CLIENT_DECISION_LOG.md منعكسة في الحزمة<br>5. Package Approval Consistency = PASS (B.6b)<br>6. **Final Consistency Check = PASS** (SCP-2026-08-15-010):<br> (أ) **عدّاد القرارات:** العدد المذكور في CLIENT_INTAKE / DISCOVERY_COVERAGE_SUMMARY / TERA_HANDOFF_PACKAGE يطابق آخر `D-###` فعلي في CLIENT_DECISION_LOG.md<br> (ب) **تصنيف النطاق:** لا متطلب `Required`/`Must` في القرارات مصنف كـ `◉ Optional` في قائمة الميزات — كل Required → `✅ Included \| Essential`<br> (ج) **بقايا المصطلحات:** لا صيغ/أسماء قديمة بعد أي Normalization (فحص الأنماط)<br> (د) **المراجع:** كل `D-###` مُشار إليه في الحزمة موجود فعلياً في CLIENT_DECISION_LOG.md<br> *الأوامر شبه الآلية:* انظر قسم "Final Consistency Check Commands" أدناه |
|
|
133
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. أي وثيقة أساسية ناقصة من `TERA_HANDOFF_PACKAGE.md` ← توقف<br>2. **أي عنصر موسوم بـ `[Research Hint]` أو `[Assumption]` أو `[Unresolved]` داخل الحزمة ← توقف — يجب أن يكون `[Confirmed by Majed]`** ← **MR1**<br>3. عدم اتساق بين الحزمة والمصادر ← توقف<br>4. Package Approval Consistency = FAIL (B.6b) ← توقف<br>5. **Final Consistency Check = FAIL ← توقف — لا تُرفع TERA_HANDOFF_PACKAGE.md إلى Approved قبل التصحيح** (SCP-2026-08-15-010) |
|
|
134
|
+
| **الإخراج الإلزامي** | تقرير **PASS/FAIL** + قائمة **Blocking Gaps** عند FAIL. عند PASS: `TERA_HANDOFF_PACKAGE.md` جاهز للتسليم إلى ApplicationBlueprintAgent |
|
|
135
|
+
| **هل يمنع الانتقال؟** | **نعم** — لا يمكن تسليم الحزمة إلى ApplicationBlueprintAgent أو TeraAgent قبل PASS |
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## B.7c Final Consistency Check Commands — أوامر الفحص شبه الآلي (SCP-2026-08-15-010)
|
|
140
|
+
|
|
141
|
+
> **مبدأ التصميم:** الفحص أوامر قابلة للتشغيل تنتج نتيجة `PASS/FAIL` — لا يُحوَّل إلى Checklist يدوي طويل على TCEA.
|
|
142
|
+
> تُشغَّل على ملفات الحزمة قبل رفع `TERA_HANDOFF_PACKAGE.md` إلى `Approved` (ضمن B.7b شرط 6).
|
|
143
|
+
|
|
144
|
+
```powershell
|
|
145
|
+
# (أ) عدّاد القرارات: عدد أسطر "| D-" في السجل — قارنه بالأرقام المذكورة في الملفات الثلاثة
|
|
146
|
+
(Select-String -Path CLIENT_DECISION_LOG.md -Pattern '^\| D-\d+').Count
|
|
147
|
+
Select-String -Path CLIENT_INTAKE.md, DISCOVERY_COVERAGE_SUMMARY.md, TERA_HANDOFF_PACKAGE.md -Pattern '\d+ قرار'
|
|
148
|
+
|
|
149
|
+
# (ب) تصنيف النطاق: أي سطر Optional في قائمة الميزات — تحقق أن صاحبه ليس Required في القرارات
|
|
150
|
+
Select-String -Path TERA_HANDOFF_PACKAGE.md -Pattern '◉ Optional'
|
|
151
|
+
|
|
152
|
+
# (ج) بقايا المصطلحات: أنماط الأسماء/الصيغ القديمة بعد Normalization
|
|
153
|
+
Select-String -Path CLIENT_INTAKE.md, CLIENT_DECISION_LOG.md, TERA_HANDOFF_PACKAGE.md -Pattern '<أنماط الأسماء القديمة>'
|
|
154
|
+
|
|
155
|
+
# (د) المراجع: كل D-### في الحزمة — تحقق وجودها في السجل
|
|
156
|
+
Select-String -Path TERA_HANDOFF_PACKAGE.md -Pattern 'D-\d{3}' | ForEach-Object { $_.Matches.Value } | Sort-Object -Unique
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**القاعدة:** كل فحص يعيد `PASS` عند عدم وجود مشكلة، و`FAIL` عند وجودها (مع سطر النتيجة في `TERA_RUNTIME_TEMPLATES_PREPARATION.md §36 — §11`).
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Workspace Verification — التحقق من مساحة العمل
|
|
164
|
+
|
|
165
|
+
> هذا فحص خفيف بعد إنشاء المجلدات — ليس بوابة انتقال بين Modes، ولا يحتاج PASS/FAIL رسمي.
|
|
166
|
+
|
|
167
|
+
| البند | التفاصيل |
|
|
168
|
+
|-------|----------|
|
|
169
|
+
| **التوقيت** | بعد إنشاء مساحة العمل فعلياً (بعد PASS B.7b + موافقة Majed) |
|
|
170
|
+
| **الهدف** | التأكد من أن هيكل المجلدات قد أُنشئ بشكل صحيح وفق Workspace Plan، قبل وضع الملفات والتسليم |
|
|
171
|
+
| **قائمة التحقق** | 1. المجلد الرئيسي `clients/CLIENT-NAME/` موجود<br>2. المجلد `applications/APP-NAME/` موجود<br>3. المجلد `client-engagement/` موجود داخل APPLICATION<br>4. جميع المسارات تطابق Workspace Plan المعتمد من Majed |
|
|
172
|
+
| **عند الفشل** | أعلم Majed وأعد إنشاء الهيكل المفقود — هذا الفحص لا يمنع التسليم، لكن الهيكل الناقص يُبلغ عنه |
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 🅱️ Track B Gates — بوابات مسار المنتجات الجاهزة
|
|
177
|
+
|
|
178
|
+
> هذه البوابات خاصة بـ **Track B (Product Implementation)** فقط. لكل مرحلة من B1 إلى B6 بوابة تمنع الانتقال إلى المرحلة التالية قبل PASS.
|
|
179
|
+
>
|
|
180
|
+
> **ملاحظة:** B4–B6 يديرها TeraAgent تقنياً — لكن TCEA يراقب جودة التنسيق والتسليم من جانب الزبون.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
### PB.1 Product Discovery Gate — بوابة اكتشاف المنتج
|
|
185
|
+
|
|
186
|
+
| البند | التفاصيل |
|
|
187
|
+
|-------|----------|
|
|
188
|
+
| **الاسم** | Product Discovery Gate |
|
|
189
|
+
| **الهدف** | ضمان اكتمال فهم احتياجات الزبون الأساسية واستلام معلومات المنتج من Majed قبل الانتقال إلى Fit-Gap Analysis |
|
|
190
|
+
| **المدخلات المطلوبة** | `PRODUCT_DISCOVERY_SUMMARY.md`, `PRODUCT_DEMO_SCRIPT.md`, كتالوج المنتج من Majed |
|
|
191
|
+
| **شروط النجاح** | 1. PRODUCT_DISCOVERY_SUMMARY.md يحتوي: اسم العميل، المنتج المستهدف، الاحتياجات الأساسية، الميزانية الأولية<br>2. PRODUCT_DEMO_SCRIPT.md جاهز<br>3. معلومات المنتج مستلمة من Majed (اسم، Feature Matrix، Pricing)<br>4. الـ Demo قُدّم للزبون (أو مجدول) |
|
|
192
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. لم يستلم TCEA معلومات المنتج من Majed ← توقف — اسأل Majed<br>2. PRODUCT_DISCOVERY_SUMMARY.md غير مكتمل ← توقف<br>3. Product Demo لم يُقدّم ← تنبيه (لا يمنع، لكن يُفضّل إكماله) |
|
|
193
|
+
| **الإخراج الإلزامي** | **PASS/FAIL** — عند PASS: الانتقال إلى Phase B2 (Fit-Gap) |
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
### PB.2 Fit-Gap Coverage Gate — بوابة تغطية تحليل الفجوة
|
|
198
|
+
|
|
199
|
+
| البند | التفاصيل |
|
|
200
|
+
|-------|----------|
|
|
201
|
+
| **الاسم** | Fit-Gap Coverage Gate |
|
|
202
|
+
| **الهدف** | ضمان اكتمال Fit-Gap Analysis لكل متطلبات الزبون قبل الانتقال إلى Solution Blueprint والتسعير |
|
|
203
|
+
| **المدخلات المطلوبة** | `FIT_GAP_MATRIX.md`, `RICEFW_INVENTORY.md`, `PRODUCT_DISCOVERY_SUMMARY.md` |
|
|
204
|
+
| **شروط النجاح** | 1. FIT_GAP_MATRIX.md يغطي جميع المتطلبات الأساسية (Must-have كحد أدنى)<br>2. كل مطلب مصنف: Fit / Gap-Config / Gap-Custom / Process Change<br>3. كل Gap-Custom له Business Case مبدئي<br>4. MoSCoW أولويات محددة لجميع المتطلبات<br>5. RICEFW_INVENTORY.md يحتوي كل Gap-Custom |
|
|
205
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. أي Must-have غير مصنّف ← توقف<br>2. Gap-Custom بدون Business Case ← توقف |
|
|
206
|
+
| **الإخراج الإلزامي** | **PASS/FAIL** — عند PASS: الانتقال إلى Phase B3 (Solution Blueprint & Pricing) |
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
### PB.3 Solution Blueprint Gate — بوابة التصميم والتسعير
|
|
211
|
+
|
|
212
|
+
| البند | التفاصيل |
|
|
213
|
+
|-------|----------|
|
|
214
|
+
| **الاسم** | Solution Blueprint Gate |
|
|
215
|
+
| **الهدف** | ضمان اكتمال التصميم والتسعير قبل Handoff إلى TeraAgent للتنفيذ التقني |
|
|
216
|
+
| **المدخلات المطلوبة** | `SOLUTION_BLUEPRINT.md`, `PRODUCT_QUOTATION.md`, `FIT_GAP_MATRIX.md` |
|
|
217
|
+
| **شروط النجاح** | 1. SOLUTION_BLUEPRINT.md يحتوي: To-Be Business Process, Data Migration Plan, Integration Architecture<br>2. PRODUCT_QUOTATION.md جاهزة ومعتمدة من Majed<br>3. جميع Gap-Custum في RICEFW_INVENTORY.md مسعّرة<br>4. PRODUCT_IMPLEMENTATION_HANDOFF.md مسودة أولية جاهزة |
|
|
218
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. PRODUCT_QUOTATION.md غير معتمدة من Majed ← توقف<br>2. SOLUTION_BLUEPRINT.md لا يغطي جميع Gap-Custom المعتمدة ← توقف |
|
|
219
|
+
| **الإخراج الإلزامي** | **PASS/FAIL** + PRODUCT_IMPLEMENTATION_HANDOFF.md. عند PASS: Handoff إلى TeraAgent |
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
### PB.4 Configuration Readiness Gate — بوابة جاهزية التكوين
|
|
224
|
+
|
|
225
|
+
| البند | التفاصيل |
|
|
226
|
+
|-------|----------|
|
|
227
|
+
| **الاسم** | Configuration Readiness Gate |
|
|
228
|
+
| **الهدف** | ضمان اكتمال التكوين والاختبار قبل الانتقال إلى Go-Live ⚡ TeraAgent مسؤول عنها تقنياً |
|
|
229
|
+
| **المدخلات المطلوبة** | `CONFIG_WORKBOOK.md`, `DATA_MIGRATION_PLAN.md`, تقارير اختبار (Unit + Integration) |
|
|
230
|
+
| **شروط النجاح** | 1. CONFIG_WORKBOOK.md — جميع التكوينات مطبّقة وموثّقة<br>2. DATA_MIGRATION_PLAN.md — خطة ترحيل معتمدة<br>3. اختبارات الوحدة والتكامل — PASS (من TeraAgent)<br>4. TCEA يؤكد: لا توجد مشاكل معلقة من جانب الزبون |
|
|
231
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. CONFIG_WORKBOOK.md غير مكتمل ← توقف<br>2. اختبارات FAIL معلقة ← توقف<br>3. الزبون لم يؤكد استعدادية البيانات للترحيل ← تنبيه |
|
|
232
|
+
| **الإخراج الإلزامي** | **PASS/FAIL** — ⚡ يُنفذ بواسطة TeraAgent، TCEA يتحقق من تنسيق الزبون |
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
### PB.5 Go-Live Readiness Gate — بوابة جاهزية الإطلاق
|
|
237
|
+
|
|
238
|
+
| البند | التفاصيل |
|
|
239
|
+
|-------|----------|
|
|
240
|
+
| **الاسم** | Go-Live Readiness Gate |
|
|
241
|
+
| **الهدف** | ضمان اكتمال التدريب وترحيل البيانات وUAT قبل الإطلاق الفعلي |
|
|
242
|
+
| **المدخلات المطلوبة** | `TRAINING_PLAN.md`, `CUTOVER_PLAN.md`, تقرير UAT (من الزبون) |
|
|
243
|
+
| **شروط النجاح** | 1. TRAINING_PLAN.md — المستخدمون مدربون<br>2. CUTOVER_PLAN.md — خطة الانتقال معتمدة من Majed والزبون<br>3. UAT معتمد من الزبون (Acceptance Signed)<br>4. Data Migration — Mock Migration PASS |
|
|
244
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. UAT غير معتمد ← توقف<br>2. المستخدمون غير مدربين ← توقف<br>3. Mock Migration FAIL ← توقف |
|
|
245
|
+
| **الإخراج الإلزامي** | **PASS/FAIL** — عند PASS: الإذن بالإطلاق (Go-Live) |
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
### PB.6 Hypercare Handoff Gate — بوابة إنهاء الدعم المكثف
|
|
250
|
+
|
|
251
|
+
| البند | التفاصيل |
|
|
252
|
+
|-------|----------|
|
|
253
|
+
| **الاسم** | Hypercare Handoff Gate |
|
|
254
|
+
| **الهدف** | ضمان استقرار النظام بعد الإطلاق قبل تسليمه نهائياً للفريق التشغيلي أو إغلاق المشروع |
|
|
255
|
+
| **المدخلات المطلوبة** | `ISSUE_LOG.md`, `HANDOVER_DOCUMENT.md`, Post-Implementation Review |
|
|
256
|
+
| **شروط النجاح** | 1. ISSUE_LOG.md — لا توجد مشاكل Critical/High مفتوحة<br>2. HANDOVER_DOCUMENT.md — يحتوي: كلمة السر، عناوين الخوادم، جهات الاتصال، إجراءات الصيانة الأساسية<br>3. Post-Implementation Review — أُجريت مع الزبون ووثّقت<br>4. TCEA يؤكد: الزبون راضٍ ولا توجد مشاكل معلقة |
|
|
257
|
+
| **شروط الإيقاف (Blocking Conditions)** | 1. مشاكل Critical/High مفتوحة ← توقف<br>2. HANDOVER_DOCUMENT.md غير مكتمل ← توقف |
|
|
258
|
+
| **الإخراج الإلزامي** | **PASS/FAIL** — عند PASS: إغلاق المشروع أو الانتقال إلى دعم عادي (Retainer) |
|