## 目标 - 通过规则引擎把不同供货商的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\d+(?:\.\d+)?)(?P箱|件|提|盒|瓶)` ## 验证 - 单元测试覆盖规则与表头识别;烟雾测试涵盖“无单位/规格/数量混杂”的样本 - GUI预览确认规则效果;保存后热重载处理器 ## 里程碑 - Day 1:规则引擎与处理器接入 - Day 2:向导规则预览与导入/导出;模板组管理 - Day 3:测试与样本库 - Day 4:打包与交付验证 请确认,我将立即开始实现并逐步提交验证结果。