feat: support productionID input for order number resolution

- Add OrderNumberResolver service to auto-recognize productionID and 生产订单号 formats
- Integrate MySQL database lookup for productionID to 生产订单号 conversion
- Update OrderNumberInput component with format statistics display
- Modify Extractor and Cleaner to resolve order numbers before processing

Database configuration:
- Table: productionContractData_26 年压力表合同数据
- Fields: 总排号 (productionID), 生产订单号 (production order number)

Supported formats:
- productionID: 2 digits + 1 letter + serial number (e.g., 26B742)
- 生产订单号:SC + 14 digits (e.g., SC70202601040109)
This commit is contained in:
Misaka
2026-03-01 17:00:10 +08:00
parent 079d3aeff6
commit 450eb41f96
8 changed files with 744 additions and 11 deletions

View File

@@ -1,4 +1,25 @@
import type { FileAPI, ExtractorAPI, CleanerAPI, DatabaseAPI } from '../main/types/ipc-api.types'
import type { ResolverInput, ResolverResponse } from '../main/ipc/resolver-handler'
/**
* Order number resolver API
*/
export interface ResolverAPI {
/**
* Resolve productionIDs and 生产订单号 to production order numbers
* @param input - Resolver input with list of inputs
*/
resolve: (input: ResolverInput) => Promise<ResolverResponse>
/**
* Validate input format only (without database lookup)
* @param inputs - List of inputs to validate
*/
validateFormat: (inputs: string[]) => Promise<{
success: boolean
results?: Array<{ input: string; type: 'productionId' | 'orderNumber' | 'unknown' }>
error?: string
}>
}
declare global {
interface Window {
@@ -22,6 +43,7 @@ declare global {
extractor: ExtractorAPI
cleaner: CleanerAPI
database: DatabaseAPI
resolver: ResolverAPI
}
api: unknown
}

View File

@@ -3,6 +3,7 @@ import { electronAPI } from '@electron-toolkit/preload'
import type { MySqlConfig, SqlServerConfig } from '../main/types/ipc-api.types'
import type { ExtractorInput } from '../main/types/extractor.types'
import type { CleanerInput } from '../main/types/cleaner.types'
import type { ResolverInput } from '../main/ipc/resolver-handler'
// Custom APIs for renderer
const api = {
@@ -25,6 +26,12 @@ const api = {
runCleaner: (input: CleanerInput) => ipcRenderer.invoke('cleaner:run', input)
},
// Order number resolver
resolver: {
resolve: (input: ResolverInput) => ipcRenderer.invoke('resolver:resolve', input),
validateFormat: (inputs: string[]) => ipcRenderer.invoke('resolver:validateFormat', inputs)
},
// Database service
database: {
connectMySql: (config: MySqlConfig) => ipcRenderer.invoke('database:mysql:connect', config),