熟食称重“先放后选”交互变更记录

代码状态:已实施并通过自动化验证;验收状态:待真实秤体和支付设备真机验收。分支为 refactor_cooked_model,未暂存、提交、推送或切换分支。

1. 目标与范围

稳定零位 → 放置商品 → 等待稳定 → 点击商品直接入车
        → 取走商品 → 用户主动归零 → 新稳定零位 → 下一件

本次调整称重协议读取、重量输入契约、称重周期、商品点击、购物车更新、页面门禁和支付前校验。购物车结构、订单 JSON、支付协议、数据库和上传方式不变。

2. 代码改动

串口与重量输入

称重周期

购物车与页面

用户归零与支付

3. 测试与质量复核

按 TDD 顺序先红后绿,新增或补充 35 个测试场景:组帧 5 个、快照 10 个、状态机 13 个、购物车更新 5 个、购物车行边界 2 个。

JAVA_HOME=$(/usr/libexec/java_home -v 1.8) bash gradlew \
  :app:testDebugUnitTest :app:assembleDebug --console=plain

4. 待真机验收

只读预检发现一台已连接的 rk3568_r 设备,但设备上正在运行 com.cpt.cusumption/.activity.OrderVerifyActivity,已安装版本为 versionCode 42 / versionName 2.13.1;本次构建为 versionCode 11 / versionName 1.4.0。直接安装需要降级并会中断正在运行的业务页面,因此本次没有安装 APK、操作实体秤或触发任何支付。

  1. 核对目标秤固件的稳定、零位、去皮、单位和 BCC 原始帧。
  2. 验证半帧、粘包、拔线、重连和 3000ms 快照超时。
  3. 验证慢放、快放、抖动、连续点击、取走、页面归零和实体键归零。
  4. 核对同商品跨轮累计金额与每轮提示金额。
  5. 验证无活动周期故障时的定值、手动金额和结算降级。
  6. 账单打开后放商品,分别验证刷卡、扫码和人脸确认被拦截。
  7. 验证支付成功、失败和离线记账后的购物车、秤状态与下一轮。

继续验收需要专用测试设备,或确认当前设备可中断、允许降级安装的维护窗口,并准备不会产生真实扣款的测试卡、测试码和人脸账号。

5. 风险与回滚

主要剩余风险是不同秤固件的零位标志和上报周期差异,真机验收前不标记全面验收完成。本次没有数据库或服务端迁移,可回退熟食页面和新增称重模块。是否提交由用户决定。