硬件类型澄清(用户2026-09-09确认):本项目使用扫码器扫描二维码。
rfidData/rfidLen是厂商SDK字段名,不代表此设备采用射频识别;原字节码证据和变量名保留。
本文件是本次审计的后续任务契约草案。没有创建/修改云效条目,没有授权实现、替换 SDK、安装设备或发布。审计可完成,开发就绪状态另行管理;以下 P0 待确认未关闭,整体 DoR: BLOCKED。
UC-YKSCAN-001:得到可归因的扫码中断证据
- 角色/边界:测试人员操作指定 410 真机;Android 开发读取诊断;供应商解释原始协议。只针对获准测试设备与脱敏业务数据。
- 触发:现场或实验室出现“盘仍在,但界面重新识别/会话结束”或“长时间无数据”事件。
- 前置:APK 构建提交、SDK SHA、板卡/扫码头固件、N 与设备生效回报周期可回读;测试人员明确物理在盘状态。缺失则先记录未知,不能把本机 master 当成现场版本。
- 成功后置:得到至少一条可以重放、按时间关联各层事件的失败轨迹;可指出第一处分歧。
- 失败后置:保留未复现或证据缺项,不写根因已确认。
主流程
- M1 固定设备、版本、配置及安装升级来源;盘码/人员标识脱敏。
- M2 在串口接收、组帧、SDK 输出、业务清洗、计数、会话状态六个位置记录同一事件链的单调时间与诊断标识;记录原始字节摘要、长度、校验和状态,必要原始帧仅存受控本地证据。
- M3 同步记录放盘、拿盘、换盘的物理动作;使录像/动作时间与程序事件可对齐。
- M4 复现后冻结故障前后环形记录,核对输入是明确空码、异常码、陈旧帧还是没有回包。
- M5 在隔离回放中重放最小样本,逐层比较;输出可证实原因与仍未排除的原因。
分支、异常与恢复
- A1@M4:没有复现则保存测试条件与持续时间,结果标“未复现”,不标修复通过。
- E1@M2:日志队列、磁盘或容量不足;记录诊断丢失计数,禁止无限删文件/无限排队。
- E2@M4:完全无回包;分类为通信未知/超时,不凭空生成离盘事件。
- R1@E1:恢复诊断后重新采集;不把中间缺证时间段拼成连续完整证据。
规则、页面/API/数据
- BR-01 所有延迟从采集或接收时间计,落盘时间不能冒充采样时间。
- BR-02 回调序号只是软件序号;没有厂家真实采样序号时,不称为独立扫码次数。
- 页面:当前 HomeActivity/设置页与诊断导出入口;新增诊断 UI 方案待定。
- 事件/数据:接收、解析成功/失败、净化原因、N/T 来源、连续空计数前后值、会话开始/继续/结束;持久化条目应有 trace_id。
- 对外业务 API:[不适用:本 UC 先采集与归因,不改变取餐接口]。
验收、测试与非功能
- AC-01 一条失败时间线可从物理动作追至取餐状态/记录,六层关联无歧义;IT-01 回放相同输入,首个差异步骤一致。
- AC-02 新装、升级缺键、已保存 3/7/10、非法值分别回读有效 N 与来源;UT-01 对照实际配置策略。
- AC-03 无回包与收到空码的轨迹可区分;IT-02 停输入/空帧两组用例。
- PERF-01 诊断开关前后回调延迟、内存、磁盘写量需要量化比较;预算上限由设备负责人确认,不能自定已合格。
- SEC-01 原始数据有限期、有限量留存;不记录账号凭据或可还原人员信息,未知长度/内容先脱敏。
- 待确认 Q1:故障实际 APK、硬件、事件定义及测试设备;Q2:采集容量/保留时长/允许开销。责任:测试+Android负责人;日期待安排。DoR: BLOCKED。
UC-YKSCAN-002:异常串口数据不冒充物理离盘
- 角色/触发:控制板持续发送复合帧,SDK/适配层负责解析;Android 业务只消费有明确定义的判定输入。
- 范围:PC681 当前主链路,串口分段、合并、校验、长度及新鲜度;不以独立 SerialScanCodeImpl 调试路径替代。
- 前置:供应商确认帧长度/边界、SDK码字段声明长度、无盘表示、控制响应、校验计算及字段业务范围;确定可修改 SDK 或适配层的方案。
- 成功后置:每个完整业务帧恰好处理一次且按序可追踪;异常数据有独立错误,不产生合法空盘证据。
- 失败后置:不确定输入标为未知/错误;不自动结束或换绑当前取餐身份。
主流程
- M1 接收字节并记录接收时间,在容量受控的缓存中追加。
- M2 依据已确认协议定位完整帧,校验长度/内容/校验和,循环处理所有完整帧,保留最后半帧。
- M3 输出有效盘码、协议明确空码、非法帧/码、陈旧输入等有区别的结果;时序元数据跟随结果。
- M4 业务根据质量状态分流:只有契约允许的空盘观测进入离盘判定;协议错误单独诊断。
分支、异常与恢复
- A1@M2:同一 read 有两帧或多帧,全部按序处理,不能等下次 read 才处理尾帧。
- A2@M2:半帧等待后半部分,不先发空盘。
- E1@M2:声明长度大于负载或校验失败,报告错误并按协议重同步;不得默认
rfidData=""后当正常空盘上报。 - E2@M2:校验字节等于尾标记、短命令响应;遵守长度/响应协议,不误截断/吞后一帧。
- E3@M1:超时无新数据或缓存溢出,报告质量状态和丢弃原因。
- R1@E1/E2/E3:下一合法帧可以恢复解析;旧残留不能污染新帧,恢复不能重复处理旧业务帧。
规则、页面/API/数据
- BR-03 帧头尾/校验通过不等于 SDK码字段业务合法;异常长度必须区分于明确空盘。
- BR-04 必须 6 位是否为正式盘码规范由业务确认;即便拒绝,也不能无说明地归为物理离盘。
- 接口:SDK ScaleDataCallback 到 HardwareManager/HomeActivity 的事件适配;是否扩展对象或另设适配事件待技术确认。
- 页面:[不适用:本 UC 不要求改版页面];数据:帧序、时间、质量、盘码/摘要、重量、错误原因。
验收、测试与非功能
- AC-04 合并 A+B 两完整帧产生 A、B 两次且顺序正确,无完整尾帧滞留;UT-02 复用本次 SDK 特征用例并改为修复后断言。
- AC-05 声明7/实有6的自洽校验帧报告长度错误,业务离盘计数不增加;UT-03/IT-03 串联解析和业务。
- AC-06 供应商确认范围内 checksum=0x3C 样本正确处理;UT-04;当前人工样本先作为结构缺陷特征,不能直接当真实设备数据。
- AC-07 5位/7位/空格/控制字符、短响应、错误后合法帧、半帧/多帧均有明确分类;UT-05。
- PERF-02 在真实设备最大帧率及合包突发下缓存有界、无持续积压,峰值及持续时间按协议确认。
- SEC-02 任意长度输入不越界、不无限缓存;原始码不上报公共服务。
- 待确认 Q3:正式 PC681 协议与固件范围;Q4:厂家新 SDK 还是应用适配修复;Q5:合法盘码和异常策略。责任:供应商+Android+产品;日期待安排。DoR: BLOCKED。
UC-YKSCAN-003:连续取餐、真实离盘与换盘各自闭环
- 角色:取餐人、管理员;Android 判定会话,已有后台接收取餐记录。
- 触发:当前 A 盘取餐中出现短空档、明确离盘、同盘恢复、B 盘到来、管理码、切页或设备失联。
- 前置:UC-002 输入质量可识别;确认容忍窗口 W、计时起点、最大确认延迟 L、异盘处理、失联与待稳定收尾策略。
- 成功后置:同盘短空档不中断;真实离盘只收尾一次;换盘不漏掉 A、不把 A 的重量/人员归给 B;重连和切页状态一致。
- 失败后置:未知身份/设备状态按已确认异常规则保留可追溯状态,不无证据形成新的正常取餐记录。
主流程
- M1 A 盘进入取餐,分配会话标识,记录身份及起始稳定重量。
- M2 首个合格空盘观测出现,进入疑似离盘并记录起点,保留 A 会话。
- M3 在已确认 W 内同盘有效结果恢复,清除疑似状态并继续 A,不能另建一次取餐。
- M4 明确空盘持续达到契约条件,进入待收尾/待稳定状态,按既有业务规则计算、保存 A 的一次取餐。
- M5 保存/上报结果可追溯到同一会话,完成后才进入下一次正常取餐。
分支、异常与恢复
- A3@M2:B 盘在 W 内到来,执行待确认的 A 收尾/隔离与 B 开始顺序;禁止直接覆盖 A 的起始重量和身份。
- A4@M2:管理解除码,与普通盘码区分;是否取消疑似离盘由业务确认,不能默认继承任何非空即清零。
- A5@M2:A02等待认领且查询进行中,仍须处理有码/空码的存在性状态,不因请求防重复而遗漏计数重置;清盘代表解除同码重复查询限制,不等同结束一笔正常取餐。
- A6@M2:A03识别原未绑定盘是否移走,须确认原A变成B是否算原盘已离开、等待管理员卡期间是否需要观测;不能默认任何非空都证明原盘在位。
- E4@M2:协议错误/无新帧,进入质量异常,不当正常空盘;设备失联需独立计时。
- E5@M4:重量未稳定/网络失败/人员查询迟到,保持原会话关联;旧查询不得覆盖新会话。
- R2@E4:通信恢复,按当前有效盘码和会话状态恢复,不能通过重复初始化制造重复监听。
- R3:带盘进入设置返回、前后台切换,界面、mCurrentCode、连续计数及取餐状态一致。
规则、页面/API/数据
- BR-05 W 与 L 都需明确:延长容错会增加真实离盘延迟,必须同时满足两者,900/1200ms 仅为会议候选,尚未选定。
- BR-06 使用时间窗口时,明确计时基准与陈旧帧处理;用独立采样计数时必须有可靠真实采样序号,不能以回调数代替。
- BR-07 一次业务取餐只产生一次正确记录;异常重试不重复入账。沿用既有取餐重量/本地补传规则,不在本次审计中改后台。
- 页面:HomeActivity、取餐前/中 Fragment、设置页;事件:空码/同盘/异盘/收尾/查询完成/生命周期。
- 数据:会话ID、盘/人/菜关联、起止重量、待稳定状态、记录唯一标识;API:已有
/p/api/selectPlate、/p/api/zhctPushMeal,变更字段需另定兼容契约。
验收、测试与非功能
- AC-08 持续成功扫码不产生离盘;单次/多次空档分别在 W−1/W/W+1 边界验证;IT-04。
- AC-09 同盘在宽限期恢复仍只有一个会话/记录;真实离盘在 L 内仅收尾一次;IT/E2E-05。
- AC-10 A→B 在0/1/N−1/N个空回调后到来,A/B记录、人员、重量均正确;IT/E2E-06。
- AC-11 管理码、报警、带盘切页、过期人员响应、无回包恢复分别验证状态不污染;IT/E2E-07。
- AC-11A A02查询进行中注入
空/空/有效/空,按确认的存在性规则验计数;A03验证原A与异盘B及两种等待子状态;IT/E2E-07A。规则确认前保留本次特征基线,不直接改写预期。 - AC-12 新装/升级/配置3/7/10与50/100/150/200/250ms名义档位均记录设备实际间隔;时间契约不能随回调堆积而提前;PERF-03。
- PERF-04 真机持续运行时长、动作轮数、误离盘数、离盘P95/P99、帧龄/内存上界须先定值;不能以“覆盖率90%”替代。
- SEC-03 无跨人串单;诊断与业务数据最小保存,权限沿既有管理员设置边界。
- 待确认 Q6:W/L/计时起点和测试规模;Q7:异盘、失联、待稳定时恢复和管理员码策略。责任:产品+Android+测试;日期待安排。DoR: BLOCKED。
追踪矩阵
| 审计发现/任务 | Use Case / 步骤 | 验收/测试 | 本次已有证据 |
|---|---|---|---|
| T1/T2 版本、配置和根因证据 | UC-001 M1–M5 | AC-01–03 / UT-01、IT-01–02 | 哈希、分支、配置隔离验证;现场缺证 |
| S1 合帧只处理一帧 | UC-002 M2/A1 | AC-04 / UT-02 | 实际SDK双帧/空闲/后续输入验证 |
| S2/APP-01 错误变空 | UC-002 M3/E1 | AC-05/07 / UT-03/05、IT-03 | SDK长度异常与应用短码验证,分层执行 |
| S3 尾字符碰撞 | UC-002 E2 | AC-06 / UT-04 | 人工帧SDK校验与组帧结果不一致 |
| APP-02 升级仍3 | UC-001 M1 | AC-02 / UT-01 | 实际策略编译验证 |
| APP-03 次数与时间不同 | UC-003 M2–M4 | AC-08/12 / IT-04、PERF-03 | 原方法无延时调用验证、条件模型 |
| APP-04 快速换盘 | UC-003 A3 | AC-10 / IT/E2E-06 | 路由测试+静态收尾链,完整记录待验 |
| APP-05/06 诊断与管理码 | UC-001 M2、UC-003 A4 | AC-01/11 / IT-01、IT/E2E-07 | 日志静态审计、管理码特征验证 |
| 补充页A02/A03差异 | UC-003 A5/A6 | AC-11A / IT/E2E-07A | 3项既有测试+7项实际策略/路由特征检查 |
下一阶段仅当对应P0项关闭才可把开发切片标 Ready。若用户后续要求进入云效,需把父 Use Case / 开发执行切片直接写入正文并 CLI 回读,不能只放本文件链接。