feat(docs): add scenario documentation for importing doctors from IRIMC and managing profile ownership
This commit is contained in:
@@ -6,8 +6,9 @@
|
||||
|
||||
وارد کردن یک پزشک از سازمان نظام پزشکی (`membersearch.irimc.org`) **بدون شماره موبایل**.
|
||||
برخلاف `POST /api/v1/admin/doctors` (که موبایل معتبر ایرانی میخواهد)، این اندپوینت برای
|
||||
هر پزشک یک **کاربر جانشینِ غیرفعال** با شناسهٔ مصنوعی میسازد و پروفایل را در وضعیت
|
||||
`unclaimed` ذخیره میکند تا بعداً به پزشک واقعی منتقل شود.
|
||||
هر پزشک یک **کاربر جانشینِ غیرفعال** با شناسهٔ مصنوعی و نقشِ اختصاصی `ROLE_UNCLAIMED_DOCTOR`
|
||||
میسازد و پروفایل را در وضعیت `unclaimed` ذخیره میکند تا بعداً به پزشک واقعی منتقل شود.
|
||||
این نقش، هم کاربر جانشین را قابلشناسایی میکند و هم مبنای حذفِ امنِ او پس از انتقال است.
|
||||
|
||||
مصرفکنندهٔ اصلی: خزندهٔ پایتون (`clinicpro-crawler/pipeline.py`) که با کاربر «مالک
|
||||
سیستمی» (`0000000000`) لاگین میکند و هر ~۶۰ ثانیه یک پزشک را میفرستد.
|
||||
@@ -107,6 +108,42 @@
|
||||
|
||||
---
|
||||
|
||||
## انتقال مالکیت به پزشک واقعی
|
||||
|
||||
> **Endpoint:** `POST /api/v1/admin/doctors/{uuid}/transfer` — permission `ROLE_ADMIN`
|
||||
|
||||
مالکیت یک پروفایلِ `unclaimed` را به پزشک واقعی منتقل میکند.
|
||||
|
||||
```json
|
||||
// Request
|
||||
{ "mobile": "09120000000" }
|
||||
```
|
||||
|
||||
مراحل اتمیک:
|
||||
|
||||
1. کاربر واقعی بر پایهٔ `mobile` پیدا یا ساخته میشود (باید موبایل معتبر ایران باشد).
|
||||
2. اگر کاربر واقعی از قبل صاحب پزشک دیگری باشد → `409`.
|
||||
3. `user_id` پروفایل به کاربر واقعی تغییر میکند، `ROLE_DOCTOR` به او داده میشود،
|
||||
`owner_status = claimed` و `claimed_at = now` و `managed_by = null` میشود.
|
||||
4. **کاربر جانشین حذف میشود** — فقط اگر واقعاً `ROLE_UNCLAIMED_DOCTOR` داشته باشد و
|
||||
دیگر هیچ پزشکی به او وصل نباشد (حذف امن).
|
||||
|
||||
```json
|
||||
// Response 200
|
||||
{ "success": true, "data": {
|
||||
"uuid": "…", "owner_status": "claimed",
|
||||
"transferred_to": "09120000000", "placeholder_deleted": true
|
||||
} }
|
||||
```
|
||||
|
||||
| کد | حالت |
|
||||
|---|---|
|
||||
| `404` | پزشک یافت نشد |
|
||||
| `409` | قبلاً `claimed` است، یا کاربر مقصد پزشک دیگری دارد |
|
||||
| `422` | موبایل نامعتبر |
|
||||
|
||||
---
|
||||
|
||||
## کاربر سیستمی و چرخهٔ عمر
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user