/** * V2-style status buckets (`IN_PROGRESS` + native statuses) for insurer tenant scope. * `unifiedByPublicId.total` matches merging blame + claim by `publicId` (see insurer `files` API). */ export class InsurerRequestsSummaryDtoRs { claim: Record; blame: Record; unifiedByPublicId: { total: number }; constructor( claim: Record, blame: Record, unifiedTotal: number, ) { this.claim = claim; this.blame = blame; this.unifiedByPublicId = { total: unifiedTotal }; } } export class InsurerPerMonthReportRowDtoRs { stDate: Date; enDate: Date; faLabel: string; data: InsurerRequestsSummaryDtoRs; constructor( stDate: Date, enDate: Date, faLabel: string, data: InsurerRequestsSummaryDtoRs, ) { this.stDate = stDate; this.enDate = enDate; this.faLabel = faLabel; this.data = data; } } /** Per-expert file-activity stats (ExpertFileActivity: checked / unchecked / handled). */ export class InsurerExpertWorkLogEntryDtoRs { expertId: string; fullName: string; /** * `expert` = blame-panel expert (`expert` collection — same as insurer expert list, not `field-expert`). * `damage_expert` = claim damage expert (`damage-expert` collection). * Field experts (`RoleEnum.FIELD_EXPERT`, `field-expert` collection) are out of scope here. */ expertKind: "expert" | "damage_expert"; /** Distinct files in handled state after replaying activity up to the cutoff (or “now”). */ totalHandled: number; /** Distinct files currently marked checked and not yet handled (same rules as expert-insurer stats). */ currentlyChecking: number; /** Distinct files that had at least one CHECKED event in the reporting window (all-time = ever; monthly = that month only). */ distinctFilesCheckedInPeriod: number; constructor( expertId: string, fullName: string, expertKind: "expert" | "damage_expert", totalHandled: number, currentlyChecking: number, distinctFilesCheckedInPeriod: number, ) { this.expertId = expertId; this.fullName = fullName; this.expertKind = expertKind; this.totalHandled = totalHandled; this.currentlyChecking = currentlyChecking; this.distinctFilesCheckedInPeriod = distinctFilesCheckedInPeriod; } } export class InsurerExpertWorkLogResponseDtoRs { experts: InsurerExpertWorkLogEntryDtoRs[]; constructor(experts: InsurerExpertWorkLogEntryDtoRs[]) { this.experts = experts; } } export class InsurerExpertWorkLogPerMonthRowDtoRs { stDate: Date; enDate: Date; faLabel: string; experts: InsurerExpertWorkLogEntryDtoRs[]; constructor( stDate: Date, enDate: Date, faLabel: string, experts: InsurerExpertWorkLogEntryDtoRs[], ) { this.stDate = stDate; this.enDate = enDate; this.faLabel = faLabel; this.experts = experts; } }