@tera-system/core 0.2.3 → 0.2.4

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.
Files changed (44) hide show
  1. package/MANIFEST.json +7 -5
  2. package/RELEASES.md +18 -0
  3. package/agents/tera-client-engagement.md +1 -0
  4. package/assets/project-control/TeraPricingCalculator.xlsx +0 -0
  5. package/assets/tera-workshop/client-templates/branding/Discovery Template.html +1187 -0
  6. package/assets/tera-workshop/client-templates/branding/footer.png +0 -0
  7. package/assets/tera-workshop/client-templates/branding/header.png +0 -0
  8. package/assets/tera-workshop/client-templates/branding/letterhead-master-fixed-print.html +361 -0
  9. package/assets/tera-workshop/client-templates/branding/teranoo-logo.png +0 -0
  10. package/assets/tera-workshop/client-templates/commercial/APPLICATION_PROPOSAL_TEMPLATE.md +196 -0
  11. package/assets/tera-workshop/client-templates/commercial/DRAFT_QUOTATION_TEMPLATE.md +101 -0
  12. package/assets/tera-workshop/client-templates/commercial/PROJECT_CHARTER_TEMPLATE.md +123 -0
  13. package/assets/tera-workshop/client-templates/commercial/QUOTATION_TEMPLATE.md +139 -0
  14. package/assets/tera-workshop/client-templates/commercial/SCOPE_OF_WORK_TEMPLATE.md +124 -0
  15. package/assets/tera-workshop/client-templates/commercial/SCOPE_SUMMARY_TEMPLATE.md +106 -0
  16. package/assets/tera-workshop/client-templates/commercial/TECHNICAL_PROPOSAL_TEMPLATE.md +106 -0
  17. package/assets/tera-workshop/client-templates/contractual/CHANGE_REQUEST_FORM.md +83 -0
  18. package/assets/tera-workshop/client-templates/contractual/PROTOTYPE_APPROVAL_LETTER_TEMPLATE.md +91 -0
  19. package/assets/tera-workshop/client-templates/contractual/SLA_TEMPLATE.md +67 -0
  20. package/assets/tera-workshop/client-templates/contractual/SOFTWARE_SERVICES_AGREEMENT_TEMPLATE.md +170 -0
  21. package/assets/tera-workshop/client-templates/contractual/STATUS_REPORT_TEMPLATE.md +84 -0
  22. package/assets/tera-workshop/client-templates/handover/CLIENT_SATISFACTION_SURVEY_TEMPLATE.md +61 -0
  23. package/assets/tera-workshop/client-templates/handover/COMPLETION_CERTIFICATE_TEMPLATE.md +50 -0
  24. package/assets/tera-workshop/client-templates/handover/HANDOVER_REPORT_TEMPLATE.md +80 -0
  25. package/assets/tera-workshop/client-templates/pre-contract/CLIENT_BRIEF_TEMPLATE.md +133 -0
  26. package/assets/tera-workshop/client-templates/pre-contract/CLIENT_INTAKE_FORM.md +92 -0
  27. package/assets/tera-workshop/client-templates/pre-contract/GAP_ANALYSIS_TEMPLATE.md +46 -0
  28. package/assets/tera-workshop/client-templates/pre-contract/MEETING_REPORT_TEMPLATE.md +87 -0
  29. package/assets/tera-workshop/client-templates/pre-contract/NDA_TEMPLATE.md +74 -0
  30. package/assets/tera-workshop/client-templates/pre-contract/RISK_REGISTER_TEMPLATE.md +46 -0
  31. package/assets/tera-workshop/client-templates/pre-contract/USER_PERSONA_MATRIX_TEMPLATE.md +73 -0
  32. package/core/tera-system/AGENT_DEPENDENCY_MAP.md +21 -24
  33. package/core/tera-system/TERA_DISTRIBUTION_POLICY.md +27 -27
  34. package/core/tera-system/TeraArchitectureMap.md +2 -2
  35. package/core/tera-system/TeraClientPolicy.md +2 -2
  36. package/core/tera-system/TeraPolicyMap.md +2 -2
  37. package/core/tera-system/TeraPricingPolicy.md +18 -0
  38. package/core/tera-system/client-helpers/tera-client-engagement-discovery-domains.md +4 -3
  39. package/core/tera-system/runtime/TERA_RUNTIME_TEMPLATES.md +1 -1
  40. package/core/tera-system/runtime/TERA_RUNTIME_TEMPLATES_PREPARATION.md +4 -2
  41. package/core/tera-system/runtime/VERSION_LIFECYCLE_PROTOCOL.md +1 -1
  42. package/package.json +2 -1
  43. package/scripts/build.mjs +2 -0
  44. package/scripts/install.js +4 -0
