Update: Refactor to absolute imports, fix QPS limits, and enhance Gitea sync with SQLite support
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# 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**: 考虑到用户追求“一键处理”的自动化,建议在单个文件处理完成后弹窗,用户点击确认后再继续下一个文件,或者在批量任务结束后汇总显示所有缺失条码。**初步决定:按文件汇总提示。**
|
||||
@@ -0,0 +1,60 @@
|
||||
# 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`。
|
||||
@@ -0,0 +1,27 @@
|
||||
# TASK - 数据库增强与缺失条码提示
|
||||
|
||||
## 1. 数据库层任务
|
||||
| 原子任务 | 输入契约 | 输出契约 | 验收标准 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| **MB-DB-01** | 修改 `product_db.py` | 增加 `missing_barcodes` 表 | 运行后 DB 中出现该表 |
|
||||
| **MB-DB-02** | 实现 `record_missing_barcode` | 方法可调用并写入数据 | 重复写入时 `count` 增加 |
|
||||
|
||||
## 2. 逻辑与UI任务
|
||||
| 原子任务 | 输入契约 | 输出契约 | 验收标准 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| **MB-UI-01** | 修改 `ExcelProcessor` | 在识别条码时检查 DB | 日志显示“发现缺失条码” |
|
||||
| **MB-UI-02** | 集成弹窗提示 | 处理完成前触发 `messagebox` | 界面弹出包含条码的警告框 |
|
||||
|
||||
## 3. 工具任务
|
||||
| 原子任务 | 输入契约 | 输出契约 | 验收标准 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| **MB-TL-01** | 更新 `check_db.py` | 支持查看所有表 | 命令行输出清晰的表格数据 |
|
||||
|
||||
## 任务依赖图
|
||||
```mermaid
|
||||
graph TD
|
||||
MB-DB-01 --> MB-DB-02
|
||||
MB-DB-02 --> MB-UI-01
|
||||
MB-UI-01 --> MB-UI-02
|
||||
MB-DB-01 --> MB-TL-01
|
||||
```
|
||||
Reference in New Issue
Block a user