diff --git a/.claude/prompt/service-management-refinements.md b/.claude/prompt/service-management-refinements.md new file mode 100644 index 00000000..7acecec1 --- /dev/null +++ b/.claude/prompt/service-management-refinements.md @@ -0,0 +1,259 @@ +# اصلاحات بخش مدیریت سرویسها (بیمه، ورودیهای عددی، صفحه جزئیات) + +## پروژه + +`clinicpro` — پنل ادمین React (`assets/admin/`) + یک اندپوینت جدید در backend (`src/ClinicService/`). +cross-repo نیست؛ سایت عمومی این بخش را مصرف نمیکند. + +## زمینه + +بخش «مدیریت سرویسها» (`/admin/clinic-services`) الان یک صفحه واحد است: نمای بخشها → نمای کارتهای سرویس، و +همهٔ عملیات (ویرایش، تعرفهٔ سالانه، پوشش بیمه) در مودال باز میشود. سه اشکال دارد: + +1. **دو جای تنظیم بیمه:** در مودال ویرایش سرویس یک سوییچ «این خدمت شامل بیمه میشود» + «قیمت تقریبی با بیمه» وجود دارد، + در حالی که تنظیمات واقعی بیمه (درصد پوشش، فرانشیز، سقف، به تفکیک هر بیمهگر) در `ServiceInsuranceModal` است. + کاربر دو منبع حقیقت میبیند. +2. **NaN با کیبورد فارسی:** فیلد «درصد پوشش» در `ServiceInsuranceModal` مقدار خام را `Number()` میکند؛ رقم فارسی → `NaN`. +3. **صفحهٔ جزئیات ندارد:** کلیک روی سرویس هیچ کاری نمیکند؛ همهچیز در مودال پراکنده است. + +## فایلهای مرتبط + +| فایل | نقش | +|------|-----| +| `assets/admin/pages/ClinicServicesPage.tsx` | صفحهٔ اصلی (۶۳۴ خط): نمای بخشها + کارت سرویسها + مودال ایجاد/ویرایش سرویس | +| `assets/admin/components/ServiceInsuranceModal.tsx` | مودال پوشش بیمه به تفکیک قرارداد بیمهگر (منشأ باگ NaN، خط ۱۳۴) | +| `assets/admin/components/ServiceTariffModal.tsx` | مودال تعرفههای سالانه | +| `assets/admin/components/ui/PriceInput.tsx` | ورودی مبلغ (تبدیل رقم را درست انجام میدهد ولی رفتار ویرایش ناقص است) | +| `assets/admin/lib/forms.ts` | `numericField()` / `latinDigitsField()` — wrapper صحیح برای RHF | +| `assets/admin/lib/utils.ts` | `toEnglishDigits`, `digitsOnly`, `rialToToman`, `tomanToRial`, `formatRial` | +| `assets/admin/components/ui/DigitInput.tsx` | ورودی فقط-رقم برای state معمولی (غیر RHF) | +| `assets/admin/App.tsx` | جدول route ها (خط ۲۴۸: `clinic-services`) | +| `src/ClinicService/Controller/ClinicServiceController.php` | اندپوینتهای سرویس/بخش/تعرفه | +| `src/ClinicService/Entity/ServiceItem.php` | Entity + `toArray()` (خط ~۱۵۰) | +| `docs/api/clinicservice.md` (یا معادلش) | مستندات API که باید در همین session بهروز شود | + +## وضعیت فعلی + +### ۱) سوییچ بیمه در مودال سرویس — `ClinicServicesPage.tsx:547-591` + +```tsx +{/* بیمه */} +