放盘稳定性校验开关方案

目标

在设置页增加“放盘稳定性校验”开关,控制餐盘扫码后进入取餐流程前是否等待重量稳定。开关默认开启,保持原有行为。

当前流程

餐盘扫码成功后,WeightMainActivity.startPickWhenStable() 等待最近 10 条重量样本稳定,最多等待 5 秒,稳定后记录取餐起始重量并进入取餐页面。

项目已有“离盘稳定性校验”开关,控制餐盘拿走后结算前是否等待 5 条稳定样本。本次新增开关与其独立,避免混淆放盘和离盘两个阶段。

实现方案

设置项

运行逻辑

开启时:

  1. 扫码成功后等待 10 条稳定重量样本。
  2. 最多等待 5 秒。
  3. 使用稳定窗口重量作为本次取餐起始重量。

关闭时:

  1. 扫码成功后不进入等待稳定轮询。
  2. 使用扫码时的当前重量和序列号生成单样本起始快照。
  3. 立即进入取餐流程并获取取餐人信息。

同一笔取餐在扫码开始时固定开关状态,避免等待过程中修改设置影响已开始的会话。

数据追溯

重量事件的 extra 增加 start_stability_check_enabled,并保留已有的 end_stability_check_enabled。正常结算时,quality 标记为 NORMALSTART_STABLE_CHECK_DISABLEDEND_STABLE_CHECK_DISABLEDBOTH_STABLE_CHECK_DISABLED

影响文件

验收标准

风险

关闭放盘稳定性校验后,起始重量可能处于餐盘放置过程中的波动阶段,可能造成取餐重量偏大或偏小。因此默认开启,仅建议在现场确认设备响应速度和摆盘动作后关闭。

变更记录

离盘扫码托底

设置项

总开关关闭时不启动托底定时任务,完全保持原有扫码离盘流程;只有打开总开关后,快/中/慢时长配置才生效。

运行条件

取餐会话进入 PICKING 后启动一个会话级定时检查。每次收到有效餐盘码时刷新最后扫码时间,并记录当时重量。只有同时满足以下条件才触发托底:

  1. 连续无码达到配置时长。
  2. 重量数据仍在持续上报,最近一次重量上报不超过 1 秒。
  3. 无码期间重量保持在 1g 误差范围内。
  4. 当前会话仍处于取餐中,且未收到正常 has left

正常 has left 优先,收到后取消托底任务。托底触发后复用现有离盘处理、页面切换和结算流程,并通过会话状态保证只处理一次。

变更记录补充