docs(qqmusic): README 补通知分组与执行日志章节

通知样例换成新的分组格式(📈 任务中心 / 🎁 会员福利站 / 💰 金币中心 /
🎫 VIP 体验券),并加分组规则表与「新增任务要补 step() 且用两段式名」的提醒。

新增「执行日志」章节:四段分隔标题的样例输出,说明末尾两行为什么要有第二行
(光看成长值合计看不出金币跑没跑),以及金币段开头打 ActID 的用途。

本地测试清单补 test_coin.js / test_render.js。
This commit is contained in:
2026-11-07 18:59:00 +08:00
parent d081ac66da
commit 21e4a7a3ae

View File

@@ -157,34 +157,56 @@ cron: 1 0,6 * * *
## 通知内容 ## 通知内容
每轮跑完推送一条,格式固定: 每轮跑完推送一条。**按体系分组**,每条都带子项名,一眼看出是什么签到完成了:
``` ```
✅ QQ音乐签到 · 全部完成 ✅ QQ音乐签到 · 全部完成
🟢 123456789:成长值 +35 🟢 123456789:成长值 +45
✓ 任务中心签到 +15 📈 任务中心(成长值)
✓ 挂件 retCode 0 ✓ 签到 +15
✓ 领奖·头像挂件 +10 ✓ 挂件 已佩戴
✓ 福利站签到 5成长值(本月 12 天) ✓ 节目 计数 3
△ 领奖·收听节目 未计次,待 App 内收听 · 无需处理 2 项:装扮、听书
· 无需处理 3 项:福利站礼券、月里程碑、分享卡 🎁 会员福利站(成长值 + 权益)
🎁 分享卡 https://y.qq.com/m/vip/experience_card/dist/index.html?cardid=xxx ✓ 签到 15成长值(本月 8 天)
✓ 礼券 +10 心愿值
· 无需处理 4 项:旅程激励、月里程碑、月礼、臻享抽奖
💰 金币中心(金币,不计成长值)
✓ 签到 已签 + 30 金币
✓ 抽奖签到 已签 + 已领
🎫 VIP 体验券
✓ 分享卡 新建 1 张,还能被领 3 次
🔗 领卡链接 https://y.qq.com/m/vip/experience_card/dist/index.html?cardid=xxx
——— ———
轮次: 00:01 / 06:02 双轮(任务20跨天滚动 + 福利站兜底) 轮次: 00:01 / 06:02 双轮(任务20跨天滚动 + 福利站兜底)
节目任务(20)依赖 App 内正常收听计入(播放上报未启用) 节目任务(20)依赖 App 内正常收听计入(播放上报未启用)
时间: 2026/11/4 23:10:05 时间: 2026/11/7 00:01:24
``` ```
**标题就是结论**:`✅ 全部完成` / `⚠️ 有未完成项`,不用点开就知道要不要管。 **标题就是结论**:`✅ 全部完成` / `⚠️ 有未完成项`,不用点开就知道要不要管。
每个账号下分四类: ### 分组规则
| 组 | emoji | 说明 |
|---|---|---|
| 任务中心 | 📈 | 成长值,`music.lvz.*` |
| 会员福利站 | 🎁 | 成长值 + 权益,`music.vipcgi.*` |
| 金币中心 | 💰 | **金币,不计成长值**,`music.actCenter.*` |
| VIP 体验券 | 🎫 | 分享卡 |
| 其他 | 📌 | 兜底,未知前缀落这里 |
- 组内每条都是「**子项名 + detail**」,不会出现只有 detail 的行
- **整组全 skip 时收成一行**:`💰 金币中心(金币,不计成长值):签到、抽奖签到 今日无需处理`
- 金币组标题固定带「不计成长值」,避免 `+30 金币` 被读成成长值
### 符号
| 符号 | 含义 | | 符号 | 含义 |
|---|---| |---|---|
| `✓` | 做到了(带结果,如 `+15`、`retCode 0`) | | `✓` | 做到了(带结果,如 `+15`、`已佩戴`) |
| `△` | 部分完成 / 留待下次(如任务20未计次、写锁) | | `△` | 部分完成 / 留待下次(如任务20未计次、写锁、ActID 过期) |
| `✗` | 失败(接口报错、code 非预期) | | `✗` | 失败(接口报错、code 非预期) |
| `·` | 无需处理(今日已完成 / 未开放),**折叠成一行**,不占版面 | | `·` | 无需处理(今日已完成 / 未开放),**折叠成一行**,不占版面 |
@@ -192,7 +214,39 @@ cron: 1 0,6 * * *
全 `✓`/`·` → `✅`。登录态失效单独用 🔴 并直接给处理指引,不进明细列表。 全 `✓`/`·` → `✅`。登录态失效单独用 🔴 并直接给处理指引,不进明细列表。
明细来源是 `QMClient.steps`:每个动作调一次 `step(name, status, detail)`, 明细来源是 `QMClient.steps`:每个动作调一次 `step(name, status, detail)`,
`verdict()` 汇总。新增任务时记得补一句 `step()`,否则它在通知里不可见。 `verdict()` 汇总。**新增任务时记得补一句 `step()`,且 name 用「体系·子项」两段式**,
否则它在通知里会被归到「其他」组。
## 执行日志
日志前缀同样是「体系·子项」两段,`run()` 里还有四段分隔标题:
```
───── ① 任务中心(成长值)─────
[任务中心·签到] 签到成功 成长值+15
[任务中心·挂件] UsePendant retCode:0
[任务中心·节目] 开始标记已挂(播放上报未启用,App 内正常收听计入)
───── ② 会员福利站(成长值 + 权益)─────
[福利站·签到] 签到成功:15成长值(本月 9 天)
[福利站·礼券] 某券 领取成功 +10心愿值
───── ③ 金币中心(金币,不计入成长值)─────
[金币·签到] 开始:ActID=Z25hHGi ScenesID=2
[金币·签到] 签到并领取成功:30 金币
[金币·抽奖签到] 开始:ActID=Z156KEu
[金币·抽奖签到] 今日已签
───── ④ VIP 体验券(分享卡)─────
[分享卡] 只读模式(QM_SHARE_CARD 未置 on),不创建新卡
[QQ音乐] 本次新增成长值合计: 45
[QQ音乐] 金币中心为独立体系,不产成长值(明细见上方 ③ 段)
```
**最后两行是关键**:光看「成长值合计: 45」不知道金币那部分跑没跑,所以补了第二行说明。
金币段开头会打 `ActID=...`,换季排查时直接能看到脚本用的是哪个 ID。
## 通知发不出去怎么查 ## 通知发不出去怎么查
@@ -390,6 +444,8 @@ node scrip_qqmusic_checkin.js # 无 env 时优雅跳过
SH_QQMUSIC_KEY='123#Q_H_L_x' node -e "console.log(require('./scrip_qqmusic_checkin').parseAccounts())" SH_QQMUSIC_KEY='123#Q_H_L_x' node -e "console.log(require('./scrip_qqmusic_checkin').parseAccounts())"
node test_sign_run.js # 签名对拍(需先 python test_sign_vector.py 生成期望) node test_sign_run.js # 签名对拍(需先 python test_sign_vector.py 生成期望)
node test_coin.js # 金币中心 19 条断言(mock https,不联网)
node test_render.js # 通知分组 24 条断言(纯函数,不联网)
node ../test_common_notify.js # 通知实现(69 条断言,见仓库根 README) node ../test_common_notify.js # 通知实现(69 条断言,见仓库根 README)
node ../_probe_meta.js # 青龙元数据注解 node ../_probe_meta.js # 青龙元数据注解
``` ```