feat(p3): add discovery, telegram notifications, and one-click favorites
Implement WBI video search with legacy fallback, classification scoring, candidate pool, permanent seen-aid dedupe, blacklist filtering, and batched Telegram notifications. Add write client for fav deal/sort, target-folder selection, insertion position calculation, read-back verification, fav_action locking, retry on failure, ignore and blacklist actions. Wire discovery, candidate cleanup, Telegram long polling, and new discover/candidates CLI commands into the scheduler. Add migration v3 for candidate duration and index stats.
This commit is contained in:
1 parent
6a21b5d905
commit
d971e718e9
31 files changed
+2886
-55
No files matched your search
+15
-19
@@ -1,8 +1,8 @@
|
||||
# 咻咻满 Reaction 视频数据看板 —— 可行性分析与技术路线
|
||||
|
||||
> 状态:**设计定稿;P0(数据底座与收藏夹同步)、P1(每日快照与粉丝追踪)已实施**
|
||||
> 最后更新:2026-10-31(第 6 轮:P1 落地)
|
||||
> 全部探测均为只读(GET),未调用 `fav/resource/deal`、`fav/resource/sort`
|
||||
> 状态:**设计定稿;P0(数据底座与收藏夹同步)、P1(每日快照与粉丝追踪)、P3(Telegram 与一键加入)已实施;P2 待开始**
|
||||
> 最后更新:2026-10-31(第 7 轮:P3 落地)
|
||||
> B 站探测均为只读(GET),尚未调用 `fav/resource/deal`、`fav/resource/sort`
|
||||
|
||||
---
|
||||
|
||||
@@ -788,11 +788,15 @@ storage:SQLite WAL,单写线程
|
||||
| 27 | `x/web-interface/nav` 登录态 | `code=0`、`isLogin=true`、mid=28802351 |
|
||||
| 28 | **P1 真实全量快照** | 795 条全部 `ok=1`、0 失败、0 移除;耗时 1124s;粉丝 `follower=2767270`;日备份 `app-20261031.db` 含 795 条快照 |
|
||||
| 29 | **空收藏夹 `ids` 契约** | `4413147139` 返回 `{"code":0,"data":[]}`,`data` 键存在且为数组;缺失/`null` 按协议异常处理 |
|
||||
| 30 | **迁移 v2 与增量同步** | 真实库升级到 schema 2,自动生成 `app-pre-v1-*.db`;同步 167+664 条无新增/移除,主归属无矛盾 |
|
||||
| 30 | **迁移 v2/v3 与增量同步** | 真实库升级到 schema 3,自动生成 `app-pre-v1-*` / `app-pre-v2-*`;同步 167+664 条无新增/移除,主归属无矛盾 |
|
||||
| 31 | **P3 真实发现** | 4 次 WBI 搜索、168 条结果、161 已入库、6 条超时间窗、1 条候选(score=6) |
|
||||
| 32 | **P3 Telegram 通知** | 真实 Bot 发送成功;发现重复结果后已修复按 aid 去重,离线测试覆盖 |
|
||||
| 33 | **P3 同步联动** | 候选被人工加入收藏夹后,同步识别 1 条新增并当天补采快照;候选行自动删除 |
|
||||
|
||||
**未验证(需授权或外部配合)**:
|
||||
|
||||
- `fav/resource/deal` 实际加入 + `sort` 定位(会写收藏夹);
|
||||
- `fav/resource/deal` 实际加入 + `sort` 定位(会写收藏夹;需用户点击 Telegram 按钮或授权测试视频);
|
||||
- Telegram 按钮真实回调(长轮询代码与授权逻辑已离线测试);
|
||||
- 手机扫码 `auth` 完整链路;
|
||||
- 各通知渠道的按钮/链接实际表现;
|
||||
- 长期(>72h)每小时扫描的风控表现;
|
||||
@@ -802,19 +806,11 @@ storage:SQLite WAL,单写线程
|
||||
|
||||
## 14. 下一步
|
||||
|
||||
所有决策点已确认(§12 无遗留)。下一步是**方案定稿**,产出:
|
||||
P0、P1、P3 已实施。下一步是 **P2 本地看板**:
|
||||
|
||||
1. 最终 DDL + 迁移脚本设计(含 `up_stat`、`up_blacklist`);
|
||||
2. 四个任务的调度/限速/重试/幂等伪代码(发现 / 收藏夹同步 / 快照 / 粉丝);
|
||||
3. 分类规则 v1(含时长权重、UP 黑名单)+ 用 831 条收藏回测方案;
|
||||
4. 热度算法参数表与榜单口径;
|
||||
5. 前端线框 + API 契约(含粉丝页、候选池页);
|
||||
6. 一键加入时序图(Telegram callback 与 签名链接 两条入口);
|
||||
7. 分阶段实施计划:
|
||||
- P0 收藏夹同步 + 导入 + 黑名单种子(先把库建起来)
|
||||
- P1 每日快照 + 粉丝追踪(开始积累数据)
|
||||
- P2 看板(榜单/详情/粉丝页)
|
||||
- P3 Telegram 通知 + 一键加入
|
||||
- P4 容器化 + 反代 + 备份
|
||||
1. 总览、榜单、视频/UP 详情、粉丝曲线、候选池和系统状态页面;
|
||||
2. 原生前端 + ECharts,本机默认绑定 `127.0.0.1:8080`;
|
||||
3. 复用现有 SQLite 查询与状态机,不在前端复制业务判断;
|
||||
4. P3 的真实 `deal` / `sort` 待用户点击 Telegram 按钮或授权测试视频后补充验证记录。
|
||||
|
||||
> P0 已实施;P1 起继续按上述阶段推进。
|
||||
> P4(容器化 + 反代)继续保持可选。
|
||||
Reference in new issue
Block a user