export const PR = { reportTitle: "گزارش پرونده بیمه گر", publicId: "شناسه عمومی", requestNo: "شماره درخواست", empty: "-", ownerSection: "مالک خودروی زیان دیده", guiltyOwnerSection: "مالک خودروی مقصر", damagedParticipantsSection: "اشخاص و نقش‌های خودروی زیان‌دیده", guiltyParticipantsSection: "اشخاص و نقش‌های خودروی مقصر", driverSection: "راننده خودروی زیان دیده", damagedThirdPartyInsuranceSection: "بیمه شخص ثالث زیان‌دیده", damagedCarBodyInsuranceSection: "بیمه بدنه زیان‌دیده", guiltyThirdPartyInsuranceSection: "بیمه شخص ثالث مقصر", guiltyCarBodyInsuranceSection: "بیمه بدنه مقصر", damagedVehicleSection: "اطلاعات خودروی زیان‌دیده", guiltyVehicleSection: "اطلاعات خودروی مقصر", vehicleSection: "اطلاعات خودرو", damagedStatementSection: "اظهارات و اقرار زیان‌دیده", guiltyStatementSection: "اظهارات و اقرار مقصر", timelineSection: "زمان‌بندی پرونده", fanavaranSection: "کدهای فناوران", evaluationSection: "نتیجه ارزیابی", accidentSection: "گزارش حادثه", name: "نام", phone: "شماره تلفن", nationalCode: "کد ملی", birthDate: "تاریخ تولد", sheba: "شماره شبا", licenseType: "نوع گواهینامه", licenseDate: "تاریخ گواهینامه", licenseNumber: "شماره گواهینامه", driverLicense: "گواهینامه راننده", insuranceCompany: "شرکت بیمه", policyNumber: "شماره بیمه‌نامه", policyStartDate: "تاریخ شروع بیمه‌نامه", policyEndDate: "تاریخ پایان بیمه‌نامه", financialCeiling: "سقف تعهد مالی", coverages: "پوشش‌ها", fileRegisteredAt: "تاریخ و ساعت ثبت پرونده", evaluationRegisteredAt: "تاریخ و ساعت ثبت نتیجه ارزیابی", fanavaranClaimNo: "شماره پرونده فناوران", fanavaranClaimId: "کد پرونده فناوران", fanavaranDamageCaseId: "کد کیس خسارت فناوران", fanavaranExpertiseId: "کد کارشناسی فناوران", fanavaranPolicyId: "کد بیمه‌نامه فناوران", fanavaranDriverId: "کد راننده فناوران", fanavaranVehicleKindId: "کد نوع خودرو فناوران", fanavaranInsuranceCorpId: "کد شرکت بیمه فناوران", evaluationResult: "نتیجه ارزیابی", evaluationExpert: "کارشناس ارزیاب", evaluationSubmittedAt: "تاریخ و ساعت ثبت ارزیابی", evaluationResponse: "پاسخ / توضیحات کارشناس", evaluationPartsSection: "قیمت قطعات", part: "قطعه", partName: "نام قطعه", damageType: "نوع خسارت", partPrice: "قیمت قطعه", repairSalary: "اجرت تعمیر", totalPayment: "مبلغ کل", factorNeeded: "نیازمند فاکتور", daghi: "داغی", admitsGuilt: "اقرار به تقصیر", claimsDamage: "ادعای خسارت", acceptsExpertOpinion: "پذیرش نظر کارشناس", partyRole: "نقش طرف", driverRole: "راننده", vehicleOwnerRole: "مالک وسیله نقلیه", thirdPartyPolicyholderRole: "بیمه‌گذار شخص ثالث", carBodyPolicyholderRole: "بیمه‌گذار بدنه", data: "اطلاعات", date: "تاریخ", time: "زمان", accidentDate: "تاریخ حادثه", accidentTime: "ساعت حادثه", 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: "خیر", }; const WEATHER_LABELS: Record = { clear: "صاف", sunny: "صاف", rainy: "بارانی", rain: "بارانی", snowy: "برفی", snow: "برفی", foggy: "مه‌آلود", fog: "مه‌آلود", }; const ROAD_LABELS: Record = { muddy: "گلی", icy: "یخ‌زده", wet: "مرطوب", dry: "خشک", }; const LIGHT_LABELS: Record = { daylight: "روز", day: "روز", night: "شب", low_light: "کم‌نور", lowlight: "کم‌نور", }; /** 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; } export function persianAccidentCondition( kind: "weather" | "road" | "light", value: unknown, ): string | undefined { if (value === undefined || value === null || value === "") return undefined; const raw = String(value).trim(); const normalized = raw.toLowerCase().replace(/[\s-]+/g, "_"); const labels = kind === "weather" ? WEATHER_LABELS : kind === "road" ? ROAD_LABELS : LIGHT_LABELS; return labels[normalized] ?? raw; }