fix(qdreader): align weekly exchange payload

This commit is contained in:
2026-05-22 19:28:00 +08:00
parent c7011a43ea
commit 373130c178
5 changed files with 102 additions and 14 deletions
+1
View File
@@ -650,6 +650,7 @@ QDReader 签到结果判定补充:
- 激励任务 `finishWatch` 可能返回 `result=9``Result=9`,上游将其视为可继续/已受理,再回查 `mainPage` 判断任务是否完成;插件不能把大小写不同的 `result=9` 直接计为失败。
- 每日任务不是简单取任务列表第一个。上游会先处理 `packagelist` 里的惊喜/前置任务,再从任务列表按标题定位“每日任务”,执行多次 `finishWatch` 后回查完成状态。
- 大咖荐书不是一次 `pullmessage` 即结束。消息 token 需要由 `UserId` 经过 `(uid * 4 & 0x7ffffffffffffffc) ^ 0x113a4f` 后转 base62;流程是:拉会话列表(`appappend` + `categoryIds=0`)→ 对红点会话带 `fromId` 拉消息 → 从最近消息的 `ActionUrl/RefUrl` 提取 `orderId``/argus/api/v1/interaction/rewarddetail``refresh=0`)→ 根据 `ChanceCount/BookStatus``/argus/api/v1/interaction/rewardcallback``/argus/api/v1/interaction/rewardaddshelf`。如果直接用十进制 token、旧的 `token/type/senderId` 参数,或旧的 `/argus/api/v2/recommend/...` 路径,实测会偏离当前上游并容易返回“参数错误”。
- 每周兑换按上游字段执行:读取兑换页 `Goods` / `GoodsScore` / `ChapterCardCount`,选择当前余额可覆盖的最高 `GoodsScore` 章节卡商品,并用小写 `goodId` 调用 `exchangegoods``result=-220000` 明确视为“未到兑换时间”。
- 大咖荐书不应再做固定北京时间窗口限制;当前反混淆上游里没有 `20:00-22:00` 之类限制,只保留“消息必须是最近一段时间”的过滤。若接口在某些时段返回空列表/无未读消息,按正常无任务处理,不要在插件侧提前跳过。
- “无可领取礼包/今日已签到”属于幂等成功类提示;这类提示不应让整个账号汇总失败。
- 每次修复这类链路必须补 VM 回归测试:请求路径、签名 payload 里的参数、特殊返回码分类、最终账号成功/失败汇总。