Files
clinicpro/docs/phase2_taskes/task-10-staff/task.md
T

108 lines
2.7 KiB
Markdown

# تسک ۱۰: مدیریت پرسنل (Staff)
## توضیح
پیاده‌سازی سیستم مدیریت پرسنل کلینیک/مطب. پرسنل حساب کاربری ندارند و نیازی به لاگین ندارند.
این تسک **پیش‌نیاز مستقیم** تسک ۱۳ (سرویس‌ها) و تسک ۱۵ (پرونده بیمار) است.
## Endpoint ها
| متد | مسیر | توضیح | نیاز به Auth |
|-----|------|-------|-------------|
| GET | `/api/v1/staff` | لیست پرسنل context جاری | بله (Doctor/Clinic) |
| POST | `/api/v1/staff` | ایجاد پرسنل جدید | بله |
| PATCH | `/api/v1/staff/{uuid}` | ویرایش اطلاعات | بله (مالک) |
| PATCH | `/api/v1/staff/{uuid}/toggle` | فعال/غیرفعال (soft delete) | بله (مالک) |
**مهم:** حذف سخت (`DELETE`) ممنوع است — تاریخچه سرویس‌ها و سشن‌های بیمار به پرسنل ارجاع دارند.
## پیش‌نیازها
- تسک ۰۲ (Auth — JWT + switch-context)
- تسک ۰۵ (Doctor entity)
- تسک ۰۶ (Clinic entity)
## زمان تخمینی
۶ تا ۸ ساعت
## نمونه Request
### POST /api/v1/staff
```json
{
"full_name": "علی رضایی",
"phone": "09121234567",
"job_title": "پرستار",
"address": "تهران، خیابان ولیعصر",
"national_code": "0012345678"
}
```
### PATCH /api/v1/staff/{uuid}
```json
{
"full_name": "علی رضایی",
"job_title": "سرپرستار",
"phone": "09129999999"
}
```
### PATCH /api/v1/staff/{uuid}/toggle
```json
{}
```
(body خالی — فقط وضعیت active را toggle می‌کند)
## نمونه Response
### GET /api/v1/staff
```json
{
"success": true,
"data": [
{
"uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"full_name": "علی رضایی",
"phone": "09121234567",
"job_title": "پرستار",
"address": "تهران، خیابان ولیعصر",
"national_code": "0012345678",
"active": true,
"created_at": 1718000000
}
]
}
```
### POST /api/v1/staff (موفق)
```json
{
"success": true,
"data": {
"uuid": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"full_name": "علی رضایی",
"phone": "09121234567",
"job_title": "پرستار",
"address": null,
"national_code": "0012345678",
"active": true,
"created_at": 1718000000
}
}
```
### PATCH /api/v1/staff/{uuid}/toggle
```json
{
"success": true,
"data": { "active": false }
}
```
## کدهای خطا
| کد HTTP | توضیح |
|---------|-------|
| 401 | JWT معتبر نیست |
| 403 | کاربر مالک این پرسنل نیست |
| 404 | uuid پرسنل پیدا نشد |
| 422 | `full_name` خالی است |