# تعریف «تمام‌شده» و قالب چک‌لیست هر تسک یک `checklist.md` دارد. **پیش از اعلام پایان تسک، همهٔ ردیف‌ها بازبینی می‌شوند و هیچ ردیفی در `🔄` یا `⏳` نمی‌ماند.** --- ## نمادها | نماد | معنی | اجازهٔ باقی‌ماندن در پایان تسک | |---|---|---| | ✅ | انجام‌شده و تأییدشده | بله | | 🔄 | در حال انجام | **نه** — یا ✅ شود یا با دلیل صریح به ⏳ منتقل شود | | ⏳ | انجام‌نشده | **نه** — یا ✅ شود یا با دلیل مکتوب و تسک مقصد به تعویق برود | | ⚠️ | نیازمند بررسی یا تست | **نه** — باید تعیین تکلیف شود | `⏳` تنها وقتی در پایان مجاز است که کنارش نوشته شده باشد: **چرا** به تعویق افتاد و **کدام تسک** آن را برمی‌دارد. `⏳ بدون دلیل = تسک تمام نشده.` --- ## قالب `checklist.md` ```markdown # چک‌لیست — تسک XX وضعیت کلی: ⏳ شروع نشده | 🔄 در حال انجام | ✅ تمام‌شده آخرین بازبینی: — ## ۰. خط سرخ‌ها (رجوع: _shared/red-lines.md) | # | مورد | وضعیت | یادداشت | |---|---|---|---| | ۰.۱ | منطق اسلاتی دست‌کاری نشد · `--group=slot-mode-frozen` سبز | ⏳ | | | ۰.۲ | هیچ متد موجود `SlotCalculatorService` ویرایش نشد | ⏳ | | | ۰.۳ | قرارداد `appointment-slots` و `month-availability` دست‌نخورده | ⏳ | | ## ۱. بک‌اند ## ۲. دیتابیس و مهاجرت ## ۳. UI (رجوع: _shared/ui-conventions.md) ## ۴. تست ## ۵. مستندات ## ۶. بازبینی پایانی ``` --- ## بخش ۶ — بازبینی پایانی، یکسان در همهٔ تسک‌ها ```markdown | # | مورد | وضعیت | یادداشت | |---|---|---|---| | ۶.۱ | همهٔ ردیف‌های بالا وضعیت نهایی دارند (هیچ 🔄 و ⏳ بی‌دلیل) | ⏳ | | | ۶.۲ | `ddev exec php bin/phpunit` کامل سبز | ⏳ | | | ۶.۳ | `ddev exec php bin/phpunit --group=slot-mode-frozen` سبز | ⏳ | | | ۶.۴ | `ddev exec php vendor/bin/phpstan analyse` بدون خطای جدید | ⏳ | | | ۶.۵ | `npx tsc --noEmit` بدون خطا | ⏳ | | | ۶.۶ | `yarn test` سبز | ⏳ | | | ۶.۷ | `TenantSchemaCoverageTest` و `TenantLookupInventoryTest` سبز | ⏳ | | | ۶.۸ | `docs/api/*` به‌روز شد (قاعدهٔ ثابت پروژه) | ⏳ | | | ۶.۹ | چک‌لیست UI کامل شد (اگر تسک صفحه/کامپوننت دارد) | ⏳ | | | ۶.۱۰ | مصرف‌کنندگان دیگر دستی بررسی شدند: `nobat724_front` · `clinic-pro-tauri` | ⏳ | | | ۶.۱۱ | تغییرات commit شد، سپس `graphify update .` اجرا شد | ⏳ | | | ۶.۱۲ | موارد به‌تعویق‌افتاده با دلیل و تسک مقصد ثبت شدند | ⏳ | | ``` ردیف ۶.۱۰ در build هیچ‌کدام از آن دو ریپو خطا نمی‌دهد — بررسی فقط دستی ممکن است. ردیف ۶.۱۱ ترتیبش مهم است: اول commit، بعد `graphify update`. --- ## قواعد ثابت پروژه که در هر تسک اعمال می‌شوند از `CLAUDE.md` و `docs/architecture/tenancy.md`: 1. entity جدید یا `TenantOwnedTrait` می‌گیرد یا با دلیل در `GlobalTables` ثبت می‌شود 2. `entity_type, entity_id` ستون‌های **اول** هر ایندکس ترکیبیِ لیست 3. هر uuid از request با `TenantOwnershipChecker` سنجیده می‌شود 4. timestamp ها `int` یونیکس، نه `DateTime` · نمایش شمسی فقط در UI 5. کنترلر نازک · `extends BaseController` · `success()/paginated()/error()` 6. منطق در Service، کوئری در Repository، وابستگی با constructor injection 7. لیست‌های ادمین با `getArrayResult()` 8. API جدید فقط وقتی هیچ endpoint موجودی — حتی با توسعه — کافی نباشد؛ **دلیلش نوشته شود** 9. تست موفق + خطا + مرزی · بدون اجرای موفق تست، تسک تمام نیست 10. کد و کامیت و مستندات انگلیسی · رشته‌های UI فارسی از i18n 11. SOLID · کلاس/کامپوننت چندمسئولیتی ننویس