feat: 手术视频消耗、待确认与持久化改造

- 新增 Alembic 初始迁移、领域明细模型及归档持久化与重试链路\n- 拆分视频会话注册表、分类处理、推理时间窗聚合与流处理\n- 消耗日志:TSV/Markdown 含 top2/top3;item_id 优先产品编码;待确认记「待确认」行,语音确认后落正式行并更新汇总\n- 待确认时内存/DB 明细为占位行,确认后替换;拒绝时移除占位\n- 分类 probs 先 detach/cpu 再转 NumPy,修复 MPS/CUDA 上推理被静默跳过\n- 补充集成测试、归档与设备张量等单测

Made-with: Cursor
This commit is contained in:
Kevin
2026-04-23 20:42:21 +08:00
parent 69980d8073
commit 3d7bd70355
55 changed files with 4544 additions and 2050 deletions

View File

@@ -11,6 +11,16 @@ POSTGRES_PORT=35432
# Optional: full async SQLAlchemy URL (overrides POSTGRES_* when set and matches defaults logic — see Settings).
# DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:35432/operation_room
# 开发/首次部署:启动时执行 Base.metadata.create_all 确保表存在(默认 true
# 生产请置 false并通过 `alembic upgrade head` 应用迁移(见 alembic/ 目录)。
# AUTO_CREATE_SCHEMA=true
# --- Uvicorn / API server ---
# SERVER_HOST=0.0.0.0
# SERVER_PORT=38080
# 生产必须 false本地开发调试可改 true等价于旧版 reload=True
# SERVER_RELOAD=false
# --- YOLO 视觉推理(内部调用,无独立 HTTP---
# 耗材分类权重默认 app/resources/consumable_classifier.pt手部检测为空时退化为全帧分类。
# CONSUMABLE_CLASSIFIER_WEIGHTS=/absolute/path/to/consumable_classifier.pt
@@ -22,6 +32,7 @@ CONSUMABLE_CLASSIFIER_TOPK=5
# 时间窗(秒):窗内多次推理取众数后再走自动记账 / 待确认。
# CONSUMABLE_VISION_WINDOW_SEC=15
# 可选Excel「商品名称」「产品编码」表空则物品 id 用名称。
# 开始手术请求体 candidate_consumables 缺省或 [] 时,优先用本表全部商品名参与推理;未配置则用分类模型全部类名。
# CONSUMABLE_CATALOG_XLSX_PATH=/path/to/视频中的商品信息表.xlsx
# HAND_DETECTION_WEIGHTS=/absolute/path/to/hand_detect.pt
# HAND_DETECTION_IMGSZ=640