orc-order-v2/.trae/documents/解决“只有订单数量列”场景的可操作方案.md
houhuan fb12e63c4c feat(供应商管理): 新增规则引擎与词典配置支持
refactor(处理器): 重构通用供应商处理器以支持规则引擎
docs: 更新README与文档说明供应商管理功能
build: 更新打包脚本注入版本信息
test: 添加规则引擎单元测试
2025-12-12 13:46:00 +08:00

3.3 KiB
Raw Blame History

你现在就能这样做

  • 目标:在没有“规格/数量/单位”列、只有“订单数量”列如“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=unitmap={"箱":"件","提":"件","盒":"件"}
  • fill_missing参数fills={"unit":"瓶"}
  • mark_gift可选
  • compute_quantity_from_total可选当只有金额/单价时)
  1. 词典设置:
  • unit_synonyms{"箱":"件","提":"件","盒":"件","瓶":"瓶"}
  • pack_multipliers{"件":24,"箱":24,"提":12,"盒":10}(根据你的供应商习惯调整)
  • default_unit
  • default_package_quantity1
  • ignore_words白膜、彩膜、赠品
  • name_patterns每行一个正则
    • (\d+(?:.\d+)?)(ml|l|升|毫升)*×xX
    • (\d+)*×xX
    • 需要时加入供应商特有格式如“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预览、错误计数与一键测试并把默认规则与词典预设直接提供出来确保“只有订单数量列”的场景开箱可用。