fix(doctor): strip «دکتر» prefix on IRIMC import + name-fix & purge commands
Root cause of "دکتر دکتر …" (and ellipsis-truncated "…نی") in admin: IRIMC
names already contain the «دکتر» title, while the panel renders «دکتر {name}».
Convention is to store the bare name.
- DoctorImportService: normalize name via PersianText::stripDoctorTitle
(also fixes ي/ی, ك/ک, half-space)
- PersianText::stripDoctorTitle now strips consecutive «دکتر دکتر …» prefixes
- app:doctors:fix-irimc-names: one-off backfill for existing source='irimc'
rows (dry-run supported) — fixed 340 rows
- app:doctors:purge: FK-safe full wipe of doctors + all dependent tables +
orphan surrogate users, for a clean test DB (dry-run default, --force to
apply, prod-guarded)
- tests: PersianTextTest cases for the title stripping; DoctorImportTest
asserts stored name has no «دکتر» prefix
- docs/api/doctor-import.md: name convention + the two new commands
Verified: import "دکتر صفورا حجازی نیا" → stored "صفورا حجازی نیا" → panel
shows single «دکتر صفورا حجازی نیا».
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -61,7 +61,7 @@
|
||||
|
||||
| فیلد | الزامی | توضیح |
|
||||
|---|:---:|---|
|
||||
| `name` | ✅ | نام کامل پزشک |
|
||||
| `name` | ✅ | نام کامل پزشک — پیشوند «دکتر» **هنگام ذخیره حذف** میشود (کنوانسیون: نام بدون عنوان؛ UI خودش «دکتر» را جلو میگذارد). ورودی میتواند با یا بدون «دکتر» باشد. |
|
||||
| `medical_system_code` | ✅ | کد نظام پزشکی (کلید idempotency) |
|
||||
| `source` | — | پیشفرض `irimc` |
|
||||
| `source_ref` | — | `profile_url` یا شناسهٔ مبدأ |
|
||||
@@ -188,3 +188,24 @@ X-Service-Token: <مقدار env CRAWLER_SERVICE_TOKEN>
|
||||
php bin/console app:doctors:backfill-surrogate-role --dry-run # فقط گزارش
|
||||
php bin/console app:doctors:backfill-surrogate-role # اعمال
|
||||
```
|
||||
|
||||
### اصلاح نام رکوردهای قدیمی (حذف پیشوند «دکتر»)
|
||||
|
||||
رکوردهای IRIMC که پیش از این تغییر با پیشوند «دکتر» ذخیره شده بودند:
|
||||
|
||||
```bash
|
||||
php bin/console app:doctors:fix-irimc-names --dry-run # فقط گزارش
|
||||
php bin/console app:doctors:fix-irimc-names # اعمال (فقط source='irimc')
|
||||
```
|
||||
|
||||
### پاکسازی کامل برای دیتابیس تست
|
||||
|
||||
حذف همهٔ پزشکان + دادههای وابسته (FK-safe) برای شروع تمیز:
|
||||
|
||||
```bash
|
||||
php bin/console app:doctors:purge # dry-run: فقط گزارش تعداد هر جدول
|
||||
php bin/console app:doctors:purge --force # حذف واقعی + کاربران جانشین یتیم
|
||||
```
|
||||
|
||||
> ⚠️ مخرب — `appointments`/`comments`/`rates` را هم پاک میکند. روی prod نیازمند
|
||||
> `--i-know-this-is-prod` است و پیشفرض متوقف میشود.
|
||||
|
||||
Reference in New Issue
Block a user