Files
orc-order-v2/docs/数据库增强/DESIGN_数据库增强.md
T

1.8 KiB

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

1. 架构设计

1.1 数据库层扩展

app/core/db/product_db.py 中增加对 missing_barcodes 表的管理。

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. 核心组件交互

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