Files
clinicpro/docs/new_feture/taskes/task-12-treatment-course/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

7.4 KiB
Raw Blame History

چک‌لیست — تسک ۱۲ (دوره درمان)

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

قواعد: _shared/definition-of-done.md · red-lines.md · ui-conventions.md


۰. خط سرخ

# مورد وضعیت یادداشت
۰.۱ --group=slot-mode-frozen سبز
۰ PatientSession موجود دست‌نخورده «مراجعهٔ انجام‌شده» ≠ «جلسهٔ دوره»
۰ رویدادهای تسک ۰۷ بعد از commit منتشر می‌شوند وگرنه در rollback هشت پیامک اشتباه
۰ abandon نوبت‌های booked را لغو نمی‌کند عمل برگشت‌ناپذیر روی ظرفیت

۱. بک‌اند

# مورد وضعیت یادداشت
۱.۱ CourseProtocol · CourseProtocolStep · TreatmentCourse · CourseSession
۱ CourseStarter · CourseScheduler · CourseProgressCalculator · CourseSessionLinker
۱ چهار فیلد فاصله و params snapshot می‌شوند قانون پنجم
۱ book-all همه یا هیچ در یک تراکنش رزرو نیمه‌کاره بدترین حالت
۱.۵ لنگر متحرک — فاصله از جلسهٔ قبلی، نه از شروع دوره
۱ findNearestInRange — نزدیک‌ترین به ایده‌آل، نه اولین موجود
۱.۷ لنگر پیشنهاد بعدی = آخرین جلسهٔ completed، نه booked
۱ سقف ۹۰ روز → جلسات باقی planned + پیام روشن
۱ same_as_previous ترجیح است نه الزام — fallback به least_gap
۱.۱۰ preferredResourceIds در PlanRequest حمل می‌شود
۱.۱۱ SameAsPreviousPicker تسک ۰۶ ورودی گرفت
۱.۱۲ تعامل با spacing: max(min) و min(max)؛ بازهٔ تهی → ۴۲۲ روشن سخت‌گیرانه‌تر برنده
۱.۱۳ اعتبار پکیج کمتر از جلسات → هشدار، نه خطا
۱.۱۴ active_course_key با الگوی active_slot_key نه UNIQUE روی status
۱.۱۵ CourseSessionLinker هر دو سمت رابطه را هم‌زمان ست می‌کند جای دیگری نه
۱.۱۶ جلسهٔ آخر completed → دوره completed خودکار + رویداد
۱.۱۷ نُه endpoint
۱.۱۸ TenantOwnershipChecker روی هر uuid از request

۲. دیتابیس

# مورد وضعیت یادداشت
۲.۱ چهار جدول
۲.۲ min_days <= ideal_days <= max_days و session_count >= 2
۲.۳ UNIQUE(protocol_id, session_number) و UNIQUE(course_id, session_number)
۲.۴ UNIQUE(appointment_id) روی course_sessions
۲.۵ appointments.course_session_id تهی‌پذیر (رابطهٔ دوطرفه، عمدی)
۲.۶ course_protocol_steps در AGGREGATE_CHILDREN
۲.۷ TenantSchemaCoverageTest سبز

۳. UI

# مورد وضعیت یادداشت
۳.۱ CourseProtocolsPage — پروتکل + جدول پارامتر جلسات
۳.۲ TreatmentCoursePage — نوار پیشرفت، جدول جلسات، دو دکمهٔ رزرو
۳.۳ کارت «دوره‌های درمان» در PatientDetailPage
۳.۴ ستون «فاصله» عدد واقعی بین جلسات را نشان می‌دهد، نه ایده‌آل کلینیک نظم بیمار را می‌فهمد
۳.۵ نوار زرد هشدار عبور از حداکثر فاصله
۳.۶ پیشنهاد جلسهٔ بعدی به‌صورت بنر پس از completed شدن جلسه
۳.۷ نام منبع ترجیحی روی دکمهٔ رزرو («رزرو با اپراتور مریم»)
۳.۸ پس از لغو جلسهٔ وسط: پیشنهاد «بازچینی جلسات باقی‌مانده» با کلیک صریح خودکار نه
۳.۹ DataTable برای جدول جلسات
۳.۱۰ StatusBadge برای وضعیت جلسه و دوره
۳.۱۱ تاریخ‌ها شمسی با PersianDatePicker/formatDate
۳.۱۲ backTo/BackButton روی زیرصفحه‌ها
۳.۱۳ هیچ رنگ/شعاع hard-code — نوار پیشرفت هم
۳.۱۴ دارک‌مود و حالت فشرده
۳.۱۵ RTL و موبایل
۳.۱۶ همهٔ رشته‌ها فارسی
۳.۱۷ پیام سقف ۹۰ روز در UI نمایش داده می‌شود وگرنه کاربر فکر می‌کند خراب است

۴. تست

# مورد وضعیت یادداشت
۴.۱ CourseStarterTest — ۸ جلسه، بدون پروتکل ۴۲۲، دورهٔ دوم ۴۲۲ با meta
۴.۲ ProtocolSnapshotTest
۴.۳ CourseSchedulerTest — لنگر متحرک، نزدیک‌ترین به ایده‌آل
۴.۴ CourseSchedulerTest — شکست جلسهٔ N → rollback ۱..N-1
۴.۵ CourseSchedulerTest — سقف ۹۰ روز + پیام
۴.۶ NextSuggestionTest — لنگر completed، هشدار عبور از max
۴.۷ CourseProgressTest
۴.۸ SameResourcePreferenceTest — fallback بدون خطا
۴.۹ CoursePolicyInteractionTest — سخت‌گیرانه‌تر برنده، بازهٔ تهی ۴۲۲
۴.۱۰ CoursePackageTest — مصرف per جلسه، هشدار نه خطا
۴.۱۱ CourseLifecycleTest — لغو، no_show، تکمیل خودکار، abandon

۵. مستندات

# مورد وضعیت یادداشت
۵.۱ docs/api/course.md
۵ قاعدهٔ «سخت‌گیرانه‌تر برنده» بین پروتکل و قانون
۵ رفتار سقف ۹۰ روز
۵ «abandon نوبت‌ها را لغو نمی‌کند» صریح

۶. بازبینی پایانی

# مورد وضعیت یادداشت
۶.۱ هیچ 🔄 و بی‌دلیل نمانده
۶.۲ bin/phpunit کامل سبز
۶.۳ --group=slot-mode-frozen سبز
۶.۴ phpstan بدون خطای جدید
۶.۵ npx tsc --noEmit و yarn test سبز
۶.۶ تست‌های tenant سبز
۶.۷ docs/api/* به‌روز
۶.۸ چک‌لیست UI کامل
۶.۹ دو کلاینت دیگر بررسی شدند نوبت‌های دوره در پنل بیمار درست دیده می‌شوند؟
۶.۱۰ commit، سپس graphify update .
۶.۱۱ موارد به‌تعویق با دلیل و تسک مقصد