mirror of
https://github.com/Hommy-master/capcut-mate.git
synced 2026-10-31 11:34:31 +08:00
ResponseMiddleware 把所有非 200 改写成 HTTP 200,真实状态码在 body 的 code 里。 因此 draft_downloader 里按 HTTP 状态判断重试的分支对文件列表请求是死代码, 真实错误全部走 code != 0 分支——而该分支此前立即判死、零重试,服务端 5xx 事实上从未被重试过;desktop-client 则只检查 response.status(恒为 200), 从不看 code,服务端瞬时错误直接弹报错、不重试。 服务端 code != 0 现按信封分类:9998/9999(系统内部错误)与 ≥500 可重试, 业务码 1001-2050 保持立即失败。客户端把信封校验移进 requestGetDraftOnce, 使其落在重试循环内;只挂 apiCode 不挂 response,否则 response.status 恒为 200 会把「服务器返回错误 (200)」当成原因报给用户。 下载阶段新增 5 分钟总预算:读写超时只管单次 socket 读写,慢速滴流能无限续期, 重试预算又逐层相乘,故另设按阶段计时的预算,检查点只在发起新请求之前与 chunk 之间(后者是慢速滴流唯一能拦住的地方)。另修 _download_remote_file_raising 不归还连接的泄漏,并给 robocopy 加 120s 超时。 客户端 ENOTFOUND(NXDOMAIN,对应服务端 Errno 11001)改为 3 次小预算重试, 与服务端 _DNS_RETRY_BUDGET 对齐;ECONNREFUSED 仍不重试。 下载器测试 128 → 144 项。改动了一条既有断言:test_non200_404_does_not_retry 原先写 assert_not_called(),即把「404 分支不归还连接」这个泄漏当成了预期行为。 Co-Authored-By: Claude Code <noreply@anthropic.com>