mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-11-04 06:15:14 +08:00
feat(subscription): add governance logging summaries
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
> 历史方案:本文件记录 2026-09-01 的上游接管与验证证据,不再作为当前实施合同。
|
||||
> 其中 `CandidateBatch`、候选恢复账本、订阅下载提交持久账本和 `reconcile_required`
|
||||
> 已由 2026-09-03 的简化方案废止;当前行为以代码、迁移和回归测试为准。
|
||||
> 当前治理链路的运行日志验收以第 10 节为准。
|
||||
>
|
||||
> 状态:`completed(2026-09-01)`
|
||||
> 当前叶:`none(全部叶已完成或按条件停止)`
|
||||
@@ -417,7 +418,7 @@ RSS/Spider 保持现有逐站点串行刷新,不通过并发化换取几秒收
|
||||
5. 24 小时兜底搜索无结果、部分结果、站点超时和 `429/403`;
|
||||
6. 日常 Match 与兜底搜索重叠;
|
||||
7. 手工刷新或手工搜索与后台任务重叠;
|
||||
8. 下载器已接受但本地写回失败;
|
||||
8. 下载器拒绝、超时或本地写回失败,并在下轮按普通订阅流程重新判断;
|
||||
9. 停机、取消和进程重启后的恢复;
|
||||
10. 单媒体服务器可用、慢响应和不可用。
|
||||
|
||||
@@ -432,9 +433,9 @@ RSS/Spider 保持现有逐站点串行刷新,不通过并发化换取几秒收
|
||||
| 本地计算 | 候选预处理、每订阅匹配、完成对账、提交耗时 |
|
||||
| TMDB | 请求数、缓存/租约命中、错误率、p50/p95 |
|
||||
| 媒体服务器 | 请求数、p50/p95、超时和合并命中 |
|
||||
| PT 站点 | 按站点请求数、峰值在途、最小间隔、429/403/超时、重试数 |
|
||||
| PT 站点 | 按站点请求数、峰值在途、最小间隔、429/403/超时、错误冷却跳过数 |
|
||||
| 正确性 | 命中集合、下载集合、缺集集合、完成/删除集合与基线一致 |
|
||||
| 幂等 | 重复提交数、下载器不确定终态、恢复后重复任务数 |
|
||||
| 并发 | 同订阅跨 Search/Match 准入冲突数、重复下载数、准入与站点租约释放失败数 |
|
||||
| 生命周期 | 取消延迟、event-loop lag、遗留 task/worker/锁、shutdown 上限 |
|
||||
|
||||
### 7.3 门禁
|
||||
@@ -475,8 +476,9 @@ RSS/Spider 保持现有逐站点串行刷新,不通过并发化换取几秒收
|
||||
- 现有测试只证明了参数或局部调用,没有证明 TMDB 请求减少、订阅完成正确、站点压力不变和下载集合一致;
|
||||
- 旧 checkpoint `c2d72280e` 与 10/100/500 数据只覆盖兜底搜索等待,不再是 A1B 的交付候选。
|
||||
|
||||
候选回写语义、完整缓存与本轮 delta、无损索引和真实性测试仍需由后续实现证明。治理文档现位于
|
||||
`docs/refactor/` 并属于后端 Git 仓;文档状态与代码提交证据仍分别记录,不能用路线图状态替代行为验收。
|
||||
本节所述候选回写、完整缓存与本轮 delta 属于已废止的历史实施路径,不再作为后续实现或日志验收指标。
|
||||
治理文档现位于 `docs/refactor/` 并属于后端 Git 仓;文档状态与代码提交证据仍分别记录,不能用路线图
|
||||
状态替代行为验收。
|
||||
|
||||
## 9. 停止条件
|
||||
|
||||
@@ -488,3 +490,36 @@ RSS/Spider 保持现有逐站点串行刷新,不通过并发化换取几秒收
|
||||
4. 用户可以看到真实业务状态和失败终态;
|
||||
5. 所有保留的并发和缓存都有可重放验证、版本级回滚路径和明确 owner;
|
||||
6. 后续只剩最低优先级的重复订阅产品规则或无生产证据的推测项。
|
||||
|
||||
## 10. 当前运行日志验收
|
||||
|
||||
当前日志用于上线后确认新治理链路是否健康,不承担旧新链路 A/B 对照,也不引入独立日志聚合器。日志内容遵循
|
||||
现有主日志输出方式,以稳定 `key=value` 字段提供机器可检索的轮次摘要。
|
||||
|
||||
### 10.1 轮次摘要
|
||||
|
||||
- Search 与 Match 每次实际执行各输出一条 `订阅治理轮次开始` 和一条 `订阅治理轮次结束` 的 `INFO`;
|
||||
- 两类摘要均包含 `operation`、`run_id`、订阅数和耗时;Search 额外包含 `batch_id` 与来源,Match 包含输入
|
||||
站点数和完整候选数;
|
||||
- 结束摘要使用 `task_completed`、`task_skipped`、`task_failed`、`task_cancelled` 等任务终态字段;其中
|
||||
`task_completed` 只表示本次处理任务正常收口,不表示订阅已经下载完成或已经删除;
|
||||
- `admission_conflicts`、`cancelled`、`ttl_timeouts` 分开计数,避免把准入跳过、用户取消和协作 TTL 超时混为
|
||||
同一种“未执行”;
|
||||
- `release_failures` 汇总订阅准入与站点租约收口失败;任何单次释放失败同时立即输出 `ERROR`,不能只留在轮次
|
||||
计数里。
|
||||
|
||||
### 10.2 站点与候选摘要
|
||||
|
||||
- Search 结束摘要聚合 `sites`、`site_requests`、`site_failures`、`site_cooldown_skips`、`candidates` 和
|
||||
`cooldown_seconds`;正常成功不产生额外冷却,错误冷却和已有在途租约导致的未发请求统一计入跳过数;
|
||||
- Match 的 `candidates` 表示本轮完整候选快照数量,不记录候选标题、下载地址或逐项匹配明细;
|
||||
- 逐订阅开始、正常无结果、准入冲突,逐候选匹配/过滤,以及逐页站点进度降为 `DEBUG`;真实异常、媒体识别
|
||||
失败和下载业务结果仍保留原有错误或业务日志级别。
|
||||
|
||||
### 10.3 验证门禁
|
||||
|
||||
- 日志合同测试必须覆盖 Search/Match 开始与结束摘要、任务完成语义、准入冲突、取消、TTL、站点请求、错误冷却
|
||||
和两类释放失败;
|
||||
- `100/10/1000` 与 `200/20/1200` 两档受控 Match 快照中,Match 模块的 `INFO` 数量固定为两条轮次摘要,
|
||||
不得随订阅数、站点数或候选乘积增长;
|
||||
- 固定快照只验证日志量、字段和本地治理合同,不把它解释为真实 PT/TMDB/媒体服务器的长期网络 SLO。
|
||||
|
||||
Reference in New Issue
Block a user