refactor(处理器): 重构通用供应商处理器以支持规则引擎 docs: 更新README与文档说明供应商管理功能 build: 更新打包脚本注入版本信息 test: 添加规则引擎单元测试
70 lines
4.3 KiB
Markdown
70 lines
4.3 KiB
Markdown
## 痛点复盘
|
||
- 不同供应商存在强差异:列名不统一、单位混杂在数量、规格隐藏在名称、供应商缺失等
|
||
- 现有向导只解决列映射层面,规则与词典编辑、执行顺序与生效范围不清晰
|
||
- 缺少可视化“从原始→规范化→模板填充”的贯通验证;流程易跑不通
|
||
|
||
## 总体方案
|
||
- 建立“供应商规则系统”:可配置、可视化、可预览,贯穿 映射→清洗→规则→模板 填充全链路
|
||
- 提供“规则库 + 词典 + 执行管道”三层抽象,支持每家供应商自定义规则组合与执行顺序
|
||
- 完善 GUI:供应商管理中的四大Tab一站式配置,规则编辑器内置预设与预览,落地即验证
|
||
|
||
## 数据模型
|
||
- `suppliers_config.json` 每个供应商对象结构:
|
||
- `name`、`description`
|
||
- `filename_patterns`、`content_indicators`
|
||
- `header_row`
|
||
- `column_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
|
||
|
||
## 使用路径(推荐)
|
||
1. 新建供应商→选样例Excel→自动表头与初始映射建议
|
||
2. 规则预设:选择“基础拆分与推断”→应用规则预览→查看原始/规范化对比
|
||
3. 细化词典:补充忽略词、单位同义词、包装倍数、名称正则→再次预览
|
||
4. 保存并重载→跑一份真实文件→最近文件中打开结果核验→如有差异回到规则编辑器微调
|
||
|
||
## 验证与可视化
|
||
- 单元测试:表头识别/数量拆分/名称规格解析/单位归一/数量回推/赠品标记
|
||
- 烟雾测试:5–10类典型供货商样本端到端验证(含极端情况:无单位、名称含噪声、数量混合单位)
|
||
- 日志:每步规则执行计数与示例行输出(前/后5行),便于定位问题
|
||
|
||
## 交付物
|
||
- 规则引擎模块与规范接口;处理器接入
|
||
- 供应商管理GUI(规则编辑器、词典编辑器、预设与预览)
|
||
- 扩展配置示例与测试数据;打包脚本校验资源
|
||
|
||
## 里程碑
|
||
- Day 1:规则库与引擎扩展、处理器接入、预览栈接口
|
||
- Day 2:GUI规则编辑器(顺序调整/增删)、词典编辑器、规则预设与预览
|
||
- Day 3:模板批量校验、单元与烟雾测试、日志强化
|
||
- Day 4:回归修正与打包交付
|
||
|
||
确认后我将开始实现上述内容,确保不同供应商可独立配置精细规则并“所见即所得”验证,流程稳定可跑通。 |