ZhctTrayBindingMachine 性能测试埋点方案

版本:V1.0(待确认)

目的:在不改变人盘绑定业务结果、不新增网络依赖的前提下,为每一笔绑盘流程生成可离线解析的性能与结果记录。

1. 方案结论

建议采用“本地会话轨迹日志”而不是第三方埋点平台:每次有效读到餐盘后创建一个会话,关键节点写入 /sdcard/Log/ 下按日追加的文本文件;每行使用固定键值格式,后续可通过 ADB 拉取并自动汇总为测试报告。

现有工程已经使用 LocalFileRecorder 写入 /sdcard/Log/,本方案仅在已有主流程节点增加轻量记录,不上传人员信息、不改变接口请求或页面行为。

埋点硬约束:不影响现有业务

2. 统计口径

指标起点终点说明
读盘处理耗时收到有效餐盘条码回调已切入人员识别流程衡量设备收到餐盘码后的应用处理与页面切换,不包含用户实际把餐盘放上读头前的物理时间。
二维码识别耗时进入人员识别流程并启动二维码读取器收到有效二维码数据反映等待扫码到收到码的时间。
刷卡识别耗时进入人员识别流程并启动刷卡读取器收到有效卡号反映等待刷卡到收到卡号的时间。
人脸识别耗时开始本次人脸识别获得有效人员匹配结果或失败/超时记录匹配结果与失败原因。
绑定接口耗时调用 bindPlate 前收到接口回调分别记录 HTTP/网络异常和业务返回码;HTTP 200 但业务失败不记为成功。
移盘复位耗时收到移盘事件完成返回等待放盘状态记录移盘前所在流程状态,验证不会残留上一笔信息。
全流程耗时收到有效餐盘条码回调收到绑定最终响应;若未绑定则记录中断原因用于整体体验统计;绑定成功后移盘时另补充“含移盘复位总耗时”。

3. 每笔会话的记录字段

字段示例说明
session_id20260714-135049-12每个有效餐盘生成一次;新餐盘、移盘或重置后结束旧会话。
eventTRAY_ACCEPTED固定事件名,见第 4 节。
at_ms1720936249485设备当前毫秒时间,用于精确差值计算。
elapsed_ms1142当前事件相对会话起点或相对节点起点的耗时。
tray_code8888****仅记录脱敏餐盘码;报告可按需要显示完整码,但默认日志不写完整人员信息。
recognition_methodQR / CARD / FACE实际先完成识别的方式。
resultSUCCESS / FAIL / CANCELLED事件结果。
reasonTRAY_ALREADY_BOUND稳定的错误分类,不依赖展示文案。
api_code0 / 1仅绑定接口结果事件记录。
flow_stateRECOGNIZING用于排查串盘或旧结果回写。

不记录姓名、头像、完整 UUID、完整卡号或完整二维码。若排查需要关联人员,记录不可逆短摘要或由现场另行提供对应关系。

4. 必需埋点项目

编号事件名建议代码节点记录内容对应统计
T-01SESSION_STARThandleTrayCodeScanned 通过合法性/防抖后新建会话、餐盘脱敏码、当前流程状态全流程起点
T-02TRAY_RECOGNITION_READYbeginRecognitionWithTrayCode 完成页面切换调用后读盘处理耗时读盘处理耗时
T-03QR_READER_READYopenQrCodeScanner 成功打开后二维码等待开始时间二维码识别耗时
T-04QR_RESULThandleQrCodeResult 校验通过/失败处耗时、二维码类型(人员/消费码/非法)、结果原因二维码识别耗时
T-05CARD_READER_READYopenSwipeCard 成功打开后刷卡等待开始时间刷卡识别耗时
T-06CARD_RESULT刷卡 onResult 通过状态校验后耗时、卡号短摘要、结果刷卡识别耗时
T-07FACE_STARTstartFaceRecognitionForCurrentSession 实际启动后人脸开始时间人脸识别耗时
T-08FACE_RESULT人脸成功、失败及超时分支耗时、成功/失败、失败分类人脸识别耗时
T-09RECOGNITION_COMPLETEcompleteRecognition实际完成的识别方式、从会话起点的耗时识别链路与方式判定
T-10BIND_REQUESTuploadInfo 发起 bindPlate 前API 开始时间、会话、识别方式绑定接口耗时
T-11BIND_RESPONSEbindStaffAndTray 回调的成功、业务失败、网络失败分支API 耗时、业务码、错误分类绑定接口耗时、成功率
T-12TRAY_REMOVEDhandleTrayRemoved移盘时间、移盘前状态移盘复位耗时
T-13FLOW_RESETresetFlowToScanning 完成后移盘/超时/人工重置原因、复位耗时移盘复位、恢复能力
T-14SESSION_END成功绑定后移盘复位,或异常/超时/新餐盘中断时会话总耗时、最终结果、结束原因完整性校验

5. 错误分类

分类触发条件
TRAY_INVALID餐盘码为空或不合法。
TRAY_DUPLICATE同一餐盘重复读码被防抖拦截。
QR_INVALID二维码为空、格式不符合人员/消费码规则。
CARD_INVALID卡号为空或读取器返回无效数据。
FACE_NOT_FOUND未匹配到已录入人员。
FACE_TIMEOUT / RECOGNITION_TIMEOUT人脸或通用人员识别超时。
NETWORK_UNAVAILABLE发起绑定前网络不可用。
NETWORK_ERROR绑定接口网络/解析异常。
TRAY_ALREADY_BOUND接口返回“此餐盘已绑定”。
BIND_BUSINESS_REJECTED其他非零业务返回码。
TRAY_REMOVED / MANUAL_RESET操作未完成即移盘或人工复位。

6. 日志格式与保留

建议新增独立文件前缀 binding_trace_,避免与现有 local_log_ 的自由文本混杂。每行一条 UTF-8 记录,例如:

2026-07-14 13:50:49.485|session_id=20260714-135049-12|event=SESSION_START|at_ms=1720936249485|tray_code=8888****|flow_state=SCANNING_TRAY
2026-07-14 13:50:50.860|session_id=20260714-135049-12|event=BIND_REQUEST|elapsed_ms=1375|recognition_method=QR
2026-07-14 13:50:51.080|session_id=20260714-135049-12|event=BIND_RESPONSE|elapsed_ms=220|result=FAIL|api_code=1|reason=TRAY_ALREADY_BOUND

7. 实施任务清单

任务 1:会话与轨迹记录基础

新增轻量记录器,生成会话号、统一事件格式、耗时计算、餐盘/身份信息脱敏,并复用异步文件写入。

任务 2:读盘、识别与复位节点

在 T-01 至 T-09、T-12 至 T-14 对应节点添加记录;识别方式以实际完成回调判定。

任务 3:绑定接口节点

在绑定请求、响应、网络异常和业务失败分支写入 T-10、T-11。

检查点:设备验证

8. 不纳入本次范围

9. 请确认的决策

  1. 是否同意使用本地独立轨迹文件 binding_trace_YYYYMMDD.txt?
  2. 是否同意默认只写脱敏标识,现场需要完整餐盘码时再通过人工关联?
  3. 现场验收是否采用:平均值、最大值、P95、成功率和失败原因分布这五类输出?
  4. 是否需要额外记录设备 CPU、内存、网络类型?建议本期先不纳入,避免扩大范围。

10. 埋点硬约束与验收

11. 已确认的配置决策