3.7 KiB
3.7 KiB
Validation 模块
Validation 模块负责共享订单号管理、输入识别、数据库校验查询、物料结果富化,以及为 Cleaner 提供可消费的数据。
1. 模块职责
- 存储与读取共享
Production IDs - 将输入转换为可校验的 source numbers
- 查询数据库中的物料记录
- 结合类型关键词和已标记物料生成校验结果
- 为 Cleaner 提供订单号与物料代码
2. 模块结构
graph TD
Handler[validation-handler]
AppSvc[validation-application-service]
Store[shared-production-ids-store]
Input[production-input-service]
DB[validation-database]
DAO[DAO / database services]
Handler --> Store
Handler --> AppSvc
AppSvc --> Input
AppSvc --> DB
DB --> DAO
3. 关键入口文件
src/main/ipc/validation-handler.tssrc/main/services/validation/validation-application-service.tssrc/main/services/validation/shared-production-ids-store.tssrc/main/services/validation/production-input-service.tssrc/main/services/validation/validation-database.tssrc/renderer/src/hooks/useValidation.ts
4. 主流程
sequenceDiagram
participant UI as Renderer / useValidation / useCleaner
participant Handler as validation-handler
participant Store as shared-production-ids-store
participant AppSvc as validation-application-service
participant Input as production-input-service
participant DB as validation-database
UI->>Handler: set/get shared Production IDs
Handler->>Store: read/write sender scoped IDs
UI->>Handler: validate(request)
Handler->>AppSvc: validate(...)
AppSvc->>Input: resolve source numbers
AppSvc->>DB: query material records
DB-->>AppSvc: rows
AppSvc-->>Handler: validation results + stats
Handler-->>UI: response
5. 共享 Production IDs
共享订单号是 Validation 模块最重要的跨页面状态之一。
graph LR
Extractor[Extractor]
Store[shared-production-ids-store]
Validation[Validation]
Cleaner[Cleaner]
Extractor --> Store
Store --> Validation
Validation --> Cleaner
这个状态当前按 senderId 维度存储,主要被:
Extractor写入Validation读取和解析Cleaner间接消费
6. 结果生成逻辑
校验结果不仅是数据库原始数据,还会叠加:
- 已标记删除状态
- 负责人关键词匹配
- 用户权限作用域
flowchart TD
DBRows[数据库物料记录]
Marked[已标记物料]
Keywords[类型关键词]
Scope[用户作用域]
Result[ValidationResult]
DBRows --> Result
Marked --> Result
Keywords --> Result
Scope --> Result
7. 模块输出
Validation 主要对外输出两类数据:
ValidationResponse提供给校验页和 Cleaner 页CleanerData提供给 Cleaner 执行前的数据准备
8. 最近的结构优化
这一块已经从早期的大 validation-handler 中拆分出来:
shared-production-ids-storevalidation-databaseproduction-input-servicevalidation-application-service
这样之后:
- handler 只做 IPC 壳
- 共享状态有独立归属
- 数据库方言差异有独立封装
9. 常见改动点
- 改共享订单号逻辑:
shared-production-ids-store.ts - 改输入识别:
production-input-service.ts - 改数据库差异:
validation-database.ts - 改校验结果富化:
validation-application-service.ts - 改 renderer 侧调用:
useValidation.ts
10. 修改建议
- 不要再把共享状态放回 handler
- 数据库分支优先收敛在
validation-database - 校验结果组装逻辑尽量集中在 application service
- 跨模块共享数据要保持单向来源清晰