Files
clinicpro/docs/tasks/task-09-appointment-settings/user_flow.md
T
hamed de1a78a235 feat: Implement SMS sending functionality with KavehNegar and Rangineh providers
- Add SendSmsMessage class for encapsulating SMS message data.
- Create KavehNegarProvider and RanginehProvider classes implementing SmsProviderInterface for sending SMS.
- Implement SmsLogRepository and SmsTemplateRepository for managing SMS logs and templates.
- Develop SendSmsHandler for handling SMS sending messages.
- Create SmsService to manage SMS dispatching and logging.
- Add UserProfileController for managing user profiles with CRUD operations.
- Implement UserProfile entity and repository for user profile data management.
- Update symfony.lock and bootstrap.php for project dependencies and environment setup.
2026-06-09 22:00:34 +03:30

68 lines
2.1 KiB
Markdown

# جریان کاربری — تسک ۰۹: تنظیمات نوبت‌دهی
## جریان تنظیم اولیه نوبت‌دهی توسط دکتر
```
دکتر وارد پنل می‌شود
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)
لیست اسلات‌های خالی را برگردان
```