# DESIGN - 数据库增强与缺失条码提示 ## 1. 架构设计 ### 1.1 数据库层扩展 在 `app/core/db/product_db.py` 中增加对 `missing_barcodes` 表的管理。 ```sql CREATE TABLE IF NOT EXISTS missing_barcodes ( barcode TEXT PRIMARY KEY, name TEXT DEFAULT '', last_seen TEXT, source_file TEXT, count INTEGER DEFAULT 1 ); ``` ### 1.2 逻辑层流程 在 `ExcelProcessor` 处理商品数据时,增加比对逻辑: 1. 提取条码。 2. 调用 `ProductDatabase.is_barcode_exists(barcode)`。 3. 若不存在: - 记录到 `missing_barcodes` 表。 - 将该条码加入“本次文件缺失列表”。 4. 文件处理结束前,若“本次文件缺失列表”不为空,调用 UI 层的弹窗通知。 ## 2. 核心组件交互 ```mermaid sequenceDiagram participant P as ExcelProcessor participant DB as ProductDatabase participant UI as MainWindow/DialogUtils P->>DB: get_memory(barcode) alt 条码不存在 DB-->>P: None P->>DB: record_missing_barcode(barcode, name, file) P->>P: Add to missing_list end Note over P: 文件处理即将完成 rect rgb(200, 220, 255) P->>UI: show_warning("以下条码缺失: ...") end ``` ## 3. 接口定义 ### ProductDatabase 类新增方法: - `record_missing_barcode(barcode, name, source_file)`: 插入或更新缺失条码记录。 - `get_missing_barcodes(limit=100)`: 获取最近的缺失条码记录。 ### UI 提示逻辑: - 修改 `app/services/order_service.py` 中的 `process_order` 或相关方法,在处理流程中捕获缺失条码并触发 UI 回调。 ## 4. DB 查看器实现 更新 `check_db.py`,使用 `tabulate` (如果安装了) 或简单的格式化输出打印所有表内容。 增加参数支持:`python check_db.py --table missing_barcodes`。