docs: document UP ranking defaults and fan history import

This commit is contained in:
kairee committed 2026-11-01 00:06:59 +08:00
1 parent ff101803cd
commit 6a053bdfe8
3 files changed
+39 -4

No files matched your search

+11 -2
View File
@@ -116,6 +116,10 @@ uv run python app.py
# 生成 7 天预览库并启动预览
uv run python tools/seed_preview_db.py --days 7
uv run python app.py serve --preview --config data/preview/config.json
# 从小满虫之家回填粉丝历史(先 dry-run,默认跳过已有成功记录)
uv run python tools/import_fans_history.py --days 90 --dry-run
uv run python tools/import_fans_history.py --days 90
```
不建议直接激活 `.venv`;优先使用 `uv run ...`,这样命令总是运行在项目锁定的解释器和环境中。
@@ -232,7 +236,8 @@ PRAGMA synchronous = NORMAL;
│ └── static/ # 原生 JS/CSS、ECharts、预览页面
│
├── tools/
│ └── seed_preview_db.py # 复制真实库并回填 7 天预览数据
│ ├── seed_preview_db.py # 复制真实库并回填 7 天预览数据
│ └── import_fans_history.py # 从小满虫之家回填 90 天粉丝历史
│
├── tests/
└── data/ # 本地运行期数据,默认不提交
@@ -434,6 +439,7 @@ P3 实现说明:
- 其他错误最多重试 3 次,仍失败则写入 `ok=0` 与错误信息,不写伪造的零值;
- 每条视频请求之间随机等待 1.0~1.6 秒;
- 对 `track_fans` 中的每个 mid 请求一次 `relation/stat` 并写入 `up_stat`;
- 可用 `tools/import_fans_history.py` 从小满虫之家公开 `data.js` 回填最近 90 天粉丝历史;只写 `up_stat`,默认跳过已有成功记录;
- 任务结束向 Telegram 发送成功数、失败数、移除数和总耗时摘要。
服务启动后若当天快照尚未成功完成,应补跑当日任务;已成功的 `(stat_date, aid)` 不重复请求。
@@ -604,7 +610,8 @@ uv run python tests/test_moves.py
- Telegram 用户与 chat ID 授权校验;
- 看板查询的筛选、分页、增长冷启动与状态过滤;
- 只读路由、鉴权、静态资源路径穿越和预览标记校验;
- 预览库生成的确定性、单调性、异常样本与真实库隔离。
- 预览库生成的确定性、单调性、异常样本与真实库隔离;
- 粉丝历史 data.js 解析、每日净增反推、缺口停止与幂等回填。
只有当标准库测试维护成本明显过高时,才考虑通过 `uv add --dev pytest` 引入 pytest。
@@ -685,7 +692,9 @@ uv run python tests/test_moves.py
- Web 业务接口只读,写操作继续由 Telegram/CLI/数据库承担;
- 首页默认“最新动态”,增长榜在不足 2 天时显示空态;
- 视频趋势按单指标切换,缺失日断开、失败快照按缺失处理;
- UP 榜默认平均播放,总播放/视频数排到末尾;单视频 UP 不显示单视频对比图;
- 实现 `tools/seed_preview_db.py`:复制真实库并回填 7 天合成快照,支持 `--profile live|first-day`;
- 实现 `tools/import_fans_history.py`:从小满虫之家 `data.js` 回填 90 天粉丝历史,支持 dry-run、缺口停止和幂等写入;
- `serve --preview` 校验 `preview:seeded=1` 标记,预览页面显示只读横幅;
- 自动化测试见 `tests/test_analytics.py`、`test_preview_seed.py`、`test_web_queries.py`、`test_web_server.py`。