orc-order-v2/.trae/documents/通用采购单规范化与规则引擎优化方案.md
houhuan fb12e63c4c feat(供应商管理): 新增规则引擎与词典配置支持
refactor(处理器): 重构通用供应商处理器以支持规则引擎
docs: 更新README与文档说明供应商管理功能
build: 更新打包脚本注入版本信息
test: 添加规则引擎单元测试
2025-12-12 13:46:00 +08:00

42 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 目标
- 通过规则引擎把不同供货商的OCR表格规范为统一字段并自动拆分“数量+单位”、从名称推断规格、标记赠品,最终稳定填充银豹模板。
## 配置与规则
- 扩展 `suppliers_config.json`
- `rules`: 规则数组(顺序执行)
- `output_templates`: 模板列表;`current_template_index`: 当前模板索引
- 规则类型:
- `split_quantity_unit`拆分“4瓶/1箱/3件/2提/2盒”
- `extract_spec_from_name`解析“1.8L×8瓶”“550水24白膜”等
- `normalize_unit`(单位归一“箱/件/提/盒/瓶”→统一“瓶”,按包装转换数量)
- `compute_quantity_from_total`(数量缺失时用金额/单价反推)
- `infer_supplier`(文件名/内容推断供应商)
- `fill_missing`(填默认值)
- `mark_gift`(金额/单价=0或“赠品/O/o/空”)
## 实现
- 新建 `app/core/handlers/rule_engine.py`输入DataFrame与规则列表返回规范化DataFrame
-`GenericSupplierProcessor` 中:列映射→清洗→规则引擎→输出
- 列映射向导增强:
- 增加“规则预设”选择与“应用规则预览”按钮,显示原始/规范化后的对比
- 支持导入/导出(映射+规则JSON
- 模板管理增强:模板组选择、批量校验、示例模板生成
## 解析与正则
- 名称解析:
- 容量×数量:`(\d+(?:\.\d+)?)(ml|l|升|毫升)[*×xX](\d+)`
- 简单数量×数量:`(\d+)[*×xX](\d+)`
- 词典忽略词:如“白膜”等
- 数量拆分:`(?P<num>\d+(?:\.\d+)?)(?P<unit>箱|件|提|盒|瓶)`
## 验证
- 单元测试覆盖规则与表头识别;烟雾测试涵盖“无单位/规格/数量混杂”的样本
- GUI预览确认规则效果保存后热重载处理器
## 里程碑
- Day 1规则引擎与处理器接入
- Day 2向导规则预览与导入/导出;模板组管理
- Day 3测试与样本库
- Day 4打包与交付验证
请确认,我将立即开始实现并逐步提交验证结果。