新学习商品即时名称与计价变更记录
- 日期:2026-09-29
- 项目:AIDishRecognition
- 状态:代码与本地自动化验证完成,待目标设备安装复测
问题
学习记录上传及 SDK 学习已成功,但识别页使用的本地商品目录尚无新 UUID。SDK 返回的名称可能也是 UUID,因此识别框暂时显示编码;学习记录同步/数据矫正不等于商品目录同步,而每次强制拉取全量目录耗时较长。
变更
- 学习列表选项保留服务端原始
DishBean,并校验商品编码匹配,避免从格式化价格文本还原或串商品。 - 普通学习和识别页矫正学习成功后,仅把当前商品增量写入本地 SQLite 与内存缓存。写入完成后才报告可识别计价;失败时可只重试商品资料,不重复上传图片或再次调用 SDK 学习。
- 单商品写入和全量目录替换使用仓库单线程队列;全量同步开始后新学成的商品会叠加到旧快照上,避免被覆盖。后续新发起的全量同步仍以服务端数据为准。
- 识别页遇到本地目录未命中的标准 UUID 时,同一轮去重发起后台目录同步;等待/失败期间显示商品资料状态,不显示 UUID,也不将未匹配 UUID 自动计价。同步完成后重绘当前结果;已有目录同步可加入等待,不逐帧重复请求。未命中 UUID 采用负缓存,避免每帧重复查 SQLite;单条写入或全量刷新后清除负缓存。
- 没有改动菜品/餐具模式的服务端列表含义、菜单规则、零元商品支付门槛或 SDK 学习算法。
验证
DishLearningDishTest、CatalogSnapshotMergeTest、CatalogLookupPolicyTest 均先验证失败再实现通过。./gradlew :app:testDebugUnitTest :app:assembleDebug --no-daemon --quiet:退出码 0。git diff --check:退出码 0。- 尚未安装新 APK;SQLite 写入、学习页回跳、金额与真实帧流畅度需在目标设备复测。未在用户设备执行会改动其现有商品数据的仪器测试。
归档与 Git
- 本记录仅位于提示词工程的
change_records/,Markdown 和 HTML 成对保存。 - 代码仓未新增文档目录;未 stage、commit、push 或切换分支。