Refactor doctor data repair commands into a single command
- Removed individual commands for backfilling specialty parents, surrogate roles, and fixing IRIMC names. - Introduced RepairImportedDoctorsCommand to consolidate functionality. - Implemented a step-based approach for repairs, allowing for idempotent execution. - Added new service classes for handling specific repair steps, including BackfillSpecialtyParentsStep, BackfillSurrogateRoleStep, FixDegreeStep, and StripNameTitleStep. - Created RepairOptions and RepairResult classes to manage step execution options and results. - Updated tests to ensure new command structure and functionality are covered, including idempotency and dry-run behavior. - Added IrimcDegreeMapper for mapping IRIMC titles to degrees.
This commit is contained in:
+29
-11
@@ -79,7 +79,7 @@
|
||||
> تخصصها درختیاند: هر شناسهٔ فرزند پیش از ذخیره با تمام والدهایش تا ریشه گسترش مییابد
|
||||
> (ارسال `[3]` «گوارش و کبد» → ذخیرهٔ `[2, 3]` یعنی «داخلی» + «گوارش و کبد»)، پس فرستادن
|
||||
> فقط برگ کافی است. شناسههای ناموجود نادیده گرفته میشوند.
|
||||
> برای دادهٔ ایمپورتشدهٔ قبل از این تغییر: `php bin/console app:doctors:backfill-specialty-parents`.
|
||||
> برای دادهٔ ایمپورتشدهٔ قبل از این تغییر: `php bin/console app:doctors:repair --only=specialty-parents`.
|
||||
|
||||
---
|
||||
|
||||
@@ -209,23 +209,41 @@ X-Service-Token: <مقدار env CRAWLER_SERVICE_TOKEN>
|
||||
- چرخش credential: تغییر `CRAWLER_SERVICE_TOKEN` + تغییر رمز با `app:system-owner … --password=…`؛
|
||||
ابطال فوری: `--deactivate`.
|
||||
|
||||
### backfill نقش جانشینهای قدیمی
|
||||
### ترمیم دادهٔ ایمپورتشده — یک کامند برای همه
|
||||
|
||||
جانشینهای ساختهشده قبل از افزودن نقش marker:
|
||||
پس از هر خزش، **یک** دستور کافی است. همهٔ گامها idempotentاند؛ اجرای دوباره بیضرر است
|
||||
و صفر تغییر میدهد.
|
||||
|
||||
```bash
|
||||
php bin/console app:doctors:backfill-surrogate-role --dry-run # فقط گزارش
|
||||
php bin/console app:doctors:backfill-surrogate-role # اعمال
|
||||
php bin/console app:doctors:repair --dry-run # گزارش کامل، بدون هیچ تغییری
|
||||
php bin/console app:doctors:repair # اعمال همهٔ گامها
|
||||
php bin/console app:doctors:repair --list # فهرست گامها
|
||||
```
|
||||
|
||||
### اصلاح نام رکوردهای قدیمی (حذف پیشوند «دکتر»)
|
||||
| گام | چه چیزی را درست میکند |
|
||||
|---|---|
|
||||
| `names` | حذف پیشوند «دکتر» از نام (نظام پزشکی نام را با عنوان میدهد؛ لایهٔ نمایش خودش عنوان میگذارد) |
|
||||
| `degrees` | بازمحاسبهٔ درجه از روی عنوان خام `info` |
|
||||
| `specialty-parents` | افزودن تخصصهای والد به پزشکانی که فقط تخصص فرزند دارند |
|
||||
| `surrogate-role` | افزودن `ROLE_UNCLAIMED_DOCTOR` به کاربران جانشین قدیمی |
|
||||
|
||||
رکوردهای IRIMC که پیش از این تغییر با پیشوند «دکتر» ذخیره شده بودند:
|
||||
سوییچها:
|
||||
|
||||
```bash
|
||||
php bin/console app:doctors:fix-irimc-names --dry-run # فقط گزارش
|
||||
php bin/console app:doctors:fix-irimc-names # اعمال (فقط source='irimc')
|
||||
```
|
||||
| سوییچ | اثر |
|
||||
|---|---|
|
||||
| `--dry-run` | فقط گزارش؛ هیچ نوشتنی انجام نمیشود |
|
||||
| `--only=a,b` | فقط این گامها |
|
||||
| `--skip=a,b` | همه جز این گامها |
|
||||
| `--all-sources` | پزشکان هر منبعی، نه فقط `source='irimc'` |
|
||||
| `--include-claimed` | پروفایلهای تصاحبشده را هم بازنویسی کن (پیشفرض: خیر — ورودی مالک مقدم است) |
|
||||
|
||||
> **گام `degrees` چرا لازم شد:** خزنده (`crawler_core.py::map_degree`) تا ۱۴۰۵/۰۴/۲۸ دو کد را
|
||||
> جابهجا میفرستاد — «فوق تخصص» را `specialist` (برچسب: متخصص) و «تخصص» را `expert`
|
||||
> (برچسب: فوق تخصص). خزنده اصلاح شده است؛ این گام رکوردهای ایمپورتشدهٔ همان دوره را
|
||||
> از روی متن خام `info` بازمحاسبه میکند، نه با معکوسکردن کورکورانهٔ مقدار فعلی.
|
||||
|
||||
> **افزودن گام جدید:** یک کلاس با `DoctorRepairStep` در `src/Doctor/Service/Repair/` بساز؛
|
||||
> خودکار کشف و اجرا میشود و نیازی به تغییر کامند نیست.
|
||||
|
||||
### پاکسازی کامل برای دیتابیس تست
|
||||
|
||||
|
||||
Reference in New Issue
Block a user