9bf2d46f8462d5c883e921393cd9170a88de1a85
问题(162 服务器日志实证):
ERROR 人脸识别被系统驳回,判定签到失败 userId=1043 message=识别中,预计等待4位
ERROR 人脸识别被系统驳回,判定签到失败 userId=1043 message=识别中,预计等待8位
「识别中,预计等待N位」是服务端识别队列的进度提示,不是失败。
但 evalFaceIdentify 里只要 recognitionProgress 非空就判 Rejected+Settled,
于是提交后的复核立刻判定签到失败,用户看到报错,实际签到可能仍在排队后成功。
根因:
if res.Progress != "" { res.Rejected = true; res.Settled = true; return }
修复:
1. 新增 faceProgressIsPending / faceProgressIsTerminalFailure 两个判定:
- 含「识别中/排队/处理中/等待」等 → 进行中,继续等待;
- 含「未通过/失败/驳回/人脸不匹配/未检测到人脸」等 → 终止失败;
- 两者皆无的未知文案 → 保守按进行中处理,不误杀(超时后仍走原有
「未出结果按成功」兜底);
- 判定失败前先排除排队文案,避免「识别中」被误伤。
2. handler 轮询策略调整:原先固定 4 轮(0/1/2/3 秒)就收手,排队靠后
必然等不到结果。现在前 4 轮快速取结果,之后每 3 秒一轮,最长再等
90 秒;期间把最新排队提示透传给前端(queued=true),用户能看见进度。
测试:用日志里的真实文案断言不判驳回;同时保留 FRS.0036 等真实失败
文案必须判驳回;progressCode=2 无文案时仍判驳回;未知文案不误杀。
Description
No description provided
Languages
Go
58.2%
Vue
35.3%
TypeScript
4.1%
CSS
1.5%
JavaScript
0.6%
Other
0.2%