84 lines
2.1 KiB
TypeScript
84 lines
2.1 KiB
TypeScript
/** 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 };
|