61 lines
1.8 KiB
Markdown
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`。
|