refactor(处理器): 重构通用供应商处理器以支持规则引擎 docs: 更新README与文档说明供应商管理功能 build: 更新打包脚本注入版本信息 test: 添加规则引擎单元测试
2.0 KiB
2.0 KiB
目标
- 通过规则引擎把不同供货商的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:打包与交付验证
请确认,我将立即开始实现并逐步提交验证结果。