# ALIGNMENT - 数据库增强与缺失条码提示

## 1. 原始需求描述
- **DB内容查看**: 用户需要查看数据库（SQLite）中的内容。
- **缺失条码提示与记录**: 在处理订单时，如果发现条码不在最新的 `商品资料.xlsx` 中，需要：
    - 弹出 GUI 弹窗提示用户。
    - 将缺失条码记录到数据库中。

## 2. 需求理解与边界确认
### 2.1 数据库查看
- **方案**: 提供一个增强版的 `check_db.py` 脚本，可以一键列出 `order_metadata`（单据信息）、`products`（商品资料）以及新增的 `missing_barcodes`（缺失条码）。
- **GUI集成**: 在主窗口菜单中尝试增加一个“查看处理记录”或“查看缺失条码”的快捷入口。

### 2.2 缺失条码处理
- **检查点**: 在 `ExcelProcessor` 提取商品信息时，或在 `OrderService` 生成结果前进行比对。
- **数据库记录**: 在 `product_cache.db` 中新建表 `missing_barcodes`。
    - 表结构: `barcode (TEXT, PK), name (TEXT), last_seen (TEXT), source_file (TEXT), count (INTEGER)`。
- **弹窗提示**: 
    - 使用 `tkinter.messagebox` 或项目已有的 `dialog_utils` 进行弹窗。
    - **策略确认**: 由于批量处理时频繁弹窗会打断用户，我们将采用“每个文件处理完后，如果有缺失条码，汇总弹窗一次”的策略，平衡实时性与操作体验。

## 3. 技术对齐
- **数据库**: 继续使用 `product_cache.db`，由 `ProductDatabase` 类管理新增表。
- **UI**: 现有的 `app/ui/main_window.py` 是基于 `tkinter` 的，弹窗逻辑将与之对齐。
- **配置**: 商品资料路径已在 `config.ini` 中定义，需确保指向 `release/templates/商品资料.xlsx`。

## 4. 验收标准
- [ ] 运行 `check_db.py` 能看到所有表的结构化数据。
- [ ] 故意处理一张包含未知条码的图片，程序能弹出警告窗口提示具体条码。
- [ ] 弹窗后，检查 `missing_barcodes` 表，确认该条码已被正确记录。
- [ ] 再次处理相同条码，记录中的 `count` 应该递增，且 `last_seen` 更新。

## 5. 待澄清问题
- **Q**: 弹窗是否需要阻塞处理流程？
- **A**: 考虑到用户追求“一键处理”的自动化，建议在单个文件处理完成后弹窗，用户点击确认后再继续下一个文件，或者在批量任务结束后汇总显示所有缺失条码。**初步决定：按文件汇总提示。**
