Files

61 lines
1.8 KiB
Markdown

# 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`