## 目标
- 通过规则引擎把不同供货商的OCR表格规范为统一字段，并自动拆分“数量+单位”、从名称推断规格、标记赠品，最终稳定填充银豹模板。

## 配置与规则
- 扩展 `suppliers_config.json`：
  - `rules`: 规则数组（顺序执行）
  - `output_templates`: 模板列表；`current_template_index`: 当前模板索引
- 规则类型：
  - `split_quantity_unit`（拆分“4瓶/1箱/3件/2提/2盒”）
  - `extract_spec_from_name`（解析“1.8L×8瓶”“550水24白膜”等）
  - `normalize_unit`（单位归一“箱/件/提/盒/瓶”→统一“瓶”，按包装转换数量）
  - `compute_quantity_from_total`（数量缺失时用金额/单价反推）
  - `infer_supplier`（文件名/内容推断供应商）
  - `fill_missing`（填默认值）
  - `mark_gift`（金额/单价=0或“赠品/O/o/空”）

## 实现
- 新建 `app/core/handlers/rule_engine.py`：输入DataFrame与规则列表，返回规范化DataFrame
- 在 `GenericSupplierProcessor` 中：列映射→清洗→规则引擎→输出
- 列映射向导增强：
  - 增加“规则预设”选择与“应用规则预览”按钮，显示原始/规范化后的对比
  - 支持导入/导出（映射+规则）JSON
- 模板管理增强：模板组选择、批量校验、示例模板生成

## 解析与正则
- 名称解析：
  - 容量×数量：`(\d+(?:\.\d+)?)(ml|l|升|毫升)[*×xX](\d+)`
  - 简单数量×数量：`(\d+)[*×xX](\d+)`
  - 词典忽略词：如“白膜”等
- 数量拆分：`(?P<num>\d+(?:\.\d+)?)(?P<unit>箱|件|提|盒|瓶)`

## 验证
- 单元测试覆盖规则与表头识别；烟雾测试涵盖“无单位/规格/数量混杂”的样本
- GUI预览确认规则效果；保存后热重载处理器

## 里程碑
- Day 1：规则引擎与处理器接入
- Day 2：向导规则预览与导入/导出；模板组管理
- Day 3：测试与样本库
- Day 4：打包与交付验证

请确认，我将立即开始实现并逐步提交验证结果。