diff --git a/src/request-management/request-management.service.ts b/src/request-management/request-management.service.ts index ecad0b3..734f8c5 100644 --- a/src/request-management/request-management.service.ts +++ b/src/request-management/request-management.service.ts @@ -9373,16 +9373,26 @@ export class RequestManagementService { }, }; + if (typeof (req as any).markModified === "function") { + (req as any).markModified("expert"); + } + if (!Array.isArray(req.history)) req.history = []; - req.history.push({ - type: "V3_ACCIDENT_FIELDS_SAVED", - actor: { - actorId: new Types.ObjectId(String(expert.sub)), - actorName: `${expert.firstName || ""} ${expert.lastName || ""}`.trim(), - actorType: "field_expert", - }, - metadata: { accidentWay: fields.accidentWay }, - } as any); + // Avoid duplicate history entries on idempotent retries. + const alreadyRecorded = (req.history as any[]).some( + (e: any) => e?.type === "V3_ACCIDENT_FIELDS_SAVED", + ); + if (!alreadyRecorded) { + req.history.push({ + type: "V3_ACCIDENT_FIELDS_SAVED", + actor: { + actorId: new Types.ObjectId(String(expert.sub)), + actorName: `${expert.firstName || ""} ${expert.lastName || ""}`.trim(), + actorType: "field_expert", + }, + metadata: { accidentWay: fields.accidentWay }, + } as any); + } await (req as any).save();