refactor(处理器): 重构通用供应商处理器以支持规则引擎 docs: 更新README与文档说明供应商管理功能 build: 更新打包脚本注入版本信息 test: 添加规则引擎单元测试
50 lines
3.3 KiB
Markdown
50 lines
3.3 KiB
Markdown
## 你现在就能这样做
|
||
- 目标:在没有“规格/数量/单位”列、只有“订单数量”列(如“4瓶/1箱/5箱/3件”)时,拆分出数量与单位,并按名称提取规格,最终规范化为银豹模板字段。
|
||
|
||
### A. 最小映射(只为模板填充)
|
||
- 在“供应商管理 → 列映射与表头”页,只需映射这些常用列:
|
||
- name ← 商品名称
|
||
- barcode ← 条码(如有)
|
||
- unit_price ← 单价(如有)
|
||
- total_price ← 金额/小计(如有)
|
||
- 不需要映射“数量/单位/规格”,后续用规则直接从原始列生成。
|
||
|
||
### B. 规则与词典设置(关键)
|
||
- 在“供应商管理 → 规则与词典”页:
|
||
1) 规则列表按顺序添加:
|
||
- split_quantity_unit,参数:source=订单数量
|
||
- extract_spec_from_name,参数:source=商品名称
|
||
- normalize_unit,参数:target=unit,map={"箱":"件","提":"件","盒":"件"}
|
||
- fill_missing,参数:fills={"unit":"瓶"}
|
||
- mark_gift(可选)
|
||
- compute_quantity_from_total(可选,当只有金额/单价时)
|
||
2) 词典设置:
|
||
- unit_synonyms:{"箱":"件","提":"件","盒":"件","瓶":"瓶"}
|
||
- pack_multipliers:{"件":24,"箱":24,"提":12,"盒":10}(根据你的供应商习惯调整)
|
||
- default_unit:瓶
|
||
- default_package_quantity:1
|
||
- ignore_words:如(白膜、彩膜、赠品)
|
||
- name_patterns(每行一个正则):
|
||
- (\d+(?:\.\d+)?)(ml|l|升|毫升)[*×xX](\d+)
|
||
- (\d+)[*×xX](\d+)瓶
|
||
- 需要时加入供应商特有格式,如“550水24白膜”可匹配“(\d{2,3}).*?(\d{1,3})”并将第二组当作包装数
|
||
|
||
### C. 预览与验证
|
||
- 在“规则与词典”页选择Excel,点击“生成步骤预览”:
|
||
- 看“原始 → 规范化”两侧表,对比是否出现 quantity(数值)、unit(单位)、specification、package_quantity
|
||
- 在“预览步骤”中逐步查看每一条规则的结果;必要时导出CSV核对
|
||
- 保存后会自动重载处理器;用真实文件跑一次,结果会出现在“最近文件”,双击打开核验。
|
||
|
||
### D. 解释关键点
|
||
- 映射是为了模板填充字段的命名统一;对于“订单数量”这种来源列,规则会直接读取 source=订单数量,不要求你把它映射成标准列。
|
||
- 规则执行后,会产生标准字段:quantity、unit、specification、package_quantity,可被模板填充。
|
||
- normalize_unit会用词典的pack_multipliers或name解析出的package_quantity,自动把“件/箱/提/盒”的数量换算成“瓶”,并将unit统一为“瓶”。
|
||
|
||
## 我将继续优化的点(让流程更清晰)
|
||
1) 规则表单中的“来源列”改为可选下拉(直接从Excel列名取值),无需手填。
|
||
2) 步骤预览支持“仅显示变化的列(Diff模式)”与“错误计数”(未匹配的行统计)。
|
||
3) 提供“无数量/单位列”的快速模版:自动添加上述规则与词典默认值,一键套用。
|
||
4) 规则帮助提示:每条规则说明输入/输出字段与常见示例。
|
||
5) 供应商级的“测试运行”:选文件→一键规范化→预览→导出结果,独立于正式处理。
|
||
|
||
如果你同意,我将按上述方案完善GUI交互(来源列下拉、快速模板、Diff预览、错误计数与一键测试),并把默认规则与词典预设直接提供出来,确保“只有订单数量列”的场景开箱可用。 |