CusumptionMachine 消费机客户端本次计划上线“菜单消费分类模式”功能。基础设置新增“菜单消费模式”,管理员可选择“固定分类”或“自定义分类”,未配置、升级后缺少配置或配置值异常时均默认使用固定分类,不改变现有设备的默认菜单行为。
自定义分类模式继续复用现有 POST /p/api/getMeal 接口,通过 group_mode=custom_category_v1 获取服务端配置的分类及菜品。分类按接口返回顺序动态展示,支持横向滚动;分类名称超过 6 个 Unicode 字符时显示前 6 个字符并追加 ...,完整分类名称和分类 ID 仍用于数据匹配,不影响菜品筛选。
本次同时补齐菜单分类与“营养展示”配置的兼容:两项设置独立生效,从基础设置返回菜单页后立即应用;关闭营养展示时会清除已选但不可见的营养筛选,并恢复当前分类的完整菜品列表。基础设置中的“人脸识别阈值”改为只显示数字,不再附加“分”单位。
当前代码、73 项单元测试和 Debug APK 构建已完成,最终 Debug APK 已安装到 rk3568_r 设备并完成启动冒烟。固定分类、自定义分类与营养开关的四种组合已验证。上线时间、正式包版本、签名及发布渠道仍待发布负责人确认,因此本通知状态为“待上线”,不代表生产环境已经发布。
| 项目 | 内容 |
|---|---|
| 云效任务 | VWCG-1327 |
| 项目 | CusumptionMachine |
| 影响端 | Android 消费机客户端 |
| 当前代码版本 | 2.11.1,versionCode=36 |
| 正式上线版本 | 待确认;当前代码未调整版本号 |
| 上线时间 | 待确认 |
| 发布渠道 | 待确认 |
| 数据库变更 | 无 |
| Android 权限变更 | 无 |
| 后端新接口 | 无,复用 POST /p/api/getMeal |
| 默认行为 | 固定分类,兼容原有设备 |
| 当前状态 | 待上线 |
fixed_category。group_mode。POST /p/api/getMeal,增加请求字段 group_mode=custom_category_v1。MenuCatalog 页面模型。status=1 且名称有效的分类,并保持服务端返回顺序。code=all 展示本次响应中的全部菜品;普通分类和 code=other 按 custom_category_id 匹配。...。| 模式 | 请求方式 | 响应处理 |
|---|---|---|
| 固定分类 | POST /p/api/getMeal,不提交 group_mode |
使用原有 GetDishMenuResponse |
| 自定义分类 | POST /p/api/getMeal,提交 group_mode=custom_category_v1 |
使用独立 GetCustomDishMenuResponse |
自定义分类响应必须返回 schema_version=custom_category_v1。当协议版本缺失或不匹配时,客户端仅对本次页面请求临时降级为固定分类,不修改管理员已经保存的自定义分类设置。
分类为空但菜品非空时,客户端临时生成“全部”分类;菜品无法匹配普通分类时仍保留在“全部”中并记录日志。网络失败、业务异常和临时降级不会主动清空已有购物车。
执行:
JAVA_HOME=/Users/liang/Library/Java/JavaVirtualMachines/corretto-1.8.0_482/Contents/Home bash ./gradlew :app:testDebugUnitTest :app:assembleDebug --rerun-tasks
git diff --check 通过。验证设备:rk3568_r。
| 场景 | 结果 |
|---|---|
| 固定分类和营养关闭 | 七个固定分类正常显示,营养区域隐藏 |
| 固定分类和营养开启 | 固定分类与营养区域同时正常显示 |
| 自定义分类和营养关闭 | 动态分类按当前餐段接口响应显示,营养区域隐藏 |
| 自定义分类和营养开启 | 动态分类和营养区域同时正常显示 |
| 关闭营养展示 | 原营养筛选被清除,菜品列表恢复,购物车保持 |
| 同时修改两项设置 | 只观察到一次 custom_category_v1 菜单请求 |
| 人脸识别阈值 | 基础设置实际显示“80”,未附加“分” |
| 最终 APK 冒烟 | 覆盖安装成功,菜单页面正常启动,未出现崩溃 |
versionCode,避免沿用已发布版本号导致覆盖安装或版本识别异常。com.cpt.cusumption。/p/api/getMeal 已支持 group_mode=custom_category_v1。schema_version、categories、dishes 和菜品营养字段符合约定。lintDebug 仍受 18 个存量错误影响,首批错误位于本次未修改的 OrderDao.java;已有报告中本次修改文件未发现新增 Error。上线后重点观察菜单请求成功率、协议版本异常、分类数量、菜品数量、无法匹配分类的菜品日志以及购物车和支付流程。
如果自定义分类只显示“全部”和“其他”,或普通分类突然减少,按以下顺序排查:
group_mode=custom_category_v1。categories、dishes 和 custom_category_id。“营养展示”不负责生成、删除或重排自定义分类,不应把餐段数据变化直接判断为营养兼容或客户端渲染回归。
【CusumptionMachine 菜单消费分类模式上线通知】
上线时间:待确认
正式版本:待确认(当前代码版本 2.11.1,versionCode 36)
任务编号:VWCG-1327
本次主要更新:
1. 基础设置新增“固定分类/自定义分类”,默认固定分类。
2. 自定义分类复用 /p/api/getMeal,并提交 group_mode=custom_category_v1。
3. 自定义分类按服务端顺序展示,超 6 个字符显示前 6 个字符加 ...。
4. 分类模式兼容原营养展示开关,设置返回立即生效,关闭营养时清除隐藏筛选。
5. 人脸识别阈值只显示数字,不再显示“分”。
验证情况:73 项单元测试全部通过;Debug APK 构建成功;当前设备已完成分类与营养四种组合、设置即时生效、购物车保持、人脸阈值显示和启动冒烟验证。
注意事项:上线前仍需确认正式版本号、签名、上线范围和回滚包,并补充多餐段、超长分类、真实支付、语音及客屏回归。若自定义分类只剩“全部/其他”,请优先核对当前餐段菜谱和接口原始响应。