3.5 KiB
3.5 KiB
جریان کاربری — تسک ۱۰: مدیریت پرسنل (Staff)
جریان ایجاد پرسنل جدید
مدیر کلینیک/دکتر وارد پنل میشود
│
▼
GET /api/v1/staff
→ لیست پرسنل فعلی context جاری نمایش داده میشود
│
▼
کاربر روی «افزودن پرسنل» کلیک میکند → Modal باز میشود
│
▼
POST /api/v1/staff
{ full_name, phone?, job_title?, address?, national_code? }
│
├─► 422: full_name خالی است → نمایش خطا در فرم
│
└─► 201: پرسنل ایجاد شد → لیست refresh میشود
جریان ویرایش پرسنل
کاربر روی آیکن ویرایش در جدول کلیک میکند
│
▼
Modal با اطلاعات فعلی پر میشود
│
▼
PATCH /api/v1/staff/{uuid}
{ full_name, phone, job_title, ... }
│
├─► 403: این پرسنل متعلق به شما نیست
└─► 200: ویرایش موفق → Modal بسته میشود
جریان غیرفعالسازی (Soft Delete)
کاربر روی toggle در جدول کلیک میکند
│
▼
PATCH /api/v1/staff/{uuid}/toggle
│
▼
active: true → false یا false → true
│
▼
در لیست: badge وضعیت تغییر میکند (فعال/غیرفعال)
چرا حذف سخت ممنوع است
clinic_staff (active=false)
│
├── service_items.staff_id → هنوز به پرسنل ارجاع دارد
│ (تاریخچه سرویسها حفظ میشود)
│
└── session_services.staff_id → سشنهای قبلی بیمار
نام انجامدهنده را نشان میدهند
اگر پرسنل حذف سخت میشد:
service_items.staff_id→ NULL (انجامدهنده سرویس گم میشد)session_services.staff_id→ NULL (تاریخچه ویزیت ناقص میشد)
نمایش در Frontend (StaffPage.tsx)
┌─────────────────────────────────────────────────┐
│ پرسنل کلینیک [+ افزودن] │
├──────────┬──────────┬──────────┬────────────────┤
│ نام │ سمت │ تلفن │ وضعیت عملیات│
├──────────┼──────────┼──────────┼────────────────┤
│ علی رضایی│ پرستار │ 0912... │ ✅فعال ✏️ 🔘 │
│ مریم نوری│ منشی │ 0913... │ ❌غیرفعال✏️ 🔘│
└──────────┴──────────┴──────────┴────────────────┘
- ستون آخر: آیکن ویرایش (Modal) + toggle وضعیت
- غیرفعالها با رنگ کمتر نمایش داده میشوند اما از لیست حذف نمیشوند
- فیلتر: «فقط فعالها» / «همه» — query param
?active=1