消费模式取盘取消结算实施计划

目标:订单查询或等待刷卡阶段检测到餐盘移除时,取消本轮待结算并恢复等待放盘;读卡或扣款已经开始后不强制中断。

架构:ConsumptionFlowStateMachine 判定是否可立即取消,ConsumptionActivity 清理订单、读卡门禁和页面上下文,ConsumptionOrderCoordinator 使迟到响应失效。本地已获取订单标记为取消,不生成结算上传任务。

状态边界

移盘时状态处理
LOADING_ORDER取消查询会话,迟到响应作废,返回 WAITING_TRAY
WAITING_CARD取消已武装但尚未开始的卡交易,记录取消原因,返回 WAITING_TRAY
读卡、扣款、反馈阶段仅记录餐盘离开,不中断硬件处理
终态保持现有终态复位逻辑

实施步骤

  1. 已完成:先增加状态机与协调器失败测试,覆盖查询中取消、等待刷卡取消、处理中不中断和迟到响应丢弃。
  2. 已完成:状态机增加具名移盘结果,并复用统一内部复位方法。
  3. 已完成:页面统一处理移盘事件;以读卡门禁原子取消结果确认交易未开始,再记录 CANCELLED_TRAY_REMOVED、释放订单会话并清空页面上下文。
  4. 已完成:取消记录保持 NOT_REQUIRED,不生成任何上传任务,并纳入有界保留策略。
  5. 已完成:定向测试通过、Android 仓储测试编译通过、Debug APK 构建成功,并已同步变更记录。

验收标准

设备验收边界:仍需在实体设备上验证餐盘移除事件的防抖与真实硬件时序。执行过程中不做 Git 暂存、提交、推送或分支操作。