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

2.0 KiB
Raw Blame History

目标

  • 通过规则引擎把不同供货商的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打包与交付验证

请确认,我将立即开始实现并逐步提交验证结果。