0
Fork 0
mirror of https://github.com/Silent1566/webhtv.git synced 2026-10-13 18:27:10 +00:00

merge: 合并 origin/beta 最新代码(PR#439 dev4 对话框取色修复)并复评 dev2 已提交的季集交接改动

合并:git merge --no-commit --no-ff origin/beta(b0b7f1d78b5e394c0c9635a8b9c71b4417b06e25,
Merge pull request #439 from Silent1566/dev4),0 冲突;MERGE_HEAD 即 beta tip。
纳入 beta 侧 4 个提交(含 dev4 的 fix(theme): TV 对话框面板与前景取自同一张色表 及两份文档)。

零复活 / 零丢失(三层证据):
1. 合并树 ≡ beta tip + dev2 自身 4 路径:git diff --name-only origin/beta 仅 4 个 dev2 文件。
2. 零丢失(blob 级):beta tip 5047 个文件逐个比对合并结果树,缺失 0、逐字节一致 5043,
   差异仅 dev2 自己的 4 个路径;且 beta 相对 merge-base 从未改过这 4 个路径。
3. 零复活(严格判据,按「文件+行」):beta 历史上 27 个单亲回退提交共删除 4472 条
   (文件,行) 记录,与 dev2 自身新增的 282 条记录求交集 = 0。

复评(2 轮)发现并修复 3 项真实问题,全部落在 dev2 已提交的季集交接改动上:
1. F1(阻塞)单季兜底会覆盖用户显式「保持原始剧集列表」(MANUAL_FLAT):解析器只在
   MANUAL_FLAT 时返回 Status.FLAT,旧实现对非 RESOLVED 一律不绑定;兜底只要 TMDB 恰有一个
   正片季就绑定,播放页会挂 TMDB 集标题并经 TmdbEpisodeSorter.sort 原地重排选集,
   还与详情页(该模式 availableSeasonNumbers 返回空、不画卡片)表现相反。
2. F2(重要)单季兜底会覆盖解析器「已看到相反证据」的 AMBIGUOUS:TMDB 只有第 1 季而源站剧名/
   集名明确指向第 2 季时,解析器故意返回 title_season_missing_from_tmdb /
   explicit_season_missing_from_tmdb / title_and_source_season_conflict 拒绝绑定,
   兜底会无视证据把第 1 季标题静默挂到第二季源列表。
   F1+F2 同一处修复:兜底前加来源白名单,只对 Source.REQUEST(请求季不在 TMDB)与
   Source.NONE(源站路径显式关闭启发式)生效,其余来源一律不兜底。
3. F3(重要)单季兜底会把 MULTI_SLICE 的分段结论降级成单季路径:切片路径以 null 作为季号
   一致性校验的期望值,兜底返回非 null 会让调度侧改走单季绑定、执行侧的切片校验又必然否决,
   整个分段(含特别篇)一集都绑不上。修复:兜底前先判 MULTI_SLICE。
并同步修复 seedSeasonEpisodes 的注释与实现不符(「不会发起网络请求」在内存未命中时不成立)。

复评第 2 轮(修复后复审):MULTI_SLICE 守卫与来源白名单按 TmdbSeasonResolver.resolve 的
全部 source/reason 逐条推演,确认既不过宽(不再覆盖 FLAT 与带相反证据的 AMBIGUOUS)也不过窄
(REQUEST + requested_season_missing_from_tmdb 与 NONE + heuristic_guessing_disabled 两条
本次要救的路径仍能兜底);代次校验自洽(MULTI_SLICE 两侧都期望 null,RESOLVED 两侧都取
selectedSeason);无新增阻塞问题。

验证:双 flavor 编译 + 双 flavor AndroidTest 编译 + 全量 JVM 套件。

Verification: 双 flavor Java 编译 + 双 flavor AndroidTest 编译 BUILD SUCCESSFUL;双 flavor 全量 JVM 套件:leanback 4214 tests / 8 failures / 3 skipped、mobile 5026 / 7 / 3;相对合并前(leanback 4211/8/3、mobile 5026/7/3)增量仅 leanback +3 例 = beta 带入的 TvDialogPaletteModeTest 3 例且全绿,失败集合与既有环境基线(docs/C58-beta-merge-review-dev2-20261011.md:leanback 7 类 8 例、mobile 6 类 7 例;根因 core.autocrlf=true 的 CRLF 检出使含裸 \n 的守卫断言失配,以及 Windows renameTo 语义)同类同数、零新增;TmdbDetailCacheTest 14 例在两 flavor 全绿;合并零复活严格判据(文件+行)交集 0、零丢失 blob 级比对缺失 0 且逐字节一致 5043/5047

Task-Guard: C64-beta-merge-review-dev2-20261012
This commit is contained in:
Silent1566 2026-10-12 20:40:16 +08:00
commit 8b5f8e9026
7 changed files with 590 additions and 29 deletions