A01/A02/A03 报警独立开关实施方案

GOAL_CONTRACT

Goal:在 ZhctWeightingTableYoukate 设置页提供 A01、A02、A03 三个独立报警开关;关闭时只抑制锁屏报警,并执行对应的普通提示回退。

Why:让现场工作人员可以按项目需要启停不同防逃单规则,同时保持权限、状态和审计边界清晰。

Target:SetActivity 设置页、MMKV 本地配置、HomeActivity 防逃单报警入口和 A02 重量检测器。

Success criteria:

Non-goals:

Constraints:使用当前 Java 8、MMKV、SwitchButton 和本地日志体系;保留当前分支已有未提交改动;不执行 Git 提交或推送。

Evidence required:规则单测、完整 testDebugUnitTestassembleDebug、设置页代码检查、Markdown/HTML 方案和变更记录。

Next route:/spec/plan/build → 验证。

规格

目标行为

类型设置项默认值关闭后的行为
A01余额不足报警不进入报警,复用 WarnPop 显示 1.5 秒“余额不足”,红灯闪 3 次,按普通语音开关播放一次余额不足语音
A02未放餐盘取餐报警恢复原 1.5 秒提示页、单次放盘语音、红灯闪 3 次和重量变化日志
A03餐盘未绑定报警恢复原 Toast、单次绑定语音、查询日志和既有上报,持续闪红灯至餐盘拿走

三个报警开关控制页面锁定、循环语音、红灯闪烁、活动快照和报警事件记录这一整套行为。开启时完整执行声光报警;关闭后的单次普通语音继续遵守总“语音开关”。

A01 无论开关开启还是关闭,页面都显示当前“余额”和“累计金额”。金额单行水平居中:正式报警页按当前 1600×1000 页面距底边约 240dp;关闭状态 WarnPop 位于“余额不足”标题下方的设计红框区域,字号为 22sp,距图片底边约 22dp。正式报警确认餐盘拿走后继续保留金额,同时显示刷卡处理提示。

关闭状态的灯光按防逃单业务规则强制执行,不受普通“灯光开关”拆分:A01、A02 复用现有红灯三次短闪;A03 复用报警级持续闪烁。A03 连续收到 3 个空扫码帧确认餐盘拿走后停止;应用退出或更换为另一餐盘时也停止。

A01 关闭状态复用 A02 的 WarnPop 页面结构和 1500ms 自动关闭时长,覆盖主文案为“余额不足”,并传入“余额:xx 元 累计:xx 元”明细。未传文案和明细参数时仍显示原“请先放置餐盘!”,已有 WarnPop 正在显示时不叠加第二层。

设置与权限

生效和状态边界

本地审计

只在工作人员真正改变开关时记录:

ANTI_ESCAPE_CONFIG|type=A01|enabled=false|source=SETTINGS

页面初始化 setChecked 不产生配置日志;关闭报警后遇到匹配条件也不额外写“已抑制”日志,避免 A02 高频重量数据造成日志膨胀。

技术环境与命令

项目结构与代码风格

实施任务

  1. 先写三类型独立开关的纯 Java 规则测试,验证默认开启和互不影响。
  2. 新增三个 MMKV 键,在设置页增加三行开关并记录配置变更。
  3. 增加类型门禁和关闭状态回退:A01 单次语音,A02/A03 原提示。
  4. 完整回归三类报警、解除码、退出行为和现有日志精简功能。
  5. 补齐变更记录并核对 Markdown/HTML 内容一致。

验收矩阵

风险和回滚