refactor(处理器): 重构通用供应商处理器以支持规则引擎 docs: 更新README与文档说明供应商管理功能 build: 更新打包脚本注入版本信息 test: 添加规则引擎单元测试
4.3 KiB
4.3 KiB
痛点复盘
- 不同供应商存在强差异:列名不统一、单位混杂在数量、规格隐藏在名称、供应商缺失等
- 现有向导只解决列映射层面,规则与词典编辑、执行顺序与生效范围不清晰
- 缺少可视化“从原始→规范化→模板填充”的贯通验证;流程易跑不通
总体方案
- 建立“供应商规则系统”:可配置、可视化、可预览,贯穿 映射→清洗→规则→模板 填充全链路
- 提供“规则库 + 词典 + 执行管道”三层抽象,支持每家供应商自定义规则组合与执行顺序
- 完善 GUI:供应商管理中的四大Tab一站式配置,规则编辑器内置预设与预览,落地即验证
数据模型
suppliers_config.json每个供应商对象结构:name、descriptionfilename_patterns、content_indicatorsheader_rowcolumn_mapping(源列→标准列)rules: 有序规则数组(见下)dictionary: 解析词典(ignore_words、unit_synonyms、pack_multipliers、name_patterns、default_unit、default_package_quantity)output_templates: 模板列表;current_template_index: 当前模板索引
规则库(首批)
split_quantity_unit(source): 拆分数量中的单位(箱/件/提/盒/瓶),无单位用默认单位extract_spec_from_name(source): 从名称抽取规格/包装(容量×数量/简单双乘),应用忽略词与名称正则normalize_unit(target,map): 单位归一(同义词→统一单位),件/箱/提/盒按包装倍数转换数量为“瓶”compute_quantity_from_total(): 数量缺失时用金额/单价回推数量fill_missing(fills): 缺失填充,例如单位默认“瓶”mark_gift(): 金额/单价为0或名称含“赠品/O/o/空”标记赠品- 后续扩展:
classify_category(name),extract_brand(name),strip_noise(name)等
执行管道
- 处理器执行顺序:映射→清洗→规则(有序)→模板填充
- 每条规则可访问
dictionary,执行结果在 DataFrame 上可追踪(供预览) - 提供“预览栈”:展示原始→每步规则输出(多步Diff),定位问题
GUI优化
- 供应商管理:
- 左侧供应商列表(搜索/新建/复制/删除/导入/导出)
- 右侧四大Tab:
- 基本信息:必填校验与保存
- 列映射与表头:现有向导增强(滚动条、表头选行、智能映射、导入/导出)
- 规则与词典:
- 规则编辑器(顺序可调整:上/下移动、插入/删除规则)
- 词典编辑(忽略词、单位同义词、包装倍数、名称正则、默认值)
- 规则预设(常用组合)与“应用规则预览”(展示原始→规范化两列;可切换查看逐步Diff)
- 模板管理:模板列表/当前选择与批量校验,显示缺失/多余列报告
- 性能与体验:所有弹窗置顶回焦;滚动与水平滚动;列宽拖拽与一键导出预览为CSV
使用路径(推荐)
- 新建供应商→选样例Excel→自动表头与初始映射建议
- 规则预设:选择“基础拆分与推断”→应用规则预览→查看原始/规范化对比
- 细化词典:补充忽略词、单位同义词、包装倍数、名称正则→再次预览
- 保存并重载→跑一份真实文件→最近文件中打开结果核验→如有差异回到规则编辑器微调
验证与可视化
- 单元测试:表头识别/数量拆分/名称规格解析/单位归一/数量回推/赠品标记
- 烟雾测试:5–10类典型供货商样本端到端验证(含极端情况:无单位、名称含噪声、数量混合单位)
- 日志:每步规则执行计数与示例行输出(前/后5行),便于定位问题
交付物
- 规则引擎模块与规范接口;处理器接入
- 供应商管理GUI(规则编辑器、词典编辑器、预设与预览)
- 扩展配置示例与测试数据;打包脚本校验资源
里程碑
- Day 1:规则库与引擎扩展、处理器接入、预览栈接口
- Day 2:GUI规则编辑器(顺序调整/增删)、词典编辑器、规则预设与预览
- Day 3:模板批量校验、单元与烟雾测试、日志强化
- Day 4:回归修正与打包交付
确认后我将开始实现上述内容,确保不同供应商可独立配置精细规则并“所见即所得”验证,流程稳定可跑通。