orc-order-v2/.trae/documents/供应商词典与规则编辑器扩展方案.md
houhuan fb12e63c4c feat(供应商管理): 新增规则引擎与词典配置支持
refactor(处理器): 重构通用供应商处理器以支持规则引擎
docs: 更新README与文档说明供应商管理功能
build: 更新打包脚本注入版本信息
test: 添加规则引擎单元测试
2025-12-12 13:46:00 +08:00

52 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 目标
- 为具体供应商定制更细的解析规则(词典、包装倍数、忽略词、同义单位),并在列映射向导提供可视化编辑入口与预览。
## 配置扩展
- 扩展 `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`: 规则数组(与现有一致),规则在执行时可访问 `dictionary`
- `output_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盒”
- 包装倍数应用与数量回推
- 烟雾测试:构建 510 类供货商样本,验证端到端转换与模板填充可用
## 交付
- 完成词典与规则编辑入口、配置扩展与引擎接入,提交验证报告与示例配置;保留导入/导出便于你迭代调整。
确认后我将按此方案实现扩展配置→增强规则引擎→处理器接入→向导UI与预览→测试。