Skip to content

fix: 并发刷新额度与资格,并支持领取验证失败恢复 - #28

Draft
iiijiashu wants to merge 1 commit into
pjpv:mainfrom
iiijiashu:fix/refresh-claim-performance
Draft

iiijiashu wants to merge 1 commit into
pjpv:mainfrom
iiijiashu:fix/refresh-claim-performance

Conversation

@iiijiashu

@iiijiashu iiijiashu commented Sep 29, 2026 •

Copy link
Copy Markdown

草稿:尚未完成真实桌面与线上领取验收,请勿视为已确认可用的修复。

当前证据仅包括 Rust/前端测试、前端构建和模拟 Tauri 请求的浏览器验证。尚未构建并启动本 PR 的完整桌面程序,未在真实 WebView 内验证 IPC、验证码窗口生命周期及关闭事件,也未验证线上领取成功。截图中的连接超时根因尚未查明;重试和缓存只能改善部分短暂网络故障的恢复,不能保证消除领取失败。

转为正式审阅前需补齐:完整桌面构建与启动;真实账号刷新耗时、失败继续及单账号重试;真实验证码配置加载、人工验证与领取结果确认。上游 CI 当前为 action_required,并非通过。

问题与改动

批量「刷新资格」原先逐个账号请求,并在账号间固定等待 5 秒;后台额度刷新每 8 秒只处理一个账号。多个 Tauri 异步命令又直接执行阻塞 HTTP,账号多或网络较慢时等待会明显累积。验证码配置请求偶发连接超时后没有恢复入口,且会被自动领取误判为需要人工验证。

  • 额度、预览和资格刷新共用最多 3 路请求队列,手动操作优先于后台刷新,同类重复点击共用在途请求。进度按实际完成数更新,失败保留在账号行,可立即单独重试;整轮刷新保留 60 秒冷却。
  • 将相关阻塞网络调用移至 spawn_blocking,复用 HTTP 连接池。额度查询仅在明确的认证拒绝后尝试兼容凭据,网络/限流失败不再触发另一轮凭据遍历,同一轮不会重复请求相同接口与凭据。
  • 成功的验证码配置在进程内缓存 5 分钟,传输故障最多重试一次。配置/SDK 初始化失败提供重试入口,批量领取保留失败账号后继续;与真正需要人工验证的情况分别处理。
  • 每次领取关联独立 claimId,先注册结果等待再打开窗口,忽略旧会话事件并仅关闭对应验证窗口。按照阿里云接入要求,在加载 SDK 前设置 AliyunCaptchaConfig。

领取仍逐个完成,领取 POST 不会自动重发,资格条件与人工验证码要求保持原有行为。没有修改登录代理设置或 ZCode 客户端。

验证

  • Windows:cargo test --lib --locked -j 2,9 项测试通过,包含本地 HTTP 配置响应、有限重试/缓存、认证兼容回退与错误分类。
  • npm test,14 项测试通过,覆盖 20 账号并发上限、失败继续、完成进度、重复点击、手动优先、单账号重试、旧会话事件和验证码恢复。
  • npm run check:i18n、npm run build、git diff --check 通过;新增前端 CI 检查。
  • Headless Edge 运行实际前端、模拟 Tauri 请求:20 账号峰值并发为 3;失败账号单独重试后请求总数从 20 增至 21;验证窗口显示重试按钮,无页面异常。

验证边界:浏览器验证使用模拟账号与请求,未实际领取线上额度,也未验证原生 WebView 的关闭事件顺序;以上结果不代表已验证线上服务在所有网络环境下的表现。

接入顺序依据:阿里云 Web/H5 V3 客户端接入。

Copilot AI balanced review requested due to automatic review settings September 29, 2026 16:34

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@iiijiashu
iiijiashu marked this pull request as draft September 29, 2026 16:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants