# 2026-09-18 工作日志 ### 获取最新热点数据(四榜全量,8 次红狐调用) **诉求**:「获取最新热点数据」→ 即刷新工作台榜单缓存。 **先做的 0 成本盘点**(幂等铁律:先 ls 命中免 API): | 榜 | 本地最新期 | 应有最新期 | 缺口 | |---|---|---|---| | 账号周榜 | 08-31(5 赛道齐) | **09-07** | 5 赛道 × 1 期 | | 账号日榜 | 09-08 | **09-16** | 1 期 | | 视频热榜 | 08-31 | **09-07** | 1 期 | | 点赞榜 | 08-31 | **09-07** | 1 期 | 最后落盘时间 = **08-31**(7.8 天前 / 11185 min),共 82 个文件;`/api/dsh/ranking-update` 的 `cooldownMin=30`,不在冷却窗口、无运行中任务。 **★付费调用前置门禁(技能硬规矩,勿跳过)**:`mcn-data-insight/scripts/fetch_week_ranks.py` 头部明写「**必须先向用户确认调用次数与范围,禁止未经确认直接执行付费调用(教训固化)**」→ 用 AskUserQuestion 把四榜缺口 + 三种范围 + 调用次数摊开确认,用户选「四榜全量 · 8 次」。 **执行(8 次调用,全部成功)**: | 步骤 | 命令 | 调用 | 结果 | |---|---|---|---| | ① 视频热榜+点赞榜 | `mcn-data-insight/scripts/fetch_week_ranks.py --board both` | 2 | 各 50 条 → `视频热榜/`、`点赞榜/抖音周榜_{视频热榜,点赞榜}_2026-09-07.json` | | ② 账号日榜 | `douyin-top-account/scripts/fetch_rank.py --period day` | 1 | 50 条 → `账号日榜/抖音账号日榜_2026-09-16.json` | | ③ 账号周榜 5 赛道 | 同脚本 `--period week --category {生活vlog,小剧场,亲子,美食,旅行}` | 5 | 各 50 条 → `账号周榜/抖音周榜_{赛道}_2026-09-07.json` | **★关键实现细节(踩过的坑)**:`fetch_rank.py` **只写 `--output` 指定的路径,不会自动按规范命名**;而文件名里的日期必须取 **API 返回的 `dateStart`**(不能猜 20:00 规则算出来的期号)。→ 写了 runner:**每榜只调 1 次 API**,结果先写临时文件 → 读 `dateStart` → `shutil.move` 到规范文件名。**若先调一次取日期再调一次写文件,调用次数会翻倍浪费额度**。runner 用完即删(`tools/_rank_fetch_runner.py`)。 **验证(工作台接口)**:`files 82→90`、`ageMin=0`;`week`→2026-09-07(09-07~09-13, 250 条/5 赛道)、`day`→2026-09-16(11 条)、`hot`→2026-09-07(15 条)、`likes`→2026-09-07(22 条)。⚠️ 接口 total 小于文件 50 条是**正常**:`dsh-data.js` 的 `RANK_KEEP` 白名单(生活记录/生活vlog/小剧场/亲子/美食/旅行)会过滤掉其余赛道。 **数据结论(白名单视角)**:**小剧场全面霸榜**——视频热榜 TOP10 里 4 条、点赞榜 TOP10 里 6 条都是小剧场;`周小闹` 是账号周榜小剧场第 1(95.4)且日榜第 1(93.7),视频热榜 3 条进 TOP14("饭店的暑假工"系列)。旅行赛道 `张舒克和黄贝塔` 双榜靠前。日榜白名单内仅 11 条(且 rank 分散到 32 位,说明全品类排名里其他赛道占位多)。 **字段差异备忘**:点赞榜/热榜条目用 `user_nickname` + `aweme_desc` + `add_digg_count`(新增点赞);账号榜用 `accountName` + `comprehensiveScore`。工作台表格渲染时取值字段不同。 --- ### 视频热榜 / 点赞榜 增加「关注」(与账号榜一致) **诉求**:「视频热榜 和 点赞榜 也增加关注功能,可关注视频对应账号,功能和账号榜一致」。 **先摸清语义(关键)**:账号榜「功能」列 = `inDb ? 查看(#/account/{dbId}) : 关注`,其中**「关注」不是 ⭐ 收藏开关**,而是 `confirmSaveAccount()` → 提交「分析账号」任务把该账号**加进账号列表**。⭐ 收藏只在账号列表页维护。视频热榜/点赞榜原本**没有功能列**,且 `dsh-data.js` 里写着「作品榜条目不查账号表」→ `inDb` 恒 false。 **改动(4 文件)**: | 文件 | 改动 | |---|---| | `dsh-data.js` | `getRanking()` 删掉作品榜不查账号表的硬短路 → 四榜统一:有 `profileUrl` 时按 `sec_uid`、否则按**账号名**(`accountName \|\| user_nickname`)关联 `hot_accounts`,限 `del_flag=0`、同名单取已关注优先 → 输出 `inDb/dbId` | | `data-pages.js` | 新增共用 `videoActTd()`;hot/likes 两榜 `span` 9→10 并补 `