Skip to content

fix(qoder): 签到 skip 原因可见 + 续期缺 token 时保留原值 - #327

Open
caigee-cmd wants to merge 3 commits into
mainfrom
fix/qoder-cn-checkin
Open

caigee-cmd wants to merge 3 commits into
mainfrom
fix/qoder-cn-checkin

Conversation

@caigee-cmd

@caigee-cmd caigee-cmd commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Refs #323

背景

CN 用户反馈只在登录当天签到成功,之后每天都显示"签到活动未开放"或没有加积分(#229、#248 也是同类问题)。没有真实 CN 账号,本 PR 只修代码层面能确认的问题,并把上游的真实返回暴露出来,方便定位根因。

改动

  1. 把静默 skip 的原因显示出来(internal/providers/qoder/checkin.go,Bridge.Checkin)
    • 之前进程内 Go 路径遇到"没有 CLAIM_BENEFIT 活动"或"有活动但不是 CLAIMABLE"时,只返回 skipped / 签到活动未开放,不写任何日志。旧版 worker(worker/src/checkin.mjs)在同样情况下会打印 summary,迁移到 Go 时这段丢了。
    • 现在会输出 [qoder-checkin] region=... count=... summary=ACTION:STATUS,... 日志。签到结果消息也会写成"上游未返回可领取积分的签到活动(活动数 N:…)"或"签到活动当前不可领取(…)"。这条消息会经 RecordCheckin 存成 last_checkin_msg,账号卡片的签到 Tooltip 本来就会显示它,所以前端不用改。
    • 摘要只包含 actionType 和 claimStatus,不含活动 id 和 token。
  2. 续期响应缺 token 时保留原值(internal/providers/qoder/bridge.go,applyJobToken)
    • 之前 RefreshJobToken 的响应如果缺 securityOauthToken 或 refreshToken,内存里的值会被清成空串。之后签到和额度请求会拿不到 bearer,下一次续期也会失败。
    • 现在缺字段时保留旧值。这是防御性修复:上游续期响应是否真的会缺这两个字段,还需要日志确认。

测试

  • 新增 bridge_token_test.go,覆盖两种情况:续期响应缺 token 时保留旧值;带了新 token 时替换。
  • 扩充 TestBridgeCheckinNoClaimable,新增"只有非积分活动""积分活动不可领取"两个用例,并断言新的消息内容。
  • go test ./... 全部通过。

未改动(需要更多信息)

  • 根据现有测试,skipped 在调度上算当天的终态(TestCheckinSchedule),本 PR 没有改这个策略。
  • PAT 模式额度不显示的问题,要等 quota usage 相关的 WARN 日志才能定位。

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.

1 participant