Files
clinicpro/docs/new_feture/taskes/task-10-policy-admin-sandbox/checklist.md
T
hamed 70739691d1 Add checklists for tasks 11 to 14 covering credit ledger, treatment course, cancellation policies, and event utilization
- 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
2026-07-30 12:12:45 +03:30

6.4 KiB
Raw Blame History

چک‌لیست — تسک ۱۰ (فرم ساخت قانون و محیط آزمایش)

وضعیت کلی: شروع نشده · آخرین بازبینی:

قواعد: _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.mdsimulate، 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 .
۶.۱۱ موارد به‌تعویق با دلیل و تسک مقصد