Skip to content

fix(subscribeassistantenhanced): rebuild added episodes outside full-season mode - #363

Merged
InfinityPacer merged 1 commit into
mainfrom
codex/fix/sae-auto-correction-mode
Aug 1, 2026
Merged

fix(subscribeassistantenhanced): rebuild added episodes outside full-season mode#363
InfinityPacer merged 1 commit into
mainfrom
codex/fix/sae-auto-correction-mode

Conversation

@InfinityPacer

Copy link
Copy Markdown
Owner

问题与背景

订阅完成后若 TMDB 增加总集数,自动纠错会根据完成快照重建新增集订阅。现有全集洗版订阅的 total_episode 已同步到最新总集数时,旧逻辑会把它误判为已经接管新增集,但全集洗版只等待完整季包,并不会按集追踪新增范围。

原因分析

纠错流程只比较现有订阅的目标总集数,没有区分全集洗版和普通/分集洗版语义。全集洗版因此可能短路重建并消费快照,导致新增集没有普通或分集洗版订阅继续跟踪。

解决方案

  • 匹配媒体、季和剧集组后,全集洗版始终先移除再重建,不能通过总集数覆盖检查短路。
  • 重建结果只允许普通订阅或分集洗版;当前默认规则为全集洗版时,从完成快照恢复分集洗版,全集或旧快照则安全回退普通订阅。
  • SubscribeChain.add(..., exist_ok=True) 返回 ID 后回读真实订阅,校验媒体身份、季、剧集组、模式和完整新增集范围,校验失败保留快照重试。
  • TMDB 查询、删除和重建异常按单条快照隔离,失败不会消费快照或阻断其他快照。
  • 将模式解析、payload 构造、创建和结果校验迁入 postcheck/rebuilder.py;插件入口只负责组件装配。

影响与风险

已有快照继续使用原有 best_versionbest_version_full 字段,不新增数据结构或迁移要求。缺少模式字段的旧快照在全集默认规则下回退普通订阅。

插件在旧主程序上仍会回读并校验真实订阅;若多剧集组去重返回错误订阅,纠错会保留快照而不会误报成功。建议先合并或同步使用关联的主程序剧集组身份修复。

验证

  • 插件全量:v1/CI 33 passed,v2 2207 passed
  • SubscribeAssistantEnhanced:1342 passed
  • 覆盖率:line 93.47%,method 98.27%,changed-line 100% (89/89)
  • 插件版本门禁、JSON、compile、git diff --check:通过

关联

@InfinityPacer
InfinityPacer enabled auto-merge (squash) August 1, 2026 09:41
@InfinityPacer
InfinityPacer merged commit 8cee31d into main Aug 1, 2026
3 checks passed
@InfinityPacer
InfinityPacer deleted the codex/fix/sae-auto-correction-mode branch August 1, 2026 09:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant