- 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.
68 lines
2.1 KiB
Markdown
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)
|
|
│
|
|
▼
|
|
لیست اسلاتهای خالی را برگردان
|
|
```
|