fix(t236): retry rejected ERP captchas

This commit is contained in:
QiuSW
2026-07-29 11:54:06 +08:00
parent d7ab970f5a
commit cf83fb50e4
6 changed files with 237 additions and 23 deletions
+8 -2
View File
@@ -198,7 +198,7 @@ T-203 成功返回 `201`。使用相同 `Idempotency-Key` 和相同图片内容
不得返回 receiver、receiverTel、receiverAddr、Cookie、JWT、ERP 用户资料或完整原始
对象。多商品必须全部保留;缺失详情返回协议错误,不允许部分成功。
### Go ERP 会话(T-230)
### Go ERP 会话(T-230、T-236)
`/erp`、`/erp/captcha`、`/erp/login` 和 `/api/v1/erp-session*` 不再暴露。创建货运同步
前,单一 API 进程在未认证时以同一 Cookie jar 获取验证码、调用受控 OCR、登录并校验用户。
@@ -207,6 +207,11 @@ T-203 成功返回 `201`。使用相同 `Idempotency-Key` 和相同图片内容
`GET /am/user/get?id=<user.id>`;返回身份必须一致。只有 HTTP 401/403 或 ERP code `-2` 被视为
会话失效,其他 `status=false` 返回 `ERP_RESPONSE_INVALID`。
ERP 登录明确返回 `status=false`、`msg=图片验证码不正确` 时,首次失败后最多额外重试 6 次,
单次认证最多登录 7 次;每次都重新获取验证码图片并重新调用 OCR。认证总预算为 20 秒,调用方
deadline 更短时以调用方为准。账号密码错误、其他登录拒绝、OCR 异常、网络错误和协议错误均不
重试;次数耗尽返回 `ERP_LOGIN_REJECTED`。
ERP 配置来源:
- `CMROUBAO_SHUNYUNBAO_URL`:默认 `https://www.shunyunbaoerp.com`;只接受无路径、
@@ -230,7 +235,8 @@ ERP 配置来源:
`false` 并重启 API。Windows 可使用根目录 `start-backend.bat --erp-debug` 仅为本次 API
进程覆盖开启;也可与 `--migrate` 组合。该模式额外在 ERP 登录前输出单行
`erp_ocr_result value="..." length=...`,值只限本次有效 OCR 结果;OCR 失败或无效时只输出
`class=failed` 或 `class=invalid`,不输出原文。
`class=failed` 或 `class=invalid`,不输出原文。每次登录另输出
`erp_login_attempt attempt=<n> max_attempts=7 result=<固定分类>`,不包含凭证或 ERP 原始响应。
会话不写 SQLite 或 Redis;服务重启后在下一次货运导入前重新经 OCR 建立会话。