@@ -0,0 +1,1187 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ar" dir="rtl">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>TCEA 13-Domain Discovery Questionnaire</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com">
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
+ <link href="https://fonts.googleapis.com/css2?family=Cairo:wght@400;600;700;800&display=swap" rel="stylesheet">
10
+ <style>
11
+ :root {
12
+ --bg: #f5f7fb;
13
+ --card: #ffffff;
14
+ --text: #172033;
15
+ --muted: #6b7280;
16
+ --line: #d9e1f0;
17
+ --brand: #3f36d0;
18
+ --brand-2: #1c8df5;
19
+ --shadow: 0 10px 30px rgba(27, 39, 94, 0.08);
20
+ --radius: 18px;
21
+ }
22
+
23
+ * { box-sizing: border-box; }
24
+
25
+ html { scroll-behavior: smooth; }
26
+
27
+ body {
28
+ margin: 0;
29
+ font-family: "Cairo", sans-serif;
30
+ color: var(--text);
31
+ background:
32
+ radial-gradient(circle at top right, rgba(63,54,208,0.06), transparent 22%),
33
+ radial-gradient(circle at top left, rgba(28,141,245,0.06), transparent 18%),
34
+ var(--bg);
35
+ line-height: 1.75;
36
+ }
37
+
38
+ .page {
39
+ width: min(1180px, calc(100% - 32px));
40
+ margin: 24px auto 64px;
41
+ }
42
+
43
+ .hero {
44
+ background: var(--card);
45
+ border: 1px solid var(--line);
46
+ border-radius: 26px;
47
+ overflow: hidden;
48
+ box-shadow: var(--shadow);
49
+ margin-bottom: 20px;
50
+ }
51
+
52
+ .hero img {
53
+ display: block;
54
+ width: 100%;
55
+ height: auto;
56
+ object-fit: cover;
57
+ background: #fff;
58
+ }
59
+
60
+ .hero-content {
61
+ padding: 24px 28px;
62
+ display: grid;
63
+ grid-template-columns: 1.2fr .8fr;
64
+ gap: 18px;
65
+ align-items: start;
66
+ }
67
+
68
+ .title h1 {
69
+ margin: 0 0 6px;
70
+ font-size: 32px;
71
+ line-height: 1.25;
72
+ }
73
+
74
+ .title p {
75
+ margin: 0;
76
+ color: var(--muted);
77
+ font-size: 15px;
78
+ }
79
+
80
+ .meta {
81
+ display: grid;
82
+ grid-template-columns: repeat(2, minmax(0, 1fr));
83
+ gap: 10px;
84
+ }
85
+
86
+ .meta-card {
87
+ border: 1px solid var(--line);
88
+ border-radius: 14px;
89
+ padding: 12px 14px;
90
+ background: linear-gradient(180deg, #fff, #fbfcff);
91
+ }
92
+
93
+ .meta-card strong {
94
+ display: block;
95
+ font-size: 12px;
96
+ color: var(--muted);
97
+ margin-bottom: 4px;
98
+ }
99
+
100
+ .toolbar {
101
+ position: sticky;
102
+ top: 10px;
103
+ z-index: 10;
104
+ display: flex;
105
+ flex-wrap: wrap;
106
+ gap: 10px;
107
+ margin: 0 0 18px;
108
+ padding: 14px;
109
+ background: rgba(255,255,255,0.92);
110
+ backdrop-filter: blur(8px);
111
+ border: 1px solid var(--line);
112
+ border-radius: 18px;
113
+ box-shadow: var(--shadow);
114
+ }
115
+
116
+ .toolbar button {
117
+ border: none;
118
+ border-radius: 12px;
119
+ padding: 11px 16px;
120
+ background: linear-gradient(135deg, var(--brand), var(--brand-2));
121
+ color: #fff;
122
+ font-family: inherit;
123
+ font-weight: 700;
124
+ cursor: pointer;
125
+ }
126
+
127
+ .toolbar button.secondary {
128
+ background: #fff;
129
+ color: var(--text);
130
+ border: 1px solid var(--line);
131
+ }
132
+
133
+ .toolbar .status-note {
134
+ margin-inline-start: auto;
135
+ color: var(--muted);
136
+ font-size: 13px;
137
+ align-self: center;
138
+ }
139
+
140
+ .form-card {
141
+ background: var(--card);
142
+ border: 1px solid var(--line);
143
+ border-radius: 22px;
144
+ padding: 24px;
145
+ box-shadow: var(--shadow);
146
+ margin-bottom: 18px;
147
+ }
148
+
149
+ .intro-grid {
150
+ display: grid;
151
+ grid-template-columns: repeat(2, minmax(0, 1fr));
152
+ gap: 14px;
153
+ }
154
+
155
+ .field {
156
+ display: flex;
157
+ flex-direction: column;
158
+ gap: 6px;
159
+ }
160
+
161
+ .field.full {
162
+ grid-column: 1 / -1;
163
+ }
164
+
165
+ .field label {
166
+ font-weight: 700;
167
+ font-size: 14px;
168
+ }
169
+
170
+ input[type="text"],
171
+ input[type="date"],
172
+ textarea {
173
+ width: 100%;
174
+ border: 1px solid var(--line);
175
+ border-radius: 14px;
176
+ padding: 12px 14px;
177
+ font-family: inherit;
178
+ font-size: 15px;
179
+ color: var(--text);
180
+ background: #fff;
181
+ transition: border-color .2s ease, box-shadow .2s ease;
182
+ }
183
+
184
+ textarea {
185
+ min-height: 112px;
186
+ resize: vertical;
187
+ }
188
+
189
+ input:focus, textarea:focus {
190
+ outline: none;
191
+ border-color: var(--brand);
192
+ box-shadow: 0 0 0 4px rgba(63,54,208,0.10);
193
+ }
194
+
195
+ .section {
196
+ background: var(--card);
197
+ border: 1px solid var(--line);
198
+ border-radius: 22px;
199
+ box-shadow: var(--shadow);
200
+ margin-bottom: 18px;
201
+ overflow: hidden;
202
+ break-inside: avoid;
203
+ }
204
+
205
+ .section-header {
206
+ display: flex;
207
+ align-items: center;
208
+ justify-content: space-between;
209
+ gap: 12px;
210
+ padding: 20px 24px;
211
+ background: linear-gradient(180deg, #ffffff, #fbfcff);
212
+ border-bottom: 1px solid var(--line);
213
+ }
214
+
215
+ .section-header h2 {
216
+ margin: 0;
217
+ font-size: 24px;
218
+ line-height: 1.3;
219
+ }
220
+
221
+ .subtitle {
222
+ color: var(--muted);
223
+ font-weight: 600;
224
+ font-size: 13px;
225
+ }
226
+
227
+ .toggle-btn {
228
+ border: 1px solid var(--line);
229
+ border-radius: 12px;
230
+ padding: 10px 14px;
231
+ background: #fff;
232
+ cursor: pointer;
233
+ font-family: inherit;
234
+ font-weight: 700;
235
+ white-space: nowrap;
236
+ }
237
+
238
+ .section-body {
239
+ padding: 22px 24px 26px;
240
+ }
241
+
242
+ .question-card {
243
+ padding: 16px 0;
244
+ border-bottom: 1px dashed var(--line);
245
+ }
246
+
247
+ .question-card:last-child {
248
+ border-bottom: none;
249
+ padding-bottom: 0;
250
+ }
251
+
252
+ .question-label {
253
+ display: block;
254
+ font-weight: 700;
255
+ margin-bottom: 8px;
256
+ font-size: 16px;
257
+ }
258
+
259
+ .qnum {
260
+ display: inline-flex;
261
+ align-items: center;
262
+ justify-content: center;
263
+ width: 28px;
264
+ height: 28px;
265
+ margin-inline-start: 8px;
266
+ border-radius: 999px;
267
+ color: #fff;
268
+ background: linear-gradient(135deg, var(--brand), var(--brand-2));
269
+ font-size: 13px;
270
+ }
271
+
272
+ .footer-note {
273
+ color: var(--muted);
274
+ text-align: center;
275
+ margin-top: 12px;
276
+ font-size: 13px;
277
+ }
278
+
279
+ @media (max-width: 900px) {
280
+ .hero-content, .intro-grid {
281
+ grid-template-columns: 1fr;
282
+ }
283
+ .toolbar .status-note {
284
+ width: 100%;
285
+ margin-inline-start: 0;
286
+ }
287
+ }
288
+
289
+ @media print {
290
+ body {
291
+ background: #fff;
292
+ }
293
+ .page {
294
+ width: 100%;
295
+ margin: 0;
296
+ }
297
+ .toolbar {
298
+ display: none !important;
299
+ }
300
+ .hero, .form-card, .section {
301
+ box-shadow: none;
302
+ border-color: #cfd6e4;
303
+ }
304
+ .section {
305
+ page-break-inside: avoid;
306
+ }
307
+ textarea, input {
308
+ border-color: #c7cfdf;
309
+ box-shadow: none !important;
310
+ }
311
+ }
312
+ </style>
313
+ </head>
314
+ <body>
315
+ <div class="page">
316
+ <header class="hero">
317
+ <img src="header.png" alt="Teranoo Header">
318
+ <div class="hero-content">
319
+ <div class="title">
320
+ <h1>نموذج Discovery لجمع معلومات العميل</h1>
321
+ <p>TCEA Mandatory 13-Domain Client Discovery Questionnaire</p>
322
+ </div>
323
+ <div class="meta">
324
+ <div class="meta-card">
325
+ <strong>الغرض</strong>
326
+ جمع معلومات المشروع من الزبون بشكل منظم قبل التسعير والتنفيذ
327
+ </div>
328
+ <div class="meta-card">
329
+ <strong>طريقة الاستخدام</strong>
330
+ اطرح الأسئلة على الزبون وسجل الإجابات تحت كل سؤال
331
+ </div>
332
+ <div class="meta-card">
333
+ <strong>نوع النموذج</strong>
334
+ Discovery فقط
335
+ </div>
336
+ <div class="meta-card">
337
+ <strong>الحفظ</strong>
338
+ يمكن حفظ البيانات كملف JSON وإعادة تحميلها
339
+ </div>
340
+ </div>
341
+ </div>
342
+ </header>
343
+
344
+ <div class="toolbar">
345
+ <button type="button" onclick="saveJSON()">حفظ JSON</button>
346
+ <button type="button" class="secondary" onclick="document.getElementById('jsonLoader').click()">تحميل JSON</button>
347
+ <button type="button" class="secondary" onclick="window.print()">طباعة</button>
348
+ <button type="button" class="secondary" onclick="expandAll()">فتح الكل</button>
349
+ <button type="button" class="secondary" onclick="collapseAll()">طي الكل</button>
350
+ <input id="jsonLoader" type="file" accept=".json,application/json" hidden>
351
+ <div class="status-note">حفظ تلقائي محلي مفعّل داخل المتصفح</div>
352
+ </div>
353
+
354
+ <section class="form-card">
355
+ <div class="intro-grid">
356
+ <div class="field">
357
+ <label for="client_name">اسم العميل / الجهة</label>
358
+ <input type="text" id="client_name" data-label="اسم العميل / الجهة">
359
+ </div>
360
+ <div class="field">
361
+ <label for="project_name">اسم المشروع / التطبيق</label>
362
+ <input type="text" id="project_name" data-label="اسم المشروع / التطبيق">
363
+ </div>
364
+ <div class="field">
365
+ <label for="meeting_date">تاريخ الاجتماع</label>
366
+ <input type="date" id="meeting_date" data-label="تاريخ الاجتماع">
367
+ </div>
368
+ <div class="field">
369
+ <label for="contact_name">اسم الشخص المقابل</label>
370
+ <input type="text" id="contact_name" data-label="اسم الشخص المقابل">
371
+ </div>
372
+ <div class="field">
373
+ <label for="contact_role">المنصب / الوظيفة</label>
374
+ <input type="text" id="contact_role" data-label="المنصب / الوظيفة">
375
+ </div>
376
+ <div class="field">
377
+ <label for="prepared_by">أعدّ النموذج بواسطة</label>
378
+ <input type="text" id="prepared_by" data-label="أعدّ النموذج بواسطة">
379
+ </div>
380
+ <div class="field full">
381
+ <label for="general_notes">ملاحظات افتتاحية</label>
382
+ <textarea id="general_notes" data-label="ملاحظات افتتاحية" rows="4" placeholder="سجّل هنا أي ملاحظات عامة قبل بدء الأسئلة..."></textarea>
383
+ </div>
384
+ </div>
385
+ </section>
386
+
387
+
388
+ <section class="section" id="section-business">
389
+ <div class="section-header">
390
+ <div>
391
+ <h2>1) سياق العمل والجدوى</h2>
392
+ <div class="subtitle">Business Context &amp; Value</div>
393
+ </div>
394
+ <button class="toggle-btn" type="button" onclick="toggleSection('business')">طي/فتح</button>
395
+ </div>
396
+ <div class="section-body" id="body-business">
397
+
398
+ <div class="question-card">
399
+ <label for="business_q1" class="question-label"><span class="qnum">1.</span> من هي الجهة أو الشركة؟ وما طبيعة عملها باختصار؟</label>
400
+ <textarea id="business_q1" data-label="من هي الجهة أو الشركة؟ وما طبيعة عملها باختصار؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
401
+ </div>
402
+
403
+ <div class="question-card">
404
+ <label for="business_q2" class="question-label"><span class="qnum">2.</span> ما المشكلة الحقيقية التي تريدون حلها بهذا التطبيق؟</label>
405
+ <textarea id="business_q2" data-label="ما المشكلة الحقيقية التي تريدون حلها بهذا التطبيق؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
406
+ </div>
407
+
408
+ <div class="question-card">
409
+ <label for="business_q3" class="question-label"><span class="qnum">3.</span> لماذا تريدون هذا الحل الآن؟</label>
410
+ <textarea id="business_q3" data-label="لماذا تريدون هذا الحل الآن؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
411
+ </div>
412
+
413
+ <div class="question-card">
414
+ <label for="business_q4" class="question-label"><span class="qnum">4.</span> ما الهدف التجاري أو العملي من التطبيق؟</label>
415
+ <textarea id="business_q4" data-label="ما الهدف التجاري أو العملي من التطبيق؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
416
+ </div>
417
+
418
+ <div class="question-card">
419
+ <label for="business_q5" class="question-label"><span class="qnum">5.</span> ما الفائدة المتوقعة من التطبيق؟ (زيادة الربح، توفير وقت، تقليل أخطاء، أتمتة، تحسين متابعة)</label>
420
+ <textarea id="business_q5" data-label="ما الفائدة المتوقعة من التطبيق؟ (زيادة الربح، توفير وقت، تقليل أخطاء، أتمتة، تحسين متابعة)" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
421
+ </div>
422
+
423
+ <div class="question-card">
424
+ <label for="business_q6" class="question-label"><span class="qnum">6.</span> كيف ستقيسون نجاح التطبيق بعد تشغيله؟</label>
425
+ <textarea id="business_q6" data-label="كيف ستقيسون نجاح التطبيق بعد تشغيله؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
426
+ </div>
427
+
428
+ <div class="question-card">
429
+ <label for="business_q7" class="question-label"><span class="qnum">7.</span> هل يوجد نظام حالي أو ملفات Excel أو طريقة يدوية تعملون بها الآن؟</label>
430
+ <textarea id="business_q7" data-label="هل يوجد نظام حالي أو ملفات Excel أو طريقة يدوية تعملون بها الآن؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
431
+ </div>
432
+
433
+ </div>
434
+ </section>
435
+
436
+ <section class="section" id="section-integrations">
437
+ <div class="section-header">
438
+ <div>
439
+ <h2>2) التكامل والربط الخارجي</h2>
440
+ <div class="subtitle">Integrations &amp; APIs</div>
441
+ </div>
442
+ <button class="toggle-btn" type="button" onclick="toggleSection('integrations')">طي/فتح</button>
443
+ </div>
444
+ <div class="section-body" id="body-integrations">
445
+
446
+ <div class="question-card">
447
+ <label for="integrations_q1" class="question-label"><span class="qnum">1.</span> هل يحتاج التطبيق إلى الربط مع أي نظام أو خدمة خارجية؟</label>
448
+ <textarea id="integrations_q1" data-label="هل يحتاج التطبيق إلى الربط مع أي نظام أو خدمة خارجية؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
449
+ </div>
450
+
451
+ <div class="question-card">
452
+ <label for="integrations_q2" class="question-label"><span class="qnum">2.</span> هل يوجد ربط مطلوب مع بوابة دفع، SMS، WhatsApp، Email، Google Maps، شركات شحن، ERP، نظام محاسبة، أو أي نظام آخر؟</label>
453
+ <textarea id="integrations_q2" data-label="هل يوجد ربط مطلوب مع بوابة دفع، SMS، WhatsApp، Email، Google Maps، شركات شحن، ERP، نظام محاسبة، أو أي نظام آخر؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
454
+ </div>
455
+
456
+ <div class="question-card">
457
+ <label for="integrations_q3" class="question-label"><span class="qnum">3.</span> هل هذه الأنظمة الخارجية تملك API أو وثائق فنية واضحة؟</label>
458
+ <textarea id="integrations_q3" data-label="هل هذه الأنظمة الخارجية تملك API أو وثائق فنية واضحة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
459
+ </div>
460
+
461
+ <div class="question-card">
462
+ <label for="integrations_q4" class="question-label"><span class="qnum">4.</span> من سيزوّدنا بمفاتيح الربط والحسابات المطلوبة؟</label>
463
+ <textarea id="integrations_q4" data-label="من سيزوّدنا بمفاتيح الربط والحسابات المطلوبة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
464
+ </div>
465
+
466
+ <div class="question-card">
467
+ <label for="integrations_q5" class="question-label"><span class="qnum">5.</span> من سيتحمل تكلفة الاشتراكات أو الخدمات الخارجية؟</label>
468
+ <textarea id="integrations_q5" data-label="من سيتحمل تكلفة الاشتراكات أو الخدمات الخارجية؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
469
+ </div>
470
+
471
+ <div class="question-card">
472
+ <label for="integrations_q6" class="question-label"><span class="qnum">6.</span> هل هذه التكاملات مطلوبة داخل المرحلة الأولى أم يمكن تأجيلها؟</label>
473
+ <textarea id="integrations_q6" data-label="هل هذه التكاملات مطلوبة داخل المرحلة الأولى أم يمكن تأجيلها؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
474
+ </div>
475
+
476
+ </div>
477
+ </section>
478
+
479
+ <section class="section" id="section-users">
480
+ <div class="section-header">
481
+ <div>
482
+ <h2>3) المستخدمون والأدوار</h2>
483
+ <div class="subtitle">Users &amp; Roles</div>
484
+ </div>
485
+ <button class="toggle-btn" type="button" onclick="toggleSection('users')">طي/فتح</button>
486
+ </div>
487
+ <div class="section-body" id="body-users">
488
+
489
+ <div class="question-card">
490
+ <label for="users_q1" class="question-label"><span class="qnum">1.</span> من هم المستخدمون الذين سيستخدمون النظام؟</label>
491
+ <textarea id="users_q1" data-label="من هم المستخدمون الذين سيستخدمون النظام؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
492
+ </div>
493
+
494
+ <div class="question-card">
495
+ <label for="users_q2" class="question-label"><span class="qnum">2.</span> ما الأدوار الرئيسية داخل النظام؟</label>
496
+ <textarea id="users_q2" data-label="ما الأدوار الرئيسية داخل النظام؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
497
+ </div>
498
+
499
+ <div class="question-card">
500
+ <label for="users_q3" class="question-label"><span class="qnum">3.</span> ما الذي يستطيع كل دور أن يراه؟</label>
501
+ <textarea id="users_q3" data-label="ما الذي يستطيع كل دور أن يراه؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
502
+ </div>
503
+
504
+ <div class="question-card">
505
+ <label for="users_q4" class="question-label"><span class="qnum">4.</span> ما الذي يستطيع كل دور أن يضيفه أو يعدله أو يحذفه؟</label>
506
+ <textarea id="users_q4" data-label="ما الذي يستطيع كل دور أن يضيفه أو يعدله أو يحذفه؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
507
+ </div>
508
+
509
+ <div class="question-card">
510
+ <label for="users_q5" class="question-label"><span class="qnum">5.</span> من يملك صلاحية الاعتماد أو الرفض أو الإلغاء؟</label>
511
+ <textarea id="users_q5" data-label="من يملك صلاحية الاعتماد أو الرفض أو الإلغاء؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
512
+ </div>
513
+
514
+ <div class="question-card">
515
+ <label for="users_q6" class="question-label"><span class="qnum">6.</span> من يملك أعلى صلاحية في النظام؟</label>
516
+ <textarea id="users_q6" data-label="من يملك أعلى صلاحية في النظام؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
517
+ </div>
518
+
519
+ <div class="question-card">
520
+ <label for="users_q7" class="question-label"><span class="qnum">7.</span> هل الصلاحيات ثابتة أم تريدونها مرنة وقابلة للتعديل مستقبلًا؟</label>
521
+ <textarea id="users_q7" data-label="هل الصلاحيات ثابتة أم تريدونها مرنة وقابلة للتعديل مستقبلًا؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
522
+ </div>
523
+
524
+ </div>
525
+ </section>
526
+
527
+ <section class="section" id="section-workflow">
528
+ <div class="section-header">
529
+ <div>
530
+ <h2>4) سير العمل والعمليات</h2>
531
+ <div class="subtitle">Workflow &amp; Operations</div>
532
+ </div>
533
+ <button class="toggle-btn" type="button" onclick="toggleSection('workflow')">طي/فتح</button>
534
+ </div>
535
+ <div class="section-body" id="body-workflow">
536
+
537
+ <div class="question-card">
538
+ <label for="workflow_q1" class="question-label"><span class="qnum">1.</span> صف لي سير العمل من البداية إلى النهاية.</label>
539
+ <textarea id="workflow_q1" data-label="صف لي سير العمل من البداية إلى النهاية." rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
540
+ </div>
541
+
542
+ <div class="question-card">
543
+ <label for="workflow_q2" class="question-label"><span class="qnum">2.</span> ما المسار الطبيعي أو المثالي للعملية؟</label>
544
+ <textarea id="workflow_q2" data-label="ما المسار الطبيعي أو المثالي للعملية؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
545
+ </div>
546
+
547
+ <div class="question-card">
548
+ <label for="workflow_q3" class="question-label"><span class="qnum">3.</span> ما الحالات التي يمر بها الطلب أو الإجراء؟</label>
549
+ <textarea id="workflow_q3" data-label="ما الحالات التي يمر بها الطلب أو الإجراء؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
550
+ </div>
551
+
552
+ <div class="question-card">
553
+ <label for="workflow_q4" class="question-label"><span class="qnum">4.</span> من ينقل الحالة من مرحلة إلى أخرى؟</label>
554
+ <textarea id="workflow_q4" data-label="من ينقل الحالة من مرحلة إلى أخرى؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
555
+ </div>
556
+
557
+ <div class="question-card">
558
+ <label for="workflow_q5" class="question-label"><span class="qnum">5.</span> هل توجد موافقات أو اعتمادات؟</label>
559
+ <textarea id="workflow_q5" data-label="هل توجد موافقات أو اعتمادات؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
560
+ </div>
561
+
562
+ <div class="question-card">
563
+ <label for="workflow_q6" class="question-label"><span class="qnum">6.</span> ماذا يحدث إذا تم رفض الطلب؟</label>
564
+ <textarea id="workflow_q6" data-label="ماذا يحدث إذا تم رفض الطلب؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
565
+ </div>
566
+
567
+ <div class="question-card">
568
+ <label for="workflow_q7" class="question-label"><span class="qnum">7.</span> ماذا يحدث إذا تم إلغاء الطلب؟</label>
569
+ <textarea id="workflow_q7" data-label="ماذا يحدث إذا تم إلغاء الطلب؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
570
+ </div>
571
+
572
+ <div class="question-card">
573
+ <label for="workflow_q8" class="question-label"><span class="qnum">8.</span> ماذا يحدث إذا كانت البيانات ناقصة أو حدث خطأ؟</label>
574
+ <textarea id="workflow_q8" data-label="ماذا يحدث إذا كانت البيانات ناقصة أو حدث خطأ؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
575
+ </div>
576
+
577
+ <div class="question-card">
578
+ <label for="workflow_q9" class="question-label"><span class="qnum">9.</span> ما الحالات الاستثنائية أو Edge Cases المهمة؟</label>
579
+ <textarea id="workflow_q9" data-label="ما الحالات الاستثنائية أو Edge Cases المهمة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
580
+ </div>
581
+
582
+ </div>
583
+ </section>
584
+
585
+ <section class="section" id="section-scope">
586
+ <div class="section-header">
587
+ <div>
588
+ <h2>5) نطاق العمل والنسخة الأولية</h2>
589
+ <div class="subtitle">Scope &amp; MVP</div>
590
+ </div>
591
+ <button class="toggle-btn" type="button" onclick="toggleSection('scope')">طي/فتح</button>
592
+ </div>
593
+ <div class="section-body" id="body-scope">
594
+
595
+ <div class="question-card">
596
+ <label for="scope_q1" class="question-label"><span class="qnum">1.</span> ما الميزات الأساسية التي يجب أن تعمل في المرحلة الأولى؟</label>
597
+ <textarea id="scope_q1" data-label="ما الميزات الأساسية التي يجب أن تعمل في المرحلة الأولى؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
598
+ </div>
599
+
600
+ <div class="question-card">
601
+ <label for="scope_q2" class="question-label"><span class="qnum">2.</span> ما أقل نسخة يمكن اعتبارها MVP قابلة للتشغيل؟</label>
602
+ <textarea id="scope_q2" data-label="ما أقل نسخة يمكن اعتبارها MVP قابلة للتشغيل؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
603
+ </div>
604
+
605
+ <div class="question-card">
606
+ <label for="scope_q3" class="question-label"><span class="qnum">3.</span> ما الميزات التي يمكن تأجيلها للمرحلة الثانية؟</label>
607
+ <textarea id="scope_q3" data-label="ما الميزات التي يمكن تأجيلها للمرحلة الثانية؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
608
+ </div>
609
+
610
+ <div class="question-card">
611
+ <label for="scope_q4" class="question-label"><span class="qnum">4.</span> ما الأشياء التي تعتبر خارج النطاق تمامًا؟</label>
612
+ <textarea id="scope_q4" data-label="ما الأشياء التي تعتبر خارج النطاق تمامًا؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
613
+ </div>
614
+
615
+ <div class="question-card">
616
+ <label for="scope_q5" class="question-label"><span class="qnum">5.</span> ما الذي يجب توثيقه بوضوح حتى لا يحدث توسع في النطاق لاحقًا؟</label>
617
+ <textarea id="scope_q5" data-label="ما الذي يجب توثيقه بوضوح حتى لا يحدث توسع في النطاق لاحقًا؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
618
+ </div>
619
+
620
+ <div class="question-card">
621
+ <label for="scope_q6" class="question-label"><span class="qnum">6.</span> هل هناك حدود واضحة للنسخة الأولى من المشروع؟</label>
622
+ <textarea id="scope_q6" data-label="هل هناك حدود واضحة للنسخة الأولى من المشروع؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
623
+ </div>
624
+
625
+ </div>
626
+ </section>
627
+
628
+ <section class="section" id="section-data">
629
+ <div class="section-header">
630
+ <div>
631
+ <h2>6) البيانات والمحتوى</h2>
632
+ <div class="subtitle">Data &amp; Content</div>
633
+ </div>
634
+ <button class="toggle-btn" type="button" onclick="toggleSection('data')">طي/فتح</button>
635
+ </div>
636
+ <div class="section-body" id="body-data">
637
+
638
+ <div class="question-card">
639
+ <label for="data_q1" class="question-label"><span class="qnum">1.</span> ما الكيانات أو السجلات الرئيسية داخل النظام؟</label>
640
+ <textarea id="data_q1" data-label="ما الكيانات أو السجلات الرئيسية داخل النظام؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
641
+ </div>
642
+
643
+ <div class="question-card">
644
+ <label for="data_q2" class="question-label"><span class="qnum">2.</span> ما الحقول المطلوبة لكل كيان؟</label>
645
+ <textarea id="data_q2" data-label="ما الحقول المطلوبة لكل كيان؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
646
+ </div>
647
+
648
+ <div class="question-card">
649
+ <label for="data_q3" class="question-label"><span class="qnum">3.</span> ما الحقول الإلزامية وما الحقول الاختيارية؟</label>
650
+ <textarea id="data_q3" data-label="ما الحقول الإلزامية وما الحقول الاختيارية؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
651
+ </div>
652
+
653
+ <div class="question-card">
654
+ <label for="data_q4" class="question-label"><span class="qnum">4.</span> هل توجد قوائم ثابتة مثل: المدن، الأقسام، الأنواع، الحالات؟</label>
655
+ <textarea id="data_q4" data-label="هل توجد قوائم ثابتة مثل: المدن، الأقسام، الأنواع، الحالات؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
656
+ </div>
657
+
658
+ <div class="question-card">
659
+ <label for="data_q5" class="question-label"><span class="qnum">5.</span> من سيدير هذه القوائم الثابتة؟</label>
660
+ <textarea id="data_q5" data-label="من سيدير هذه القوائم الثابتة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
661
+ </div>
662
+
663
+ <div class="question-card">
664
+ <label for="data_q6" class="question-label"><span class="qnum">6.</span> هل توجد بيانات جاهزة نحتاج إلى استيرادها؟</label>
665
+ <textarea id="data_q6" data-label="هل توجد بيانات جاهزة نحتاج إلى استيرادها؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
666
+ </div>
667
+
668
+ <div class="question-card">
669
+ <label for="data_q7" class="question-label"><span class="qnum">7.</span> هل هناك حاجة إلى نقل بيانات من نظام سابق أو ملفات Excel؟</label>
670
+ <textarea id="data_q7" data-label="هل هناك حاجة إلى نقل بيانات من نظام سابق أو ملفات Excel؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
671
+ </div>
672
+
673
+ <div class="question-card">
674
+ <label for="data_q8" class="question-label"><span class="qnum">8.</span> هل تريدون استيراد أو تصدير Excel أو PDF؟</label>
675
+ <textarea id="data_q8" data-label="هل تريدون استيراد أو تصدير Excel أو PDF؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
676
+ </div>
677
+
678
+ <div class="question-card">
679
+ <label for="data_q9" class="question-label"><span class="qnum">9.</span> هل يوجد مرفقات أو صور أو ملفات داخل النظام؟</label>
680
+ <textarea id="data_q9" data-label="هل يوجد مرفقات أو صور أو ملفات داخل النظام؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
681
+ </div>
682
+
683
+ </div>
684
+ </section>
685
+
686
+ <section class="section" id="section-notifications">
687
+ <div class="section-header">
688
+ <div>
689
+ <h2>7) الإشعارات والتنبيهات</h2>
690
+ <div class="subtitle">Notifications Engine</div>
691
+ </div>
692
+ <button class="toggle-btn" type="button" onclick="toggleSection('notifications')">طي/فتح</button>
693
+ </div>
694
+ <div class="section-body" id="body-notifications">
695
+
696
+ <div class="question-card">
697
+ <label for="notifications_q1" class="question-label"><span class="qnum">1.</span> ما الأحداث التي يجب أن ينتج عنها تنبيه؟</label>
698
+ <textarea id="notifications_q1" data-label="ما الأحداث التي يجب أن ينتج عنها تنبيه؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
699
+ </div>
700
+
701
+ <div class="question-card">
702
+ <label for="notifications_q2" class="question-label"><span class="qnum">2.</span> هل يوجد تنبيه عند إنشاء طلب جديد؟</label>
703
+ <textarea id="notifications_q2" data-label="هل يوجد تنبيه عند إنشاء طلب جديد؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
704
+ </div>
705
+
706
+ <div class="question-card">
707
+ <label for="notifications_q3" class="question-label"><span class="qnum">3.</span> هل يوجد تنبيه عند تغيير الحالة؟</label>
708
+ <textarea id="notifications_q3" data-label="هل يوجد تنبيه عند تغيير الحالة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
709
+ </div>
710
+
711
+ <div class="question-card">
712
+ <label for="notifications_q4" class="question-label"><span class="qnum">4.</span> هل يوجد تنبيه عند الاعتماد أو الرفض؟</label>
713
+ <textarea id="notifications_q4" data-label="هل يوجد تنبيه عند الاعتماد أو الرفض؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
714
+ </div>
715
+
716
+ <div class="question-card">
717
+ <label for="notifications_q5" class="question-label"><span class="qnum">5.</span> هل يوجد تنبيه عند التأخير أو عدم المتابعة؟</label>
718
+ <textarea id="notifications_q5" data-label="هل يوجد تنبيه عند التأخير أو عدم المتابعة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
719
+ </div>
720
+
721
+ <div class="question-card">
722
+ <label for="notifications_q6" class="question-label"><span class="qnum">6.</span> ما قنوات الإشعارات المطلوبة؟ (داخل النظام، بريد إلكتروني، SMS، WhatsApp، Push Notifications)</label>
723
+ <textarea id="notifications_q6" data-label="ما قنوات الإشعارات المطلوبة؟ (داخل النظام، بريد إلكتروني، SMS، WhatsApp، Push Notifications)" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
724
+ </div>
725
+
726
+ <div class="question-card">
727
+ <label for="notifications_q7" class="question-label"><span class="qnum">7.</span> هل نصوص الرسائل مهمة ويجب اعتمادها؟</label>
728
+ <textarea id="notifications_q7" data-label="هل نصوص الرسائل مهمة ويجب اعتمادها؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
729
+ </div>
730
+
731
+ <div class="question-card">
732
+ <label for="notifications_q8" class="question-label"><span class="qnum">8.</span> هل الإشعارات مطلوبة في المرحلة الأولى أم يمكن تأجيلها؟</label>
733
+ <textarea id="notifications_q8" data-label="هل الإشعارات مطلوبة في المرحلة الأولى أم يمكن تأجيلها؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
734
+ </div>
735
+
736
+ <div class="question-card">
737
+ <label for="notifications_q9" class="question-label"><span class="qnum">9.</span> هل تحتاج الإشعارات إلى مزود خدمة خارجي وتكلفة إضافية؟</label>
738
+ <textarea id="notifications_q9" data-label="هل تحتاج الإشعارات إلى مزود خدمة خارجي وتكلفة إضافية؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
739
+ </div>
740
+
741
+ </div>
742
+ </section>
743
+
744
+ <section class="section" id="section-screens">
745
+ <div class="section-header">
746
+ <div>
747
+ <h2>8) الشاشات وتجربة المستخدم</h2>
748
+ <div class="subtitle">Screens &amp; UX</div>
749
+ </div>
750
+ <button class="toggle-btn" type="button" onclick="toggleSection('screens')">طي/فتح</button>
751
+ </div>
752
+ <div class="section-body" id="body-screens">
753
+
754
+ <div class="question-card">
755
+ <label for="screens_q1" class="question-label"><span class="qnum">1.</span> ما الشاشات الرئيسية التي تتوقعون وجودها في النظام؟</label>
756
+ <textarea id="screens_q1" data-label="ما الشاشات الرئيسية التي تتوقعون وجودها في النظام؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
757
+ </div>
758
+
759
+ <div class="question-card">
760
+ <label for="screens_q2" class="question-label"><span class="qnum">2.</span> من يرى كل شاشة؟</label>
761
+ <textarea id="screens_q2" data-label="من يرى كل شاشة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
762
+ </div>
763
+
764
+ <div class="question-card">
765
+ <label for="screens_q3" class="question-label"><span class="qnum">3.</span> ما أول شاشة يجب أن تظهر بعد تسجيل الدخول لكل دور؟</label>
766
+ <textarea id="screens_q3" data-label="ما أول شاشة يجب أن تظهر بعد تسجيل الدخول لكل دور؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
767
+ </div>
768
+
769
+ <div class="question-card">
770
+ <label for="screens_q4" class="question-label"><span class="qnum">4.</span> هل الاستخدام الأساسي سيكون على Desktop أو Mobile أو Tablet أو POS أو Kiosk؟</label>
771
+ <textarea id="screens_q4" data-label="هل الاستخدام الأساسي سيكون على Desktop أو Mobile أو Tablet أو POS أو Kiosk؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
772
+ </div>
773
+
774
+ <div class="question-card">
775
+ <label for="screens_q5" class="question-label"><span class="qnum">5.</span> هل تريدون تجربة استخدام بسيطة جدًا أم Dashboard واضح أم نموذج عمل أكثر تفصيلًا؟</label>
776
+ <textarea id="screens_q5" data-label="هل تريدون تجربة استخدام بسيطة جدًا أم Dashboard واضح أم نموذج عمل أكثر تفصيلًا؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
777
+ </div>
778
+
779
+ <div class="question-card">
780
+ <label for="screens_q6" class="question-label"><span class="qnum">6.</span> هل هناك قيود على عدد الخطوات أو سهولة الاستخدام؟</label>
781
+ <textarea id="screens_q6" data-label="هل هناك قيود على عدد الخطوات أو سهولة الاستخدام؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
782
+ </div>
783
+
784
+ <div class="question-card">
785
+ <label for="screens_q7" class="question-label"><span class="qnum">7.</span> هل توجد مشاكل استخدام حالية تريدون تجنبها؟</label>
786
+ <textarea id="screens_q7" data-label="هل توجد مشاكل استخدام حالية تريدون تجنبها؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
787
+ </div>
788
+
789
+ </div>
790
+ </section>
791
+
792
+ <section class="section" id="section-design">
793
+ <div class="section-header">
794
+ <div>
795
+ <h2>9) التصميم والهوية البصرية</h2>
796
+ <div class="subtitle">Design &amp; Branding</div>
797
+ </div>
798
+ <button class="toggle-btn" type="button" onclick="toggleSection('design')">طي/فتح</button>
799
+ </div>
800
+ <div class="section-body" id="body-design">
801
+
802
+ <div class="question-card">
803
+ <label for="design_q1" class="question-label"><span class="qnum">1.</span> هل توجد هوية بصرية جاهزة؟</label>
804
+ <textarea id="design_q1" data-label="هل توجد هوية بصرية جاهزة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
805
+ </div>
806
+
807
+ <div class="question-card">
808
+ <label for="design_q2" class="question-label"><span class="qnum">2.</span> هل يوجد شعار معتمد؟</label>
809
+ <textarea id="design_q2" data-label="هل يوجد شعار معتمد؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
810
+ </div>
811
+
812
+ <div class="question-card">
813
+ <label for="design_q3" class="question-label"><span class="qnum">3.</span> هل توجد ألوان وخطوط محددة يجب الالتزام بها؟</label>
814
+ <textarea id="design_q3" data-label="هل توجد ألوان وخطوط محددة يجب الالتزام بها؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
815
+ </div>
816
+
817
+ <div class="question-card">
818
+ <label for="design_q4" class="question-label"><span class="qnum">4.</span> ما الطابع العام المطلوب للتصميم؟ (رسمي، حديث، بسيط، عملي، فاخر، ترفيهي)</label>
819
+ <textarea id="design_q4" data-label="ما الطابع العام المطلوب للتصميم؟ (رسمي، حديث، بسيط، عملي، فاخر، ترفيهي)" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
820
+ </div>
821
+
822
+ <div class="question-card">
823
+ <label for="design_q5" class="question-label"><span class="qnum">5.</span> هل توجد تطبيقات أو مواقع يحبها العميل ويريد شيئًا قريبًا منها؟</label>
824
+ <textarea id="design_q5" data-label="هل توجد تطبيقات أو مواقع يحبها العميل ويريد شيئًا قريبًا منها؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
825
+ </div>
826
+
827
+ <div class="question-card">
828
+ <label for="design_q6" class="question-label"><span class="qnum">6.</span> هل توجد أمثلة لا يحبها العميل؟</label>
829
+ <textarea id="design_q6" data-label="هل توجد أمثلة لا يحبها العميل؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
830
+ </div>
831
+
832
+ <div class="question-card">
833
+ <label for="design_q7" class="question-label"><span class="qnum">7.</span> هل النظام RTL فقط أم RTL/LTR؟</label>
834
+ <textarea id="design_q7" data-label="هل النظام RTL فقط أم RTL/LTR؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
835
+ </div>
836
+
837
+ <div class="question-card">
838
+ <label for="design_q8" class="question-label"><span class="qnum">8.</span> هل يوجد محتوى بلغتين أو أكثر؟</label>
839
+ <textarea id="design_q8" data-label="هل يوجد محتوى بلغتين أو أكثر؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
840
+ </div>
841
+
842
+ <div class="question-card">
843
+ <label for="design_q9" class="question-label"><span class="qnum">9.</span> هل الترجمة ستكون يدوية أم آلية؟</label>
844
+ <textarea id="design_q9" data-label="هل الترجمة ستكون يدوية أم آلية؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
845
+ </div>
846
+
847
+ <div class="question-card">
848
+ <label for="design_q10" class="question-label"><span class="qnum">10.</span> هل توجد حاجة إلى قالب رسمي للتقارير أو PDF أو الخطابات؟</label>
849
+ <textarea id="design_q10" data-label="هل توجد حاجة إلى قالب رسمي للتقارير أو PDF أو الخطابات؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
850
+ </div>
851
+
852
+ </div>
853
+ </section>
854
+
855
+ <section class="section" id="section-reports">
856
+ <div class="section-header">
857
+ <div>
858
+ <h2>10) التقارير ولوحات التحكم</h2>
859
+ <div class="subtitle">Reports &amp; Dashboards</div>
860
+ </div>
861
+ <button class="toggle-btn" type="button" onclick="toggleSection('reports')">طي/فتح</button>
862
+ </div>
863
+ <div class="section-body" id="body-reports">
864
+
865
+ <div class="question-card">
866
+ <label for="reports_q1" class="question-label"><span class="qnum">1.</span> ما التقارير المطلوبة؟</label>
867
+ <textarea id="reports_q1" data-label="ما التقارير المطلوبة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
868
+ </div>
869
+
870
+ <div class="question-card">
871
+ <label for="reports_q2" class="question-label"><span class="qnum">2.</span> ما المؤشرات المطلوبة في Dashboard؟</label>
872
+ <textarea id="reports_q2" data-label="ما المؤشرات المطلوبة في Dashboard؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
873
+ </div>
874
+
875
+ <div class="question-card">
876
+ <label for="reports_q3" class="question-label"><span class="qnum">3.</span> ما الرسوم البيانية أو Widgets المطلوبة؟</label>
877
+ <textarea id="reports_q3" data-label="ما الرسوم البيانية أو Widgets المطلوبة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
878
+ </div>
879
+
880
+ <div class="question-card">
881
+ <label for="reports_q4" class="question-label"><span class="qnum">4.</span> ما الفلاتر الأساسية المطلوبة؟</label>
882
+ <textarea id="reports_q4" data-label="ما الفلاتر الأساسية المطلوبة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
883
+ </div>
884
+
885
+ <div class="question-card">
886
+ <label for="reports_q5" class="question-label"><span class="qnum">5.</span> هل توجد تقارير مالية أو تشغيلية أو تقارير أداء؟</label>
887
+ <textarea id="reports_q5" data-label="هل توجد تقارير مالية أو تشغيلية أو تقارير أداء؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
888
+ </div>
889
+
890
+ <div class="question-card">
891
+ <label for="reports_q6" class="question-label"><span class="qnum">6.</span> كيف يتم حساب المؤشرات أو المعادلات المهمة؟</label>
892
+ <textarea id="reports_q6" data-label="كيف يتم حساب المؤشرات أو المعادلات المهمة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
893
+ </div>
894
+
895
+ <div class="question-card">
896
+ <label for="reports_q7" class="question-label"><span class="qnum">7.</span> هل توجد تعريفات يجب ضبطها بدقة مثل: التأخير، الإنجاز، الربح، الإغلاق؟</label>
897
+ <textarea id="reports_q7" data-label="هل توجد تعريفات يجب ضبطها بدقة مثل: التأخير، الإنجاز، الربح، الإغلاق؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
898
+ </div>
899
+
900
+ <div class="question-card">
901
+ <label for="reports_q8" class="question-label"><span class="qnum">8.</span> هل يوجد تصدير للتقارير إلى PDF أو Excel؟</label>
902
+ <textarea id="reports_q8" data-label="هل يوجد تصدير للتقارير إلى PDF أو Excel؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
903
+ </div>
904
+
905
+ </div>
906
+ </section>
907
+
908
+ <section class="section" id="section-technical">
909
+ <div class="section-header">
910
+ <div>
911
+ <h2>11) البنية التحتية والتقنية والامتثال</h2>
912
+ <div class="subtitle">Technical, Hosting &amp; Compliance</div>
913
+ </div>
914
+ <button class="toggle-btn" type="button" onclick="toggleSection('technical')">طي/فتح</button>
915
+ </div>
916
+ <div class="section-body" id="body-technical">
917
+
918
+ <div class="question-card">
919
+ <label for="technical_q1" class="question-label"><span class="qnum">1.</span> أين سيتم استضافة النظام؟ (Cloud، On-Premise، VPS، Shared Hosting، غير محدد)</label>
920
+ <textarea id="technical_q1" data-label="أين سيتم استضافة النظام؟ (Cloud، On-Premise، VPS، Shared Hosting، غير محدد)" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
921
+ </div>
922
+
923
+ <div class="question-card">
924
+ <label for="technical_q2" class="question-label"><span class="qnum">2.</span> من سيدير السيرفر أو الاستضافة؟</label>
925
+ <textarea id="technical_q2" data-label="من سيدير السيرفر أو الاستضافة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
926
+ </div>
927
+
928
+ <div class="question-card">
929
+ <label for="technical_q3" class="question-label"><span class="qnum">3.</span> هل يوجد دومين جاهز؟</label>
930
+ <textarea id="technical_q3" data-label="هل يوجد دومين جاهز؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
931
+ </div>
932
+
933
+ <div class="question-card">
934
+ <label for="technical_q4" class="question-label"><span class="qnum">4.</span> إذا كان هناك تطبيق موبايل، هل العميل يمتلك حسابات Google Play و Apple App Store؟</label>
935
+ <textarea id="technical_q4" data-label="إذا كان هناك تطبيق موبايل، هل العميل يمتلك حسابات Google Play و Apple App Store؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
936
+ </div>
937
+
938
+ <div class="question-card">
939
+ <label for="technical_q5" class="question-label"><span class="qnum">5.</span> ما الأجهزة والمتصفحات المستهدفة؟</label>
940
+ <textarea id="technical_q5" data-label="ما الأجهزة والمتصفحات المستهدفة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
941
+ </div>
942
+
943
+ <div class="question-card">
944
+ <label for="technical_q6" class="question-label"><span class="qnum">6.</span> هل توجد متطلبات نسخ احتياطي؟</label>
945
+ <textarea id="technical_q6" data-label="هل توجد متطلبات نسخ احتياطي؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
946
+ </div>
947
+
948
+ <div class="question-card">
949
+ <label for="technical_q7" class="question-label"><span class="qnum">7.</span> أين يجب حفظ النسخ الاحتياطية؟</label>
950
+ <textarea id="technical_q7" data-label="أين يجب حفظ النسخ الاحتياطية؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
951
+ </div>
952
+
953
+ <div class="question-card">
954
+ <label for="technical_q8" class="question-label"><span class="qnum">8.</span> هل توجد متطلبات قانونية أو تنظيمية أو Compliance؟</label>
955
+ <textarea id="technical_q8" data-label="هل توجد متطلبات قانونية أو تنظيمية أو Compliance؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
956
+ </div>
957
+
958
+ <div class="question-card">
959
+ <label for="technical_q9" class="question-label"><span class="qnum">9.</span> هل توجد متطلبات فوترة إلكترونية أو حماية بيانات؟</label>
960
+ <textarea id="technical_q9" data-label="هل توجد متطلبات فوترة إلكترونية أو حماية بيانات؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
961
+ </div>
962
+
963
+ <div class="question-card">
964
+ <label for="technical_q10" class="question-label"><span class="qnum">10.</span> هل توجد قيود تقنية في بيئة العميل؟</label>
965
+ <textarea id="technical_q10" data-label="هل توجد قيود تقنية في بيئة العميل؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
966
+ </div>
967
+
968
+ </div>
969
+ </section>
970
+
971
+ <section class="section" id="section-security">
972
+ <div class="section-header">
973
+ <div>
974
+ <h2>12) الأمان وسجل العمليات</h2>
975
+ <div class="subtitle">Security &amp; Audit</div>
976
+ </div>
977
+ <button class="toggle-btn" type="button" onclick="toggleSection('security')">طي/فتح</button>
978
+ </div>
979
+ <div class="section-body" id="body-security">
980
+
981
+ <div class="question-card">
982
+ <label for="security_q1" class="question-label"><span class="qnum">1.</span> كيف يتم تسجيل الدخول؟ (اسم مستخدم وكلمة مرور، OTP، Social Login، SSO، غير محدد)</label>
983
+ <textarea id="security_q1" data-label="كيف يتم تسجيل الدخول؟ (اسم مستخدم وكلمة مرور، OTP، Social Login، SSO، غير محدد)" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
984
+ </div>
985
+
986
+ <div class="question-card">
987
+ <label for="security_q2" class="question-label"><span class="qnum">2.</span> هل توجد سياسة لكلمات المرور؟</label>
988
+ <textarea id="security_q2" data-label="هل توجد سياسة لكلمات المرور؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
989
+ </div>
990
+
991
+ <div class="question-card">
992
+ <label for="security_q3" class="question-label"><span class="qnum">3.</span> هل تنتهي كلمة المرور بعد مدة أو تحتاج تغيير دوري؟</label>
993
+ <textarea id="security_q3" data-label="هل تنتهي كلمة المرور بعد مدة أو تحتاج تغيير دوري؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
994
+ </div>
995
+
996
+ <div class="question-card">
997
+ <label for="security_q4" class="question-label"><span class="qnum">4.</span> من يضيف المستخدمين ويدير الحسابات؟</label>
998
+ <textarea id="security_q4" data-label="من يضيف المستخدمين ويدير الحسابات؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
999
+ </div>
1000
+
1001
+ <div class="question-card">
1002
+ <label for="security_q5" class="question-label"><span class="qnum">5.</span> هل توجد بيانات حساسة تحتاج حماية خاصة؟</label>
1003
+ <textarea id="security_q5" data-label="هل توجد بيانات حساسة تحتاج حماية خاصة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1004
+ </div>
1005
+
1006
+ <div class="question-card">
1007
+ <label for="security_q6" class="question-label"><span class="qnum">6.</span> هل نحتاج تشفيرًا خاصًا لبعض البيانات؟</label>
1008
+ <textarea id="security_q6" data-label="هل نحتاج تشفيرًا خاصًا لبعض البيانات؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1009
+ </div>
1010
+
1011
+ <div class="question-card">
1012
+ <label for="security_q7" class="question-label"><span class="qnum">7.</span> هل نحتاج Audit Log؟</label>
1013
+ <textarea id="security_q7" data-label="هل نحتاج Audit Log؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1014
+ </div>
1015
+
1016
+ <div class="question-card">
1017
+ <label for="security_q8" class="question-label"><span class="qnum">8.</span> ما العمليات التي يجب تسجيلها في السجل؟ (إضافة، تعديل، حذف، عرض، دخول، خروج)</label>
1018
+ <textarea id="security_q8" data-label="ما العمليات التي يجب تسجيلها في السجل؟ (إضافة، تعديل، حذف، عرض، دخول، خروج)" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1019
+ </div>
1020
+
1021
+ <div class="question-card">
1022
+ <label for="security_q9" class="question-label"><span class="qnum">9.</span> هل نحتاج صلاحيات دقيقة لكل شاشة أو إجراء؟</label>
1023
+ <textarea id="security_q9" data-label="هل نحتاج صلاحيات دقيقة لكل شاشة أو إجراء؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1024
+ </div>
1025
+
1026
+ </div>
1027
+ </section>
1028
+
1029
+ <section class="section" id="section-acceptance">
1030
+ <div class="section-header">
1031
+ <div>
1032
+ <h2>13) معايير القبول والتسليم التجاري</h2>
1033
+ <div class="subtitle">Acceptance, Commercials &amp; Warranty</div>
1034
+ </div>
1035
+ <button class="toggle-btn" type="button" onclick="toggleSection('acceptance')">طي/فتح</button>
1036
+ </div>
1037
+ <div class="section-body" id="body-acceptance">
1038
+
1039
+ <div class="question-card">
1040
+ <label for="acceptance_q1" class="question-label"><span class="qnum">1.</span> ما معايير القبول التي إذا تحققت يعتبر المشروع جاهزًا للتسليم؟</label>
1041
+ <textarea id="acceptance_q1" data-label="ما معايير القبول التي إذا تحققت يعتبر المشروع جاهزًا للتسليم؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1042
+ </div>
1043
+
1044
+ <div class="question-card">
1045
+ <label for="acceptance_q2" class="question-label"><span class="qnum">2.</span> متى يعتبر MVP ناجحًا من وجهة نظركم؟</label>
1046
+ <textarea id="acceptance_q2" data-label="متى يعتبر MVP ناجحًا من وجهة نظركم؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1047
+ </div>
1048
+
1049
+ <div class="question-card">
1050
+ <label for="acceptance_q3" class="question-label"><span class="qnum">3.</span> من هو الشخص المخول رسميًا للاختبار والاعتماد؟</label>
1051
+ <textarea id="acceptance_q3" data-label="من هو الشخص المخول رسميًا للاختبار والاعتماد؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1052
+ </div>
1053
+
1054
+ <div class="question-card">
1055
+ <label for="acceptance_q4" class="question-label"><span class="qnum">4.</span> ما آلية الاختبار المتوقعة؟</label>
1056
+ <textarea id="acceptance_q4" data-label="ما آلية الاختبار المتوقعة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1057
+ </div>
1058
+
1059
+ <div class="question-card">
1060
+ <label for="acceptance_q5" class="question-label"><span class="qnum">5.</span> ما الميزانية التقريبية المرصودة؟</label>
1061
+ <textarea id="acceptance_q5" data-label="ما الميزانية التقريبية المرصودة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1062
+ </div>
1063
+
1064
+ <div class="question-card">
1065
+ <label for="acceptance_q6" class="question-label"><span class="qnum">6.</span> ما الجدول الزمني المستهدف؟</label>
1066
+ <textarea id="acceptance_q6" data-label="ما الجدول الزمني المستهدف؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1067
+ </div>
1068
+
1069
+ <div class="question-card">
1070
+ <label for="acceptance_q7" class="question-label"><span class="qnum">7.</span> ما خطة الدفع المناسبة؟</label>
1071
+ <textarea id="acceptance_q7" data-label="ما خطة الدفع المناسبة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1072
+ </div>
1073
+
1074
+ <div class="question-card">
1075
+ <label for="acceptance_q8" class="question-label"><span class="qnum">8.</span> ما مدة الضمان المطلوبة؟</label>
1076
+ <textarea id="acceptance_q8" data-label="ما مدة الضمان المطلوبة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1077
+ </div>
1078
+
1079
+ <div class="question-card">
1080
+ <label for="acceptance_q9" class="question-label"><span class="qnum">9.</span> ما الذي يشمله الضمان؟</label>
1081
+ <textarea id="acceptance_q9" data-label="ما الذي يشمله الضمان؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1082
+ </div>
1083
+
1084
+ <div class="question-card">
1085
+ <label for="acceptance_q10" class="question-label"><span class="qnum">10.</span> ما الذي لا يشمله الضمان؟</label>
1086
+ <textarea id="acceptance_q10" data-label="ما الذي لا يشمله الضمان؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1087
+ </div>
1088
+
1089
+ <div class="question-card">
1090
+ <label for="acceptance_q11" class="question-label"><span class="qnum">11.</span> ما شكل الدعم والصيانة بعد التسليم؟</label>
1091
+ <textarea id="acceptance_q11" data-label="ما شكل الدعم والصيانة بعد التسليم؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1092
+ </div>
1093
+
1094
+ <div class="question-card">
1095
+ <label for="acceptance_q12" class="question-label"><span class="qnum">12.</span> كيف تريدون التعامل مع طلبات التغيير بعد الاتفاق؟</label>
1096
+ <textarea id="acceptance_q12" data-label="كيف تريدون التعامل مع طلبات التغيير بعد الاتفاق؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1097
+ </div>
1098
+
1099
+ <div class="question-card">
1100
+ <label for="acceptance_q13" class="question-label"><span class="qnum">13.</span> هل تتوقعون أن بعض الطلبات ستضاف لاحقًا كمراحل جديدة؟</label>
1101
+ <textarea id="acceptance_q13" data-label="هل تتوقعون أن بعض الطلبات ستضاف لاحقًا كمراحل جديدة؟" rows="4" placeholder="اكتب الإجابة هنا..."></textarea>
1102
+ </div>
1103
+
1104
+ </div>
1105
+ </section>
1106
+
1107
+
1108
+ <div class="footer-note">تم إعداد هذا النموذج كنسخة HTML احترافية قابلة للتعبئة والتعديل والحفظ.</div>
1109
+ </div>
1110
+
1111
+ <script>
1112
+ const STORAGE_KEY = "tcea_13_domain_discovery_form_v1";
1113
+
1114
+ function collectData() {
1115
+ const fields = document.querySelectorAll("input[id], textarea[id]");
1116
+ const data = {};
1117
+ fields.forEach(field => {
1118
+ data[field.id] = field.value;
1119
+ });
1120
+ return data;
1121
+ }
1122
+
1123
+ function applyData(data) {
1124
+ Object.entries(data || {}).forEach(([id, value]) => {
1125
+ const el = document.getElementById(id);
1126
+ if (el) el.value = value ?? "";
1127
+ });
1128
+ }
1129
+
1130
+ function saveJSON() {
1131
+ const data = collectData();
1132
+ const blob = new Blob([JSON.stringify(data, null, 2)], { type: "application/json" });
1133
+ const a = document.createElement("a");
1134
+ a.href = URL.createObjectURL(blob);
1135
+ a.download = "TCEA_13_Domain_Discovery_Data.json";
1136
+ document.body.appendChild(a);
1137
+ a.click();
1138
+ a.remove();
1139
+ URL.revokeObjectURL(a.href);
1140
+ }
1141
+
1142
+ function autoSave() {
1143
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(collectData()));
1144
+ }
1145
+
1146
+ function restoreAutoSave() {
1147
+ const raw = localStorage.getItem(STORAGE_KEY);
1148
+ if (!raw) return;
1149
+ try {
1150
+ applyData(JSON.parse(raw));
1151
+ } catch (e) {
1152
+ console.warn("Restore failed", e);
1153
+ }
1154
+ }
1155
+
1156
+ function toggleSection(id) {
1157
+ const body = document.getElementById("body-" + id);
1158
+ if (!body) return;
1159
+ body.style.display = body.style.display === "none" ? "block" : "none";
1160
+ }
1161
+
1162
+ function collapseAll() {
1163
+ document.querySelectorAll(".section-body").forEach(el => el.style.display = "none");
1164
+ }
1165
+
1166
+ function expandAll() {
1167
+ document.querySelectorAll(".section-body").forEach(el => el.style.display = "block");
1168
+ }
1169
+
1170
+ document.addEventListener("input", autoSave);
1171
+ document.getElementById("jsonLoader").addEventListener("change", async (event) => {
1172
+ const file = event.target.files?.[0];
1173
+ if (!file) return;
1174
+ const text = await file.text();
1175
+ try {
1176
+ const data = JSON.parse(text);
1177
+ applyData(data);
1178
+ autoSave();
1179
+ } catch {
1180
+ alert("ملف JSON غير صالح.");
1181
+ }
1182
+ });
1183
+
1184
+ restoreAutoSave();
1185
+ </script>
1186
+ </body>
1187
+ </html>