100 lines
4.0 KiB
Markdown
100 lines
4.0 KiB
Markdown
# جریان کاربری — تسک ۱۳: سرویسهای کلینیک
|
|
|
|
## جریان مشاهده و ایجاد سرویسها
|
|
|
|
```
|
|
کاربر وارد صفحه «سرویسها» میشود
|
|
│
|
|
▼
|
|
GET /api/v1/service-sections
|
|
→ accordion دو سطحی نمایش داده میشود
|
|
│
|
|
بر روی هر بخش کلیک میکند:
|
|
▼
|
|
GET /api/v1/service-items/{sectionUuid}
|
|
→ زیربخشها نمایش داده میشوند
|
|
```
|
|
|
|
## ساختار نمایش (ServicesPage.tsx)
|
|
|
|
```
|
|
┌─────────────────────────────────────────────┐
|
|
│ سرویسهای کلینیک [+ بخش جدید] │
|
|
├─────────────────────────────────────────────┤
|
|
│ ▼ تزریقات ✏️ 🗑️ │
|
|
│ ├─ سرم ۵۰۰cc ۸۵,۰۰۰ ریال ✏️ 🗑️ │
|
|
│ ├─ آمپول B12 ۴۵,۰۰۰ ریال ✏️ 🗑️ │
|
|
│ └─ [+ سرویس جدید] │
|
|
├─────────────────────────────────────────────┤
|
|
│ ► فیزیوتراپی ✏️ 🗑️ │
|
|
└─────────────────────────────────────────────┘
|
|
```
|
|
|
|
## جریان ایجاد بخش جدید
|
|
|
|
```
|
|
کاربر «+ بخش جدید» کلیک میکند → Modal باز میشود
|
|
│
|
|
▼
|
|
POST /api/v1/service-section { name: 'تزریقات' }
|
|
│
|
|
├─► 403 ERR_SUBSCRIPTION_REQUIRED → «پنل Basic لازم است»
|
|
└─► 201 → accordion بهروز میشود
|
|
```
|
|
|
|
## جریان حذف بخش
|
|
|
|
```
|
|
کاربر روی 🗑️ بخش کلیک میکند
|
|
│
|
|
▼
|
|
ConfirmDialog: «آیا از حذف بخش "تزریقات" مطمئنید؟
|
|
همه زیربخشهای آن هم حذف میشوند.»
|
|
│
|
|
▼
|
|
DELETE /api/v1/service-section/{uuid}
|
|
│
|
|
├─► اگر هیچ زیربخشی ندارد → 200 حذف شد
|
|
└─► اگر زیربخش دارد → 409 ERR_SERVICE_SECTION_HAS_ITEMS
|
|
(یا اگر DELETE CASCADE تعریف شده: همه حذف میشوند)
|
|
```
|
|
|
|
## جریان حذف زیربخش
|
|
|
|
```
|
|
DELETE /api/v1/service-item/{uuid}
|
|
│
|
|
├─► اگر در هیچ session_services نیست → 200
|
|
└─► اگر در session_services استفاده شده → 409 ERR_SERVICE_ITEM_IN_USE
|
|
پیام: «این سرویس در پرونده بیمار ثبت شده و قابل حذف نیست.»
|
|
```
|
|
|
|
## جریان انتخاب پرسنل انجامدهنده
|
|
|
|
```
|
|
هنگام ایجاد/ویرایش ServiceItem:
|
|
│
|
|
▼
|
|
GET /api/v1/staff → SearchableSelect از پرسنل فعال
|
|
→ «علی رضایی (پرستار)»
|
|
→ «مریم نوری (فیزیوتراپیست)»
|
|
→ [بدون پرسنل مشخص]
|
|
```
|
|
|
|
## gate check — کاربر Free
|
|
|
|
```
|
|
کاربر Free روی «سرویسها» در sidebar کلیک میکند
|
|
│
|
|
▼
|
|
ServicesPage.tsx → GET /api/v1/service-sections → 403
|
|
│
|
|
▼
|
|
نمایش banner:
|
|
┌─────────────────────────────────────────────┐
|
|
│ 🔒 این قابلیت نیاز به پنل Basic یا بالاتر │
|
|
│ دارد. │
|
|
│ [مشاهده پنلها] │
|
|
└─────────────────────────────────────────────┘
|
|
```
|