- Created checklist for task 11: Package and Credit Ledger - Created checklist for task 12: Treatment Course - Created checklist for task 13: Cancellation Policy, No-Show, and Waitlist - Created checklist for task 14: Domain Events and Utilization Reports
6.4 KiB
6.4 KiB
چکلیست — تسک ۱۰ (فرم ساخت قانون و محیط آزمایش)
وضعیت کلی: ⏳ شروع نشده · آخرین بازبینی: —
قواعد: _shared/definition-of-done.md · red-lines.md · ui-conventions.md
۰. خط سرخ
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۰.۱ | --group=slot-mode-frozen سبز |
⏳ | |
| ۰.۲ | شبیهسازی هیچ ردیفی نمینویسد (جز policy_simulation_runs) |
⏳ | ⭐⭐ با شمارش ردیف اثبات شود |
| ۰.۳ | نوبتهای واقعی بیماران در شبیهسازی تغییر نکردند | ⏳ |
۱. بکاند — شبیهساز
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۱.۱ | PolicySimulator · SimulationSampler · PolicySimulationRun |
⏳ | |
| ۱.۲ | سه لایهٔ تضمین: DTO · تراکنش با rollback در finally · تست شمارش |
⏳ | ⭐ |
| ۱.۳ | $this->em->clear() بعد از rollback |
⏳ | ⭐ وگرنه entity کثیف در identity map |
| ۱.۴ | PolicySimulationRun بعد از rollback و در تراکنش جدا ثبت میشود |
⏳ | |
| ۱.۵ | evaluateIsolated() — فقط همان قانون، بدون Resolver و Combiner |
⏳ | |
| ۱.۶ | فیلتر شعبه و سرویس از خودِ شرط قانون استخراج میشود | ⏳ | وگرنه «۰٪ تحت تأثیر» گمراهکننده |
| ۱.۷ | سقف نمونه ۵۰؛ درخواست بیشتر → ۴۲۲ | ⏳ | |
| ۱.۸ | PolicyTemplateRegistry با پنج الگو |
⏳ | |
| ۱.۹ | activate شرط simulate همان نسخه را میسنجد |
⏳ | ⭐ نسخهٔ ۱ اجازهٔ نسخهٔ ۲ نمیدهد |
| ۱.۱۰ | محیط بدون نوبت → simulate خالی موفق، activate مجاز |
⏳ | ⭐ کلینیک جدید قفل نشود |
| ۱.۱۱ | چهار سطح شدت با آستانههای مستند | ⏳ | |
| ۱.۱۲ | دو endpoint | ⏳ | |
| ۱.۱۳ | app:policy:prune-simulations — آخرین اجرا per (policy, version) هرگز حذف نمیشود |
⏳ | activate به آن وابسته است |
۲. دیتابیس
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۲.۱ | policy_simulation_runs با جفت tenant |
⏳ | |
| ۲.۲ | report سقف ۵۰ ردیف |
⏳ | |
| ۲.۳ | TenantSchemaCoverageTest سبز |
⏳ |
۳. UI
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۳.۱ | PoliciesPage · PolicyFormPage · PolicySimulationPage |
⏳ | |
| ۳.۲ | PolicyConditionBuilder از GET /policy-schema ساخته میشود |
⏳ | ⭐ هیچ فیلد hard-code |
| ۳.۳ | عملگرها per فیلد فیلتر میشوند، نه همه | ⏳ | ⭐ وگرنه ۴۲۲ بیتوضیح |
| ۳.۴ | نوع ورودی مقدار از schema.fields[f].type |
⏳ | |
| ۳.۵ | همهٔ select ها SearchableSelect؛ هیچ <select> بومی |
⏳ | |
| ۳.۶ | انتخاب الگو → فرم کوتاه مقدارها (مسیر ۹۰٪ کاربران) | ⏳ | |
| ۳.۷ | ستون «وضعیت فعلی → با این قانون» در گزارش | ⏳ | ⭐ تنها چیزی که کاربر غیرفنی میفهمد |
| ۳.۸ | درصد تحت تأثیر + سطح شدت با رنگ توکنمحور | ⏳ | |
| ۳.۹ | شدت none هم هشدار میدهد، با متن دوحالتی |
⏳ | |
| ۳.۱۰ | شدت high → متن «مطمئنید؟» روی دکمهٔ فعالسازی |
⏳ | |
| ۳.۱۱ | ConfirmDialog موجود برای فعالسازی |
⏳ | نه مودال دستساز |
| ۳.۱۲ | DataTable برای لیست قوانین با فیلتر دسته/وضعیت در URL |
⏳ | |
| ۳.۱۳ | backTo/BackButton روی هر سه صفحه |
⏳ | |
| ۳.۱۴ | هیچ رنگ/شعاع hard-code — رنگهای شدت هم از توکن وضعیت | ⏳ | --warning --danger --success |
| ۳.۱۵ | دارکمود و حالت فشرده | ⏳ | |
| ۳.۱۶ | RTL و موبایل — جدول گزارش اسکرول افقی داخلی | ⏳ | |
| ۳.۱۷ | تاریخها شمسی | ⏳ | |
| ۳.۱۸ | همهٔ رشتهها فارسی | ⏳ | |
| ۳.۱۹ | نمایش تاریخچهٔ نسخهها با diff | ⏳ |
۴. تست
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۴.۱ | PolicySimulatorTest — شمارش ردیف قبل/بعد |
⏳ | ⭐⭐ |
| ۴.۲ | PolicySimulatorTest — استثنا در evaluateIsolated → rollback + clear |
⏳ | |
| ۴.۳ | SimulationSamplerTest — استخراج فیلتر، فقط confirmed/completed، سقف ۵۰ |
⏳ | |
| ۴.۴ | PolicyActivationGuardTest — چهار حالت |
⏳ | ⭐ |
| ۴.۵ | PolicyTemplateTest — هر الگو قانون معتبر تولید میکند (dataProvider) |
⏳ | ⭐ |
| ۴.۶ | SeverityTest — چهار آستانه |
⏳ | |
| ۴.۷ | PolicyFormPage.test.tsx — فیلد ساختگی از mock schema در UI ظاهر میشود |
⏳ | ⭐ |
| ۴.۸ | PolicyFormPage.test.tsx — عملگر نامعتبر برای نوع نمایش داده نمیشود |
⏳ |
۵. مستندات
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۵.۱ | docs/api/policy.md — simulate، policy-templates، شرط جدید activate |
⏳ | |
| ۵.۲ | docs/architecture/policy-engine.md بخش «چرا آزمایش اجباری است» |
⏳ | ارجاع به ریسک دوم مستند |
۶. بازبینی پایانی
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۶.۱ | هیچ 🔄 و ⏳ بیدلیل نمانده | ⏳ | |
| ۶.۲ | bin/phpunit کامل سبز |
⏳ | |
| ۶.۳ | --group=slot-mode-frozen سبز |
⏳ | |
| ۶.۴ | phpstan بدون خطای جدید |
⏳ | |
| ۶.۵ | npx tsc --noEmit و yarn test سبز |
⏳ | |
| ۶.۶ | تستهای tenant سبز | ⏳ | |
| ۶.۷ | docs/api/* بهروز |
⏳ | |
| ۶.۸ | چکلیست UI کامل | ⏳ | |
| ۶.۹ | دو کلاینت دیگر بررسی شدند | ⏳ | این تسک قرارداد عمومی عوض نمیکند |
| ۶.۱۰ | commit، سپس graphify update . |
⏳ | |
| ۶.۱۱ | موارد بهتعویق با دلیل و تسک مقصد | ⏳ |