- Add task for completing service mode in clinicpro with detailed objectives and acceptance criteria. - Create architecture documentation for task 00b, outlining involved components and necessary changes. - Develop checklist for task 00b to ensure all requirements are met. - Document implementation notes for task 00b, emphasizing API contract checks and design system adherence. - Update task documentation for task 00b, specifying goals and current issues with service mode.
7.8 KiB
7.8 KiB
چکلیست — تسک ۰۰ب (سازگارسازی nobat724_front)
وضعیت کلی: ⏳ شروع نشده آخرین بازبینی: —
قواعد: _shared/definition-of-done.md · خط سرخها: _shared/red-lines.md · UI: _shared/ui-conventions.md
۰. خط سرخ — مسیر اسلاتی سایت
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۰.۱ | adaptSlots() یک خط هم عوض نشد |
⏳ | |
| ۰.۲ | رندر تبهای شیفت در حالت اسلاتی دستنخورده | ⏳ | |
| ۰.۳ | مسیر رزرو اسلاتی سرتاسر دستی تست شد — بیتبهبیت مثل قبل | ⏳ | سناریو ۳ |
| ۰.۴ | کارت نوبت اسلاتی در پنل بدون تغییر | ⏳ | سناریو ۵ |
۱. پیشبررسی قرارداد API
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۱.۱ | appointments/user فیلد service_items دارد |
⏳ | اگر نه → به تسک ۰۰ برگردان |
| ۱.۲ | appointments/user فیلد service_total_minutes دارد |
⏳ | همان |
| ۱.۳ | هر start_times[i] فیلد end_time دارد |
⏳ | |
| ۱.۴ | total_duration_minutes و buffer_minutes در پاسخ هستند |
⏳ | |
| ۱.۵ | exclude_appointment_uuid روی appointment-service-slots کار میکند |
⏳ | تسک ۰۰ ساخته |
۲. انتخاب سرویس — دیزاین و منطق
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۲.۱ | چهار رنگ hard-code (#3B3B3B #7A7A7A #5559CE bg-white) حذف شد |
⏳ | |
| ۲.۲ | کلاسها از همان الگوی location/ و date/ کپی شد، توکن جدید ساخته نشد |
⏳ | |
| ۲.۳ | ساختار DOM و رفتار toggle عوض نشد | ⏳ | فقط منبع رنگ |
| ۲.۴ | محاسبهٔ reduce مدت از فرانت حذف شد |
⏳ | |
| ۲.۵ | مدت از total_duration_minutes بکاند میآید |
⏳ | |
| ۲.۶ | fallbackSum با console.warn — موقت، تسک مقصد حذفش ثبت شد |
⏳ | |
| ۲.۷ | برچسب «مدت تقریبی» پیش از انتخاب روز، «مدت نوبت» پس از آن | ⏳ | |
| ۲.۸ | انتخاب صفر سرویس → دکمهٔ ادامه غیرفعال با راهنمای فارسی | ⏳ | |
| ۲.۹ | محل سرویسی بدون سرویس bookable → پیام روشن + پیشنهاد محل دیگر |
⏳ |
۳. adaptServiceSlots شیفتآگاه
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۳.۱ | گروهبندی بر اساس شکاف زمانی پیاده شد | ⏳ | |
| ۳.۲ | آستانه = max(60, durationMin) |
⏳ | وگرنه نوبت بلند به تبهای تکعضوی میشکند |
| ۳.۳ | برچسب واقعی "HH:MM - HH:MM" — نه «زمانهای خالی» ثابت |
⏳ | |
| ۳.۴ | end_time از پاسخ بکاند، addMinutes فقط fallback |
⏳ | |
| ۳.۵ | کامنت: هیوریستیک است، راه دقیق endpoint تسک ۰۶ | ⏳ | |
| ۳.۶ | start_times خالی → [] و پیام دلیلدار در UI |
⏳ |
۴. پنل کاربر — سرویس، مدت، جابهجایی
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۴.۱ | Card.js نام سرویسها را نشان میدهد (با شرط &&) |
⏳ | |
| ۴.۲ | Card.js مدت را نشان میدهد (با شرط &&) |
⏳ | |
| ۴.۳ | DetailLg.js و DetailSm.js هر دو |
⏳ | |
| ۴.۴ | نوبت رزرو: فقط سرویس، بدون مدت | ⏳ | زمان ندارد |
| ۴.۵ | نوبت سرویسی بدون service_items → «—»، بدون کرش |
⏳ | |
| ۴.۶ | services/response.js: serviceReschedule اضافه شد |
⏳ | |
| ۴.۷ | services/response.js: getServiceSlotsForReschedule با exclude_appointment_uuid |
⏳ | |
| ۴.۸ | ButtonData.js دکمهٔ جابهجایی + مودال موجود |
⏳ | |
| ۴.۹ | انتخابگر زمان: components/appointment/date/ بازاستفاده شد، نه ساخت جدید |
⏳ | |
| ۴.۱۰ | بیمار مدت وارد نمیکند — بکاند حساب میکند | ⏳ | |
| ۴.۱۱ | خطای بکاند با پیام فارسی خودش نمایش داده میشود | ⏳ | نه «خطای نامشخص» |
| ۴.۱۲ | پس از خطای تداخل، refetchSlots() اجرا میشود |
⏳ |
۵. UI — قواعد سایت
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۵.۱ | تم MUI از mui/index.js — تم جدید ساخته نشد |
⏳ | |
| ۵.۲ | فونت فقط Vazir — فونت جدید اضافه نشد | ⏳ | |
| ۵.۳ | دارکمود صفحات عمومی (data-theme) بررسی شد |
⏳ | سناریو ۲ |
| ۵.۴ | دارکمود پنل (class) بررسی شد |
⏳ | سناریو ۷ — مکانیزم متفاوت |
| ۵.۵ | کامپوننت موازی ساخته نشد؛ components/appointment/* توسعه یافت |
⏳ | |
| ۵.۶ | RTL بررسی شد (ms/me نه ml/mr) |
⏳ | |
| ۵.۷ | موبایل بررسی شد — بدون اسکرول افقی | ⏳ | سناریو ۱۰ |
| ۵.۸ | تاریخها شمسی با jalali-moment |
⏳ | |
| ۵.۹ | همهٔ رشتهها فارسی | ⏳ | |
| ۵.۱۰ | صفحاتی که دست خوردند generateMetadata و await params سالم دارند |
⏳ | |
| ۵.۱۱ | دامنه گسترش نیافت — صفحهٔ رزرو بازطراحی نشد | ⏳ | انحراف بقیهٔ مراحل، اگر بود، ⚠️ ثبت شود |
۶. تست دستی — ده سناریو
| # | سناریو | وضعیت | یادداشت |
|---|---|---|---|
| ۶.۱ | رزرو سرویسی کامل تا پیامک | ⏳ | |
| ۶.۲ | همان در دارکمود عمومی | ⏳ | |
| ۶.۳ | رزرو اسلاتی کامل — بدون تغییر | ⏳ | ⛔ خط سرخ |
| ۶.۴ | پزشک دو-شیفته سرویسی → دو تب با برچسب واقعی | ⏳ | |
| ۶.۵ | پنل با نوبت اسلاتی تنها → بدون تغییر | ⏳ | |
| ۶.۶ | پنل با نوبت سرویسی → سرویس و مدت | ⏳ | |
| ۶.۷ | پنل در دارکمود | ⏳ | |
| ۶.۸ | جابهجایی سرویسی → مدت حفظ | ⏳ | |
| ۶.۹ | جابهجایی به زمان اشغال → پیام فارسی + refetch | ⏳ | |
| ۶.۱۰ | همهٔ موارد بالا روی موبایل | ⏳ | |
| ۶.۱۱ | تست واحد adaptServiceSlots (پنج حالت) |
⏳ | تابع خالص، بهترین کاندید |
۷. مستندات
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۷.۱ | nobat724_front/CLAUDE.md بخش «حالتهای نوبتدهی» |
⏳ | |
| ۷.۲ | یادداشت هیوریستیک شیفت در clinicpro/docs/api/appointment.md |
⏳ |
۸. بازبینی پایانی
| # | مورد | وضعیت | یادداشت |
|---|---|---|---|
| ۸.۱ | همهٔ ردیفهای بالا وضعیت نهایی دارند (هیچ 🔄 و ⏳ بیدلیل) | ⏳ | |
| ۸.۲ | npm run build بدون خطا |
⏳ | |
| ۸.۳ | npm run lint بدون خطای جدید |
⏳ | |
| ۸.۴ | ده سناریوی دستی بخش ۶ اجرا شد | ⏳ | |
| ۸.۵ | چکلیست UI (بخش ۵) کامل شد | ⏳ | |
| ۸.۶ | clinic-pro-tauri دستی بررسی شد — قرارداد مشترک نشکسته |
⏳ | همان service_item تکی |
| ۸.۷ | commit شد، سپس graphify update . |
⏳ | |
| ۸.۸ | موارد بهتعویقافتاده با دلیل و تسک مقصد ثبت شدند | ⏳ | fallbackSum |