# Sprint &lt;n&gt; — &lt;title&gt;

> اسبرينت مرتّب بالاعتماديات، يجمّع ملفات الخطط أدناه. **قابل للتنفيذ مباشرةً:** شدّ المساعد على هذا الملف ينفّذ الاسبرينت كله.

## ▶ تنفيذ الاسبرينت (في Cursor)
افتح هذا الملف وقل للمساعد:
```
نفّذ هذا الاسبرينت بالكامل (sprints/<n>.md): اقرأ كل ملف خطة في «النطاق» ونفّذه عبر docs/build/* ثم احفظ.
```

> 📋 **لوحة الكانبان (`/kanban`):** كل خطوة تحت تظهر **لايف** على اللوحة. لو التاسكات لسه مش ظاهرة، شغّل `php artisan board:sync` مرة.

**عقد التنفيذ للمساعد:**
0. **اقرا `docs/project/CONTEXT.md` الأول** (الخريطة + اللي اتعمل + الملفات اللي تحاكيها) — اشتغل منه ومن ملفات الخطط؛ **متعملش re-scan للريبو**. حدّث §B فيه بعد الـ DoD.
1. **بوابة الاسبرينت (مرة واحدة):** اعرض «فكّر-الأول» + أي **design pattern** مقترح، واطلب موافقة المطوّر (نعم/لا). لا تطبّق أي pattern قبل الموافقة.
   - بعد الموافقة **وقبل أول خطة**، علّم الاسبرينت **قيد التنفيذ**: `php artisan board:set --sprint=<n> --status=in_progress` (وسيب `/kanban` مفتوح قدامك).
2. **نفّذ الخطط واحدة-واحدة بالترتيب — خطة تخلص بالكامل قبل ما تبدأ اللي بعدها.**
   > 🚫 **ممنوع تمامًا:** تبني أكتر من خطة مع بعض، أو تكتب كود كل الخطط الأول وتعلّم حالاتهم دفعة في الآخر. كارت **واحد** بس بيبقى «قيد التنفيذ» في المرة.

   **loop لكل خطة، بالترتيب — مايبدأش الدور اللي بعده غير لما اللي قبله يخلص:**
   - **(أ)** `php artisan board:set --sprint=<n> --plan=<plan-path> --status=in_progress` — قبل ما تبدأها (الكارت يروح «قيد التنفيذ» لايف، والاسبرينت يتحوّل تلقائيًا).
   - **(ب) ابنِ الخطة دي بالكامل:** **API** → [`../build/build-api.md`](../../build/build-api.md) · **CRUD** → [`../build/build-dashboard-crud.md`](../../build/build-dashboard-crud.md) (مقاد بالخطة، بدون زيادة)، ثم [`build-tests`](../../build/build-tests.md) **لنفس الخطة**.
   - **(ج)** `php artisan board:set --sprint=<n> --plan=<plan-path> --status=done` — بعد ما تعدّي (الكارت يروح «مكتمل» لايف).
   - **(د)** دلوقتي **بس** انتقل للخطة اللي بعدها، وكرّر. (خليك ماشي بترتيب الاعتماديات — الخطوات المترابطة زي verify→set→verify لازم بالترتيب.)
3. **بوابة الإنجاز (DoD)** [`verify.md`](../../build/verify.md) §B: `migrate:fresh --seed` · `pint` · `dump-autoload -o` · `schema:check` · `php artisan test` · smoke (ar+en).
4. [`build-postman`](../../build/build-postman-collection.md) — أضف requests الاسبرينت للكولكشن من أقسام Postman في ملفات الخطط.
5. **حدّث الوثائق ثم commit:**
   - `docs/project/CONTEXT.md` §B (+ §C لو ظهر باتيرن مرجعي جديد).
   - **prepend** قسم في `docs/project/CHANGELOG.md` (اتبنى إيه + الملفات + القرارات + نتيجة DoD + الـ commit hash).
   - حدّث الأقسام المتأثرة في **`README.md` الجذر** (features / الاستركشر / API).
   - ثم **commit checkpoint** وسجّل الـ DoD بالأسفل. (الاسبرينت يوصل **مكتمل** في الكانبان تلقائياً بعد آخر خطة — أو `board:set --sprint=<n> --status=done`.)

> اتبع development-workflow + قواعد [`../build/README.md`](../../build/README.md). **لا تتجاوز ما هو مذكور في الخطط** (اللوجيك/الحقول/الـ endpoints).

## النطاق (ملفات الخطط في هذا الاسبرينت)
- API: `docs/project/api/<audience>/<flow>/<endpoint>.md` · … (اذكرها كلها)
- CRUD: `docs/project/cruds/<entity>.md` · … (إن وُجد)
- dashboard-home: `docs/project/cruds/dashboard-home.md` (لو هذا اسبرينت الداش بورد)

## الاعتماديات
- يعتمد على: Sprint `<m>` (لازم يكون DONE أخضر قبل البدء)

## فكّر-الأول (think-first)
- الكيانات/التدفق المتأثّرة · لبنات Laravel (events/jobs/notifications/policies/observers/scopes) · الحالات الحدية · side effects.

## design pattern (فقط لو يستحق)
- الباترن + سبب ملاءمته + كيف يجلس داخل layering الـ base + المقايضة. (الافتراضي: أنماط الـ base الموجودة.)

## نتيجة الإنجاز (DoD) — تُملأ بعد التنفيذ
```
migrate:fresh --seed:  ✅/❌
pint:                  ✅/❌
dump-autoload -o:      ✅/❌
schema:check:          ✅/❌
php artisan test:      ✅/❌  (عدد التستات)
smoke (ar+en):         ✅/❌
commit:                <hash>
```
