From 3222e03ceaa2fcd4782dcf3438bf392803a3c01d Mon Sep 17 00:00:00 2001 From: Misaka Date: Sun, 1 Mar 2026 11:53:59 +0800 Subject: [PATCH] feat: define core TypeScript interfaces Co-Authored-By: Claude Sonnet 4.5 --- src/main/types/cleaner.types.ts | 21 +++++++++++++++++++++ src/main/types/erp.types.ts | 16 ++++++++++++++++ src/main/types/extractor.types.ts | 17 +++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 src/main/types/cleaner.types.ts create mode 100644 src/main/types/erp.types.ts create mode 100644 src/main/types/extractor.types.ts diff --git a/src/main/types/cleaner.types.ts b/src/main/types/cleaner.types.ts new file mode 100644 index 0000000..36094cc --- /dev/null +++ b/src/main/types/cleaner.types.ts @@ -0,0 +1,21 @@ +export interface CleanerInput { + orderNumbers: string[]; + materialCodes: string[]; + dryRun: boolean; + onProgress?: (message: string, progress: number) => void; +} + +export interface CleanerResult { + ordersProcessed: number; + materialsDeleted: number; + materialsSkipped: number; + errors: string[]; + details: OrderCleanDetail[]; +} + +export interface OrderCleanDetail { + orderNumber: string; + materialsDeleted: number; + materialsSkipped: number; + errors: string[]; +} \ No newline at end of file diff --git a/src/main/types/erp.types.ts b/src/main/types/erp.types.ts new file mode 100644 index 0000000..b57ad5a --- /dev/null +++ b/src/main/types/erp.types.ts @@ -0,0 +1,16 @@ +export interface ErpConfig { + url: string; + username: string; + password: string; +} + +export interface ErpSession { + browser: import('playwright').Browser; + context: import('playwright').BrowserContext; + page: import('playwright').Page; + isLoggedIn: boolean; +} + +export interface ProgressCallback { + (message: string, progress?: number): void; +} \ No newline at end of file diff --git a/src/main/types/extractor.types.ts b/src/main/types/extractor.types.ts new file mode 100644 index 0000000..14addb6 --- /dev/null +++ b/src/main/types/extractor.types.ts @@ -0,0 +1,17 @@ +export interface ExtractorInput { + orderNumbers: string[]; + batchSize?: number; + onProgress?: (message: string, progress: number) => void; +} + +export interface ExtractorResult { + downloadedFiles: string[]; + mergedFile: string | null; + recordCount: number; + errors: string[]; +} + +export interface OrderInfo { + orderNumber: string; + productionId: string; +} \ No newline at end of file