diff --git a/src/claim-request-management/expert-initiated-claim.mirror.controller.ts b/src/claim-request-management/expert-initiated-claim.mirror.controller.ts index 9045b22..501ca09 100644 --- a/src/claim-request-management/expert-initiated-claim.mirror.controller.ts +++ b/src/claim-request-management/expert-initiated-claim.mirror.controller.ts @@ -53,6 +53,7 @@ import { CapturePartV2ResponseDto, } from "./dto/capture-part-v2.dto"; import { GetCaptureRequirementsV2ResponseDto } from "./dto/capture-requirements-v2.dto"; +import { Role } from "src/common/auth/enums"; /** * Expert-initiated claim flow that mirrors the normal user claim API @@ -71,7 +72,7 @@ import { GetCaptureRequirementsV2ResponseDto } from "./dto/capture-requirements- @Controller("v2/expert-initiated/claim-request-management") @ApiBearerAuth() @UseGuards(LocalActorAuthGuard, RolesGuard) -@Roles(RoleEnum.FIELD_EXPERT) +@Roles(RoleEnum.FIELD_EXPERT, RoleEnum.FILE_MAKER, RoleEnum.FILE_REVIEWER) export class ExpertInitiatedClaimMirrorController { constructor( private readonly claimRequestManagementService: ClaimRequestManagementService, @@ -81,7 +82,8 @@ export class ExpertInitiatedClaimMirrorController { @Post("create-from-blame/:blameRequestId") @ApiParam({ name: "blameRequestId" }) @ApiOperation({ - summary: "[Expert mirror] Create claim from expert-initiated IN_PERSON blame", + summary: + "[Expert mirror] Create claim from expert-initiated IN_PERSON blame", description: "Blame must be COMPLETED. Creates a ClaimCase owned by the damaged (non-guilty) party.", }) @@ -173,8 +175,7 @@ export class ExpertInitiatedClaimMirrorController { }) @ApiBody({ type: SelectOuterPartsV2Dto, - description: - "Selected vehicle type + selected outer part IDs from catalog", + description: "Selected vehicle type + selected outer part IDs from catalog", examples: { example1: { summary: "Sedan - minor front damage", @@ -211,7 +212,10 @@ export class ExpertInitiatedClaimMirrorController { description: "Outer parts selected successfully", type: SelectOuterPartsV2ResponseDto, }) - @ApiResponse({ status: 400, description: "Invalid workflow step or validation failed" }) + @ApiResponse({ + status: 400, + description: "Invalid workflow step or validation failed", + }) @ApiResponse({ status: 404, description: "Claim case not found" }) @ApiResponse({ status: 409, description: "Outer parts already selected" }) async selectOuterParts( @@ -296,9 +300,15 @@ Optional: upload car green card file in the same step. description: "Other parts and bank information saved successfully", type: SelectOtherPartsV2ResponseDto, }) - @ApiResponse({ status: 400, description: "Invalid workflow step or validation failed" }) + @ApiResponse({ + status: 400, + description: "Invalid workflow step or validation failed", + }) @ApiResponse({ status: 404, description: "Claim case not found" }) - @ApiResponse({ status: 409, description: "Bank information already submitted" }) + @ApiResponse({ + status: 409, + description: "Bank information already submitted", + }) async selectOtherParts( @Param("claimRequestId") claimRequestId: string, @Body() body: SelectOtherPartsV2Dto, @@ -530,14 +540,22 @@ Returns status of each item (uploaded/captured or not). type: "object", required: ["sign", "agree", "branchId"], properties: { - sign: { type: "string", format: "binary", description: "Signature image" }, - agree: { type: "boolean", description: "true to accept, false to reject" }, + sign: { + type: "string", + format: "binary", + description: "Signature image", + }, + agree: { + type: "boolean", + description: "true to accept, false to reject", + }, branchId: { type: "string", description: "Insurer branch ID" }, }, }, }) @ApiOperation({ - summary: "Owner signature on expert pricing (Flow 3 — expert acts on behalf of user)", + summary: + "Owner signature on expert pricing (Flow 3 — expert acts on behalf of user)", description: "Field expert submits the damaged party's signature during the final approval stage. " + "Delegates to the same service method as the user sign endpoint; the expert's " +