refactor(处理器): 重构通用供应商处理器以支持规则引擎 docs: 更新README与文档说明供应商管理功能 build: 更新打包脚本注入版本信息 test: 添加规则引擎单元测试
3.1 KiB
3.1 KiB
目标
- 为具体供应商定制更细的解析规则(词典、包装倍数、忽略词、同义单位),并在列映射向导提供可视化编辑入口与预览。
配置扩展
- 扩展
suppliers_config.json每个供应商对象新增:dictionary: 解析词典ignore_words: ["白膜","彩膜","赠品"](在名称解析时剔除)unit_synonyms: {"箱":"件","提":"件","盒":"件","瓶":"瓶"}pack_multipliers: {"件": 24, "箱": 24, "提": 12, "盒": 10}(缺规格时用于单位归一)name_patterns: [正则表达式](从名称抽取规格/容量×数量,如([\d\.]+)(ml|l|升|毫升)[*×xX](\d+))default_unit: "瓶"default_package_quantity: 1
rules: 规则数组(与现有一致),规则在执行时可访问dictionaryoutput_templates: 模板列表;current_template_index: 当前选择索引
规则引擎增强
- 在
app/core/handlers/rule_engine.py:apply_rules(df, rules, dictionary=None)接口增加dictionary参数extract_spec_from_name:先剔除ignore_words,匹配name_patterns,无匹配时按pack_multipliers推断包装数量normalize_unit:使用unit_synonyms统一单位;如单位为“件/箱/提/盒”且有package_quantity或pack_multipliers,数量×包装并单位归一为“瓶”split_quantity_unit:解析数量中的单位,同义词归一;无单位时用default_unit- 其余规则(回推数量、填充、赠品标记)保持不变
供应商处理器接入
GenericSupplierProcessor:- 从
supplier_config['dictionary']取词典并传入apply_rules,保证每家供应商按自身词典执行 - 若未配置词典,使用默认空词典
- 从
向导UI扩展(右侧系统设置→列映射向导)
- 增加“供应商规则”区域:
- 可编辑列表:
- 忽略词(多行输入或表格)
- 单位同义词(键值对表格:原单位→统一单位)
- 包装倍数(单位→包装数量)
- 名称正则(多行,每行一个表达式)
- 默认单位、默认包装数量(输入框)
- 操作:新增/删除、导入(JSON)/导出(JSON)、保存
- 规则预览:
- 选择预设(基础拆分与推断或自定义),点击“应用规则预览”,显示“原始/规范化”两列树表对比
- 保存行为:将
dictionary与rules写入对应供应商的suppliers_config.json并重载处理器
- 可编辑列表:
验证与测试
- 单元测试:
- 名称解析(容量×数量、简单乘法、忽略词影响、同义词归一)
- 数量拆分与单位归一(“4瓶/1箱/3件/2提/2盒”)
- 包装倍数应用与数量回推
- 烟雾测试:构建 5–10 类供货商样本,验证端到端转换与模板填充可用
交付
- 完成词典与规则编辑入口、配置扩展与引擎接入,提交验证报告与示例配置;保留导入/导出便于你迭代调整。
确认后我将按此方案实现:扩展配置→增强规则引擎→处理器接入→向导UI与预览→测试。