# جریان کاربری — تسک ۰۹: تنظیمات نوبت‌دهی ## جریان تنظیم اولیه نوبت‌دهی توسط دکتر ``` دکتر وارد پنل می‌شود │ ▼ POST /api/v1/appointment-settings/weekly-schedule { doctor_uuid, schedule: { saturday: {...}, sunday: {...}, ... } } │ └─► ذخیره برنامه هفتگی پایه ``` ## جریان ثبت مرخصی یا تعطیلات ``` دکتر تعطیلات را ثبت می‌کند │ ▼ POST /api/v1/appointment-settings/holidays { doctor_uuid, start_date, end_date, reason } │ └─► در بازه تعطیلات، هیچ نوبتی نمی‌توان گرفت ``` ## جریان override یک روز خاص ``` دکتر می‌خواهد یک روز خاص را سفارشی کند │ ├─► غیرفعال کردن یک روز: │ POST /date-override { date: "2024-03-15", active: false } │ └─► اسلات سفارشی برای یک روز: POST /date-override { date: "2024-03-15", active: true, custom_slots: [{ start: "10:00", end: "12:00", duration: 20 }] } ``` ## الگوریتم محاسبه اسلات‌های خالی (تسک ۱۰ از این استفاده می‌کند) ``` برای تاریخ درخواست‌شده: │ ▼ آیا در بازه Holiday است؟ بله → نوبت موجود نیست خیر │ ▼ آیا DateOverride برای این تاریخ وجود دارد؟ بله → active=false: نوبت موجود نیست active=true: از custom_slots استفاده کن خیر │ ▼ از WeeklySchedule روز هفته مربوطه استفاده کن active=false: نوبت موجود نیست active=true: اسلات‌های slots را محاسبه کن │ ▼ اسلات‌های رزروشده را حذف کن (از جدول appointments) │ ▼ لیست اسلات‌های خالی را برگردان ```