feat: implement service mode completion for nobat724_front
- 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.
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
# چکلیست — تسک ۰۰ب (سازگارسازی nobat724_front)
|
||||
|
||||
**وضعیت کلی:** ⏳ شروع نشده
|
||||
**آخرین بازبینی:** —
|
||||
|
||||
قواعد: [_shared/definition-of-done.md](../_shared/definition-of-done.md) ·
|
||||
خط سرخها: [_shared/red-lines.md](../_shared/red-lines.md) ·
|
||||
UI: [_shared/ui-conventions.md](../_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` |
|
||||
Reference in New Issue
Block a user