From 05c5b70b4dd4c61426bff2e995b1493c017cf851 Mon Sep 17 00:00:00 2001 From: SepehrYahyaee <7heycallmegray@gmail.com> Date: Sat, 25 Apr 2026 17:10:07 +0330 Subject: [PATCH] YARA-837 --- src/ai/ai.service.ts | 2 +- .../claim-request-management.service.ts | 31 ++++++++++++++++++- .../dto/claim-details-v2.dto.ts | 11 ++++++- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/ai/ai.service.ts b/src/ai/ai.service.ts index 759ab79..1eff579 100644 --- a/src/ai/ai.service.ts +++ b/src/ai/ai.service.ts @@ -25,7 +25,7 @@ export class AiService implements OnModuleInit { username: process.env.AI_USERNAME, password: process.env.AI_PASSWORD, }, - timeout: 1000, // 30 second timeout + timeout: 30000, // 30 second timeout }; private get profileOptions(): AxiosRequestConfig { diff --git a/src/claim-request-management/claim-request-management.service.ts b/src/claim-request-management/claim-request-management.service.ts index 720e997..02852c1 100644 --- a/src/claim-request-management/claim-request-management.service.ts +++ b/src/claim-request-management/claim-request-management.service.ts @@ -5009,8 +5009,30 @@ export class ClaimRequestManagementService { }; } + const getPartLabelFa = (key: string): string => { + const labels: Record = { + hood: 'کاپوت', + trunk: 'صندوق عقب', + roof: 'سقف', + front_right_door: 'درب جلو راست', + front_left_door: 'درب جلو چپ', + rear_right_door: 'درب عقب راست', + rear_left_door: 'درب عقب چپ', + front_bumper: 'سپر جلو', + rear_bumper: 'سپر عقب', + front_right_fender: 'گلگیر جلو راست', + front_left_fender: 'گلگیر جلو چپ', + rear_right_fender: 'گلگیر عقب راست', + rear_left_fender: 'گلگیر عقب چپ', + }; + return labels[key] || key; + }; + const damagedPartsData = claim.media?.damagedParts as any; - const damagedParts: Record = {}; + const damagedParts: Record< + string, + { label_fa: string; captured: boolean; url?: string } + > = {}; const resendPartKeys = normalizeResendPartKeys( claim.evaluation?.damageExpertResend?.resendCarParts, ); @@ -5021,6 +5043,7 @@ export class ClaimRequestManagementService { for (const p of partKeysForDetails) { const cap = hasCapture(damagedPartsData, p); damagedParts[p] = { + label_fa: getPartLabelFa(p), captured: !!cap, url: cap?.url || (cap?.path ? buildFileLink(cap.path) : undefined), }; @@ -5080,6 +5103,12 @@ export class ClaimRequestManagementService { carAngles, damagedParts, expertResend, + evaluation: claim.evaluation + ? { + damageExpertReply: claim.evaluation.damageExpertReply, + damageExpertReplyFinal: claim.evaluation.damageExpertReplyFinal, + } + : undefined, ...(isExpertViewer ? { userRating: claim.userRating diff --git a/src/claim-request-management/dto/claim-details-v2.dto.ts b/src/claim-request-management/dto/claim-details-v2.dto.ts index 4e942b0..2bbfe75 100644 --- a/src/claim-request-management/dto/claim-details-v2.dto.ts +++ b/src/claim-request-management/dto/claim-details-v2.dto.ts @@ -76,7 +76,7 @@ export class ClaimDetailsV2ResponseDto { carAngles?: Record; @ApiPropertyOptional({ description: 'Damaged parts captured' }) - damagedParts?: Record; + damagedParts?: Record; @ApiPropertyOptional({ description: @@ -84,6 +84,15 @@ export class ClaimDetailsV2ResponseDto { }) expertResend?: ExpertResendDetailsV2Dto; + @ApiPropertyOptional({ + description: "Damage expert opinion(s): initial and final (after objection).", + type: Object, + }) + evaluation?: { + damageExpertReply?: unknown; + damageExpertReplyFinal?: unknown; + }; + @ApiPropertyOptional({ description: 'User satisfaction rating (if submitted)' }) userRating?: { progressSpeed: number;