菜品目录与菜谱分类映射问题分析及修复方案

本记录覆盖 AIDishRecognition 的菜品目录、菜谱管理页与菜品识别页替换菜谱抽屉的六级分类映射。

问题现象

菜单展示入口把接口第 2、3、4、5 组按错误的分类顺序绑定,导致荤菜与素菜、水果与蛋奶坚果互换。“全部”页仍能汇总全部菜品,但单分类页不对应所属类型。

统一分类契约

编号分类
1主食
2荤菜
3素菜
4水果
5蛋奶坚果
6汤饮

菜品目录的 mapCategoryToApiValue() 已在两个使用位置采用该规则;菜单接口 /p/api/getMeal 将键 "1""6" 反序列化到对应的 dishItemList1dishItemList6

实施方案

响应分组目标分类目标列表
dishItemList1主食menuStapleList
dishItemList2荤菜menuMeatList
dishItemList3素菜menuVegetableList
dishItemList4水果menuFruitList
dishItemList5蛋奶坚果menuEggMilkNutList
dishItemList6汤饮menuSoupDrinkList
  1. DishMenuManagementActivity.cacheDishMenu() 按上表绑定并统一“全部”页顺序。
  2. DishRecognitionActivity.cacheReplaceDishMenu() 应用同一规则。

影响边界

DishMenuStoreDishManagementSyncPolicy 仅汇总菜品编码,不依赖具体分类标签;菜品目录的分类请求映射、接口模型及服务端协议均不修改。

验证与回滚

./gradlew :app:testDebugUnitTest :app:assembleDebug 已执行并通过,git diff --check 已通过。真机仍需在两个入口逐一切换六个分类,检查分类、全部汇总、搜索和刷新结果。

若服务端确认 /p/api/getMeal 的编号契约不同,应回滚当前两个展示入口的映射,并以服务端正式契约为唯一来源,同步调整菜品目录请求映射。

结论

两个菜单展示入口已统一为菜品目录使用的六级分类契约,修复荤菜/素菜及水果/蛋奶坚果的分类互换问题。自动化验证已通过,真机分类切换回归待执行。