餐盘模式识别业务隔离修复记录

问题现象

设备已经切换到餐盘识别模式,银歌 SDK 也加载了餐盘分类模型,但识别页把餐盘分类结果编码 1 当成旧菜品主键查询,错误补全为本地 dish_id=1 的“菜包”和价格 0.80。

原因

菜品目录查询兼容旧数据:当 SDK 商品编码是纯数字且没有命中 dish_uuid 时,会继续按 dish_id 查询。这个规则适用于历史菜品识别数据,但餐盘分类返回的纯数字可能只是分类索引,不能复用该兜底规则。

修复内容

  1. 新增 RecognitionBusinessPolicy,集中声明不同业务模式是否允许旧数字菜品 ID 兜底。
  2. 菜品识别继续允许数字编码按 dish_id 兼容查询,保持现有业务不变。
  3. 餐盘识别仅允许缓存或 dish_uuid 精确匹配,不再把餐盘分类索引当成菜品主键。
  4. 保留餐盘与商品的显式绑定能力:餐盘返回编码与 dish_uuid 一致时,仍可补全正确菜名和价格。
  5. 餐盘分类结果必须精确命中商品目录后才能计价和进入支付清单,未绑定类别不会污染金额或订单。
  6. 识别框、合计金额、稳定识别快照、自动支付判定和支付清单均复用统一结果解析入口,因此同步应用该模式边界。
  7. 按用户要求,本次不处理识别页标题及其他纯展示文案。

主要变更文件

测试与验证

TDD 回归

自动化验证

待真机复测

安装本次 Debug APK 后保持餐盘识别模式,用同一画面复测:餐盘分类编码 1 不应再被错误显示为“菜包 ¥0.80”;只有编码与真实 dish_uuid 精确匹配时才允许补全商品信息并参与计价。

文档与 Git 操作