Skip to content

fix(login): 发封号提醒前先探测一次;Rousi 最近活跃只认站点记录,凭据写明是个人 API Key - #767

Merged
sunerpy merged 3 commits into
v1.0.0-rcfrom
fix/rousi-apikey-probe
Oct 23, 2026
Merged

sunerpy merged 3 commits into
v1.0.0-rcfrom
fix/rousi-apikey-probe

Conversation

@sunerpy

@sunerpy sunerpy commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

改了什么

用户反馈:Rousi Pro 的 API Key 支持签到;网页已经打开过了,pt-tools 还是提示「即将封禁」。

  • 发封号提醒前先探测一次:存下的状态最多是 6 小时前的探测结果,用户在这期间用浏览器登录过站点,提醒还是按旧结果发。现在要发提醒时,自动探测的站点如果上一次探测成功、已经过了 30 分钟(或者从未探测过),先探测一次再判断,不再危险就不发。上一次探测失败的(凭证失效、被限流等)照失败后的重试间隔来,站点正在探测或签到时不等,这两种都照旧按已有的结果提醒。只在真要发提醒的那一刻探测,不会每分钟请求站点
  • Rousi 的最近活跃只认站点自己的记录(用户的选择):去掉「当天签到过按当天零点算最近活跃」。Rousi 只在网页访问时更新 last_active_at(2026-10-23 起实测),用 API Key 取资料、签到都不刷新它
  • Rousi 的凭据写明是个人 API Key:站点详情的 Passkey 一栏写成「Passkey(个人 API Key)」,说明填 Rousi「账户 → API Key」页创建的 Key、不是 Tracker Passkey,以及要勾选的权限;驱动报错、签到权限不足的提示同样改写(改权限要轮换 Key 后才生效)
  • 文档:登录监控(判定活跃里 Rousi 一段、提醒前先探测、签到权限)、获取 Cookie 与 API Key(新增 Rousi 个人 API Key 获取方法)、快速开始,中英两份
  • 顺带修一个与本改动无关、按钟点会失败的测试:追剧「每天 20:00」的定时预览在 19:30–20:00 跑时,第一次被「离现在至少 30 分钟」推后,断言改成从第二次起比

依据

  • Rousi「账户 → API Key」页:一把通用个人 API Key,按权限授予(含读取签到状态、执行签到);外部工具的 Passkey 栏填这把 Key,不要填 Tracker Passkey
  • 用生产的 Key 实测:签到接口 POST /api/points/attendance 返回「签到成功,获得 100 魔力」,再签返回「今日已签到」;网页自己的 /api/v1/me/attendance 只认登录会话
  • 生产日志:10-2110-23 每次探测都正常,但剩余天数 -40-42、每天 10:00 / 22:00 发「即将封禁」;10-23 网页访问后站点的最近活跃才前进

测试

  • scheduler:提醒前探测后不再危险就不发、探测后仍危险照发、刚探测过 / 手动或不探测的站点 / 单站锁被占用 / 上次探测失败(凭证失效、密钥错误、被限流)时不补探测、从未探测过的先探测、不到提醒时刻不探测;关键分支做过变异检查
  • site/v2/definitions:最近活跃只取 last_active_at、不查签到统计;缺 Key 的报错
  • 前端:Rousi 的 Passkey 一栏写明个人 API Key 与签到权限,别的 Passkey 站点不变
  • 本地 make check(UTC)

用户反馈网页已经打开过了还是提示要封禁:提醒按最多 6 小时前的探测结果发。

- 要发封号提醒时,自动探测的站点、上一次探测在 30 分钟以前,先探测一次再判断,不再危险就不发;单站锁被占用时照旧按已有结果提醒
- Rousi 的最近活跃只取站点的 last_active_at(只在网页访问时更新),不再把当天签到算成活跃
- 站点详情里 Rousi 的 Passkey 一栏写明填「账户 → API Key」页的个人 API Key、不是 Tracker Passkey,以及签到要的权限;驱动报错同样改写
- 文档中英同步
@codecov

codecov Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 95.31250% with 3 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
scheduler/login_reminder_monitor.go 95.16% 2 Missing and 1 partial ⚠️
Files with missing lines Coverage Δ
site/v2/definitions/rousipro.go 93.11% <100.00%> (+0.31%) ⬆️
scheduler/login_reminder_monitor.go 83.62% <95.16%> (+0.47%) ⬆️

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

凭证失效(会话过期、密钥错误)的站点按设计 24 小时才重探,被限流、网络错误的按退避间隔重探;
提醒前的补探测绕过这个节奏,每天会在提醒时刻多请求两次站点,失效的凭证也探不出新的最近访问。
现在只对上一次探测成功或从未探测过的站点补探测,其余照旧按已有结果提醒。
@sunerpy
sunerpy merged commit a064718 into v1.0.0-rc Oct 23, 2026
13 checks passed
@sunerpy
sunerpy deleted the fix/rousi-apikey-probe branch October 23, 2026 20:40
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