A02 未放餐盘取餐报警补录实现记录
已实现
- A02 报警页增加“刷管理卡解除”和“放餐盘认领并补录”两个互斥入口。
- 未点击入口时,A02 会拦截扫码和餐盘识别,不解除报警、不进入普通取餐流程。
- 选择任一入口后进入 60 秒等待;超时仅回到入口选择,报警、声光和累计时长保持。
- 管理卡入口仅接受既有
888880 至 888899 范围内的卡值,并记录卡值、报警时长和解除结果。
- 餐盘认领入口复用既有餐盘绑定查询;成功后使用识别餐盘前最后一次有效实时逃单重量写入现有
pick_record 队列,并调度既有 Worker 上传。
- 本地取餐记录增加
source、alarm_id,数据库从版本 1 平滑升级至版本 2,不删除原待上传记录。
- A02 报警日志记录触发重量、操作选择、超时、认领结果、解除方式、时长,以及 Worker 上传/重试/删除结果;常规本地日志仍保留补录入队过程。
验证
- 新增并通过 A02 触发重量快照、操作枚举和上传审计事件单元测试。
- JDK 8 执行
./gradlew :app:testDebugUnitTest :app:assembleDebug 成功。
git diff --check 通过。
2026-08-25 页面布局补充
- A02 默认选择页的“刷管理卡解除”和“放餐盘认领并补录”由上下两行改为左右等宽同一行。
- 两个按钮中间保留
12dp 间距,按钮高度为 68dp;文字居中、最大两行,避免横向排布后截断。
- 仅修改
dialog_anti_escape_alarm.xml 的 A02 专属按钮容器;按钮 ID、点击回调、禁用状态及 A01/A03 页面保持不变。
- 使用 JDK 8 执行
sh ./gradlew :app:assembleDebug --console=plain,构建成功。
2026-08-25 A02 实时重量与自动恢复
- A02 触发后固定报警前基准重量;在取餐前页、无餐盘码且秤体稳定时,页面按
max(0, baselineWeight - currentWeight) 实时刷新逃单重量。
- 当前稳定重量恢复至基准重量或更高时,写入
WEIGHT_RECOVERED 后自动解除 A02;不会生成取餐记录或调度上传。
- 餐盘认领码出现后暂停实时重量更新,认领记录使用该码出现前的最后一次有效实时逃单重量,避免把餐盘自身重量计入补录。
- 新增
AntiEscapeAlarmTest,覆盖实时缺重由 10g 回升至 2g,以及恢复到基准后为 0g、标记已恢复。
- JDK 8 验证通过:
sh ./gradlew :app:testDebugUnitTest --tests 'com.cpt.zhct.weighting.antiescape.AntiEscapeAlarmTest' --tests 'com.cpt.zhct.weighting.antiescape.NoTrayPickDetectorTest' --console=plain;sh ./gradlew :app:assembleDebug --console=plain。
2026-08-25 A02 认领落库与网络兜底策略
- 放盘认领查到人员后,本地取餐记录首次保存失败会自动再试 2 次,共 3 次;三次均失败时切换为
LOCAL_SAVE_FAILED,停止响应放盘、隐藏或禁用放盘认领入口,仅保留管理卡解除。
- 本地保存失败页提示“取餐记录保存失败,无法进行放盘补录,请工作人员刷管理卡解除报警。”;管理卡解除记为
LOCAL_SAVE_FAILED_ADMIN_OVERRIDE,记录三次失败原因、餐盘、人员、重量和管理卡值,不创建上传队列记录。
- 本地保存成功后,网络类上传失败立即重试 3 次;三次仍失败则保留记录并进入既有定时上传队列,以
TRAY_CLAIM_DEFERRED_NETWORK 解除报警,提示累计营养可能暂未同步。
- 延迟上传最终成功时,若认领餐盘仍处于当前打餐页,主动刷新该人员累计;否则在下次放盘时走既有查询获取最新累计。
- 新增
A02ClaimRetryPolicy 及其单元测试,锁定“保存共 3 次、仅网络类上传失败共 3 次可进入离线队列”的边界;现有 A02 单元测试与 Debug 编译通过。
2026-08-25 A02 操作方式主动返回
- 选择“刷管理卡解除”或“放餐盘认领并补录”后、尚未接收到有效输入时,显示“返回重新选择”。
- 返回只取消当前等待态并停止 60 秒计时,恢复两种选择;报警、声光、实时逃单重量与累计时长均不改变。
- 日报警分类日志新增
ACTION_CANCEL,记录被取消的方式;餐盘已进入查询/上传或处于 LOCAL_SAVE_FAILED 时不允许返回,以保护认领流程和仅管理卡解除限制。
- JDK 8 验证通过:A02 相关单元测试、
sh ./gradlew :app:assembleDebug --console=plain 与 git diff --check。
2026-08-25 A02 业务处理汇总
- 新增《A02 未放餐盘取餐报警:业务处理与现场诊断汇总》Markdown 和 HTML,记录触发、实时重量、两种解除方式、落库、上传、Worker、日志和现场验收口径。
- 纳入已连接设备餐盘
003400 的证据:selectPlate 查人成功,但 zhctPushMeal 返回未绑定人员,用于界定服务端接口判定不一致问题。
未包含
- 未新增服务端接口或修改上传协议,补录记录沿用现有上传接口与既有“服务端返回 1 时删除本地记录”的策略。
- 未进行真机硬件/扫码/服务端联调,需按实施方案执行人工验收。