refactor: 统一耗材视觉算法并扩展语音确认至全量候选清单

- 以 ConsumableVisionAlgorithmService 替代 consumable_classifier 与 tear_action;
  可选手部检测权重,未配置时全帧分类;时间窗众数与 Excel 白名单配置。
- 语音待确认:ASR 先匹配 pending topk,再匹配本台 candidate_consumables;
  记账 item_id 与 vision 一致使用 name_to_code。
- 更新 config、Compose、.env.example、依赖(pandas/openpyxl)与测试。

Made-with: Cursor
This commit is contained in:
Kevin
2026-04-22 16:31:12 +08:00
parent 4c4550d58b
commit 132702aea9
18 changed files with 791 additions and 476 deletions

View File

@@ -46,8 +46,7 @@ async def test_stop_surgery_persists_final_result(
settings = Settings()
mgr = CameraSessionManager(
settings=settings,
consumable_classifier=MagicMock(),
tear_action=MagicMock(),
vision_algorithm=MagicMock(),
hikvision_runtime=None,
result_repository=repo,
)
@@ -101,8 +100,7 @@ async def test_stop_surgery_failed_persist_goes_to_archive_then_retry_persists(
settings = Settings()
mgr = CameraSessionManager(
settings=settings,
consumable_classifier=MagicMock(),
tear_action=MagicMock(),
vision_algorithm=MagicMock(),
hikvision_runtime=None,
result_repository=repo,
)
@@ -149,8 +147,7 @@ async def test_pipeline_prefers_live_then_db_then_archive(
settings = Settings()
mgr = CameraSessionManager(
settings=settings,
consumable_classifier=MagicMock(),
tear_action=MagicMock(),
vision_algorithm=MagicMock(),
hikvision_runtime=None,
result_repository=repo,
)