/** Stable request, query and internal data contracts for report-material domains. */ export type ImportMapping = { sourceHeader: string; sourceHeaderPath?: string; sourceColumnIndex: number; targetFieldCode: string; targetKind: 'signatureName' | 'purpose' | 'siteName' | 'url' | 'remark' | 'dynamic'; fieldType: 'string' | 'image' | 'file'; required?: boolean; transform?: string; sortOrder?: number; }; export interface CreateImportProfileDto { id?: string; name: string; reportType: 'signature' | 'drainage'; tenantId?: string; applicationId?: string; sheetName?: string; headerRowCount?: number; dataStartRow?: number; status?: string; columns: ImportMapping[]; } export interface ImportCommitDto { mappings: ImportMapping[]; profile?: CreateImportProfileDto; operatorId?: string; } export interface ReviewImportItemsDto { decision: 'approve' | 'reject'; itemIds?: string[]; reason?: string; reviewerId?: string; } export type PagedQuery = { keyword?: string; startAt?: string; endAt?: string; page?: number; pageSize?: number; }; export interface CreateReportBatchDto { createdById?: string; idempotencyKey?: string; items: Array<{ reportType: 'signature' | 'drainage'; signatureId: string; drainageItemId?: string; materialVersion?: number }>; } export type ReportBatchTarget = { id: string; name: string; carrier: string; businessKey: string; eligible: boolean; blockedReasons: string[]; duplicateBatchId?: string }; export type ReportBatchInspection = { id: string; reportType: 'signature' | 'drainage'; signatureId: string; drainageItemId?: string; materialVersion: number; name: string; tenantName: string; applicationId?: string; applicationName: string; eligible: boolean; blockedReasons: string[]; targets: ReportBatchTarget[]; }; export type AnalyzeImportOptions = { tenantId: string; applicationId?: string; reportType: 'signature' | 'drainage'; sheetName?: string; headerRowCount: number; dataStartRow: number; profileId?: string; operatorId?: string; }; export type EmbeddedImage = { row: number; column: number; extension: string; buffer: Buffer };