export const PR = { reportTitle: "گزارش پرونده بیمه گر", publicId: "شناسه عمومی", requestNo: "شماره درخواست", empty: "-", ownerSection: "مالک خودروی زیان دیده", driverSection: "راننده خودروی زیان دیده", insuranceSection: "اطلاعات بیمه (بدنه و شخص ثالث)", vehicleSection: "اطلاعات خودرو", accidentSection: "گزارش حادثه", name: "نام", phone: "شماره تلفن", nationalCode: "کد ملی", birthDate: "تاریخ تولد", sheba: "شماره شبا", licenseType: "نوع گواهینامه", licenseDate: "تاریخ گواهینامه", licenseNumber: "شماره گواهینامه", driverLicense: "گواهینامه راننده", data: "اطلاعات", date: "تاریخ", time: "زمان", experts: "کارشناس(ان)", location: "موقعیت (عرض و طول جغرافیایی)", weather: "وضعیت آب و هوا", road: "وضعیت جاده", light: "وضعیت نور", blameStatus: "وضعیت مقصر", claimStatus: "وضعیت خسارت", expertDecision: "نظر کارشناس مقصر", accidentWay: "نحوه برخورد", accidentReason: "علت حادثه", accidentType: "نوع حادثه", damageExpertDate: "تاریخ ارزیابی کارشناس خسارت", damageExpertNotes: "توضیحات کارشناس خسارت", partyDescription: "توضیحات طرف", } as const; const KEY_LABELS: Record = { policyNumber: "شماره بیمه‌نامه", company: "شرکت بیمه", insurerCompany: "شرکت بیمه‌گر", startDate: "تاریخ شروع", endDate: "تاریخ پایان", financialCeiling: "سقف مالی", coverages: "پوشش‌ها", plateId: "پلاک", name: "نام", model: "مدل", type: "نوع", carName: "نام خودرو", carModel: "مدل خودرو", carType: "نوع خودرو", isNew: "خودرو نو", isNewCar: "خودرو نو", leftDigits: "دو رقم چپ پلاک", centerAlphabet: "حرف پلاک", centerDigits: "سه رقم وسط پلاک", ir: "کد ایران", plate: "پلاک", CompanyName: "نام شرکت", PolicyNumber: "شماره بیمه‌نامه", PolicyStartDate: "تاریخ شروع بیمه", PolicyEndDate: "تاریخ پایان بیمه", LicenseType: "نوع گواهینامه", licenseType: "نوع گواهینامه", IssueDate: "تاریخ صدور", issueDate: "تاریخ صدور", ExpireDate: "تاریخ انقضا", expireDate: "تاریخ انقضا", party: "طرف", insurance: "بیمه", carBodyInsurance: "بیمه بدنه", inquiry: "استعلام", thirdParty: "شخص ثالث", carBody: "بدنه", claim: "خسارت", vehicle: "خودرو", blame: "مقصر", items: "موارد", value: "مقدار", mapped: "نتیجه استعلام", has: "موجود", updatedAt: "به‌روزرسانی", source: "منبع", PrntPlcyCmpDocNo: "شماره سند شرکت", MapTypNam: "نام نوع خودرو", MtrNum: "شماره موتور", ShsNum: "شماره شاسی", vin: "VIN", VinNumberField: "VIN", DisFnYrPrcnt: "درصد تخفیف مالی", DisLfYrPrcnt: "درصد تخفیف جانی", DisPrsnYrPrcnt: "درصد تخفیف شخص ثالث", MapVehicleSystemName: "سیستم خودرو", LfCvrCptl: "سرمایه پوشش جانی", FnCvrCptl: "سرمایه پوشش مالی", PrsnCvrCptl: "سرمایه پوشش شخص ثالث", PersonCvrCptl: "سرمایه پوشش شخص", LifeCvrCptl: "سرمایه پوشش حیات", FinancialCvrCptl: "سرمایه پوشش مالی", VehicleSystemCode: "کد سیستم خودرو", CarGroupCode: "کد گروه خودرو", CylCnt: "تعداد سیلندر", LastCompanyDocumentNumber: "شماره سند آخرین شرکت", UsageCode: "کد کاربری", MapUsageCode: "کد کاربری نگاشت‌شده", MapUsageName: "نام کاربری", Plk1: "دو رقم چپ پلاک", Plk2: "حرف پلاک", Plk3: "سه رقم وسط پلاک", PlkSrl: "کد ایران پلاک", SystemField: "سیستم", TypeField: "تیپ", UsageField: "کاربری", MainColorField: "رنگ اصلی", SecondColorField: "رنگ فرعی", ModelField: "مدل", CapacityField: "ظرفیت", CacityField: "ظرفیت", CylinderNumberField: "تعداد سیلندر", EngineNumberField: "شماره موتور", ChassisNumberField: "شماره شاسی", InstallDateField: "تاریخ نصب", AxelNumberField: "تعداد محور", WheelNumberField: "تعداد چرخ", CompanyCode: "کد شرکت", SatrtDate: "تاریخ شروع", EndDate: "تاریخ پایان", PolicyHealthLossCount: "تعداد خسارت جانی", PolicyFinancialLossCount: "تعداد خسارت مالی", PolicyPersonLossCount: "تعداد خسارت شخص ثالث", Tonage: "تناژ", ThirdPolicyCode: "کد بیمه‌نامه ثالث", SystemCodeCii: "کد سیستم", SystemNameCii: "نام سیستم", TypeCodeCii: "کد نوع", TypeNameCii: "نام نوع", UsageNameCii: "نام کاربری", UsageCodeCii: "کد کاربری", ModelCii: "مدل", StatusTypeCode: "کد وضعیت", label_fa: "برچسب فارسی", catalogKey: "کلید کاتالوگ", }; const STATUS_LABELS: Record = { AGREED: "توافق", DISAGREEMENT: "اختلاف نظر", UNKNOWN: "نامشخص", APPROVED: "تأیید شده", REJECTED: "رد شده", NEEDS_REVISION: "نیاز به بازبینی", UNDER_REVIEW: "در حال بررسی", PENDING: "در انتظار", true: "بله", false: "خیر", }; /** Turn `party.insurance.policyNumber` into a Persian label. */ export function persianFieldPath(path: string): string { if (!path) return PR.data; const parts = path.split(".").filter(Boolean); const last = parts[parts.length - 1] ?? path; const translatedLast = KEY_LABELS[last] ?? last; const inquiryRoot = parts.find( (p) => p === "thirdParty" || p === "carBody" || p === "mapped", ); if (inquiryRoot === "thirdParty") { return `بیمه شخص ثالث / ${translatedLast}`; } if (inquiryRoot === "carBody") { return `بیمه بدنه / ${translatedLast}`; } if (parts[0] === "party" && parts[1] === "insurance") { return `بیمه / ${translatedLast}`; } if (parts[0] === "claim" && parts[1] === "vehicle") { return `خودرو / ${translatedLast}`; } if (parts[0] === "party" && parts[1] === "vehicle") { return `خودرو / ${translatedLast}`; } if (parts.length === 1) return translatedLast; const translated = parts.map((part) => KEY_LABELS[part] ?? part); return translated.join(" / "); } export function persianStatus(value: unknown): string | undefined { if (value === undefined || value === null || value === "") return undefined; const key = String(value); return STATUS_LABELS[key] ?? key; }