0
Fork 0
mirror of https://github.com/Silent1566/webhtv.git synced 2026-10-16 10:32:44 +00:00
Commit graph

4 commits

Author SHA1 Message Date
Silent1566
0b7ebfd087 merge: 合并 origin/beta 最新代码(PR#448/#449/#450)并复评修正 py 初始化失败静默与缓存归因文档缺陷
把 origin/beta tip 12d7d559e5 合入 dev2,0 冲突,合并内容相对 beta 中性
(净差异恰为 dev2 自身 6 个路径)。回退类提交零复活:文件级(66 个 revert
删除路径与合并树减 beta 树交集 = 0)与行级(7329 条 revert 删除实质行与 407 条
净新增实质行交集 = 0)双口径均为 0,且检测器注入探针自检 PASS;评估索引行 ID
集合 beta 86 = 合并后 86,零丢失零多余。

复评本轮 4 个已提交未推送的提交与合并交互,3 轮评审发现 2 项必修:

- PyLoader 初始化失败在默认设置下变成完全静默(P1,可观测性回归):
  前置提交把 catch 里的 e.printStackTrace() 换成 SpiderDebug.log,而后者每条
  重载首行都是 DebugLogStore.acceptsTag(tag),其 enabled 默认 false(只有用户
  手动打开调试日志才为真)。默认设置下 py 站源初始化失败既不进诊断日志也
  不再进 Logcat,而这里正是站点全空却没有任何线索的唯一解释点。恢复
  printStackTrace 与两条 SpiderDebug.log 并存,与兄弟 JsLoader 口径一致。
- docs/integration/spider.md 第 4 层缓存归因错误(P2):原文称 load_module()
  命中已导入模块时返回 sys.modules 旧模块对象;实测(CPython 3.10 与 3.14 双
  版本复现)load_module() 每次都会重新执行源码,真正复用旧字节码的是
  __pycache__ 校验,判据只有源文件的 mtime 与 size。按该双条件精确改写,并
  补一行同大小加同 mtime 秒的实测结论。

新增 app/src/test/java/com/fongmi/android/tv/api/loader/PyLoaderDiagnosticsWiringTest.java
作为回归锁,并在断言前剥离注释行,避免把 e.printStackTrace() 注释掉也能通过
而使守卫退化成恒真检查。

Verification: 7 组变异探针全部按预期转红并干净还原(git hash-object 与修复后
版本逐字节相同:PyLoader 11f1404045、SiteViewModel 976a508d5c、JsLoader
97d5761b09);定向单测 SiteViewModelSubmitAfterClearTest 4/4、
PyLoaderDiagnosticsWiringTest 3/3、JarLoaderTest 7/7、LoaderClearQueueTest 1/1,
leanback PlayerControlFocusHelperSeekReturnTest 13/13;双 flavor 与 chaquo Java
编译 BUILD SUCCESSFUL;chaquo/src/test/python 契约测试 36/36 在 CPython 3.10
与 3.14 均 OK;git diff --check 通过;UI token 对比度 38 对 0 失败;gradlew
clean BUILD SUCCESSFUL。全量单测剩余 3 项失败为既有 Windows CRLF 跨行字面量
缺陷(ReaderPlaybackRoutingSourceTest 两项、TmdbSourceOnlyInteractionTest 一项),
相关测试类与被断言的生产文件在 beta、开工前 HEAD、最终树三处 blob 逐一相同,
既不在本任务净差异内也不在 beta 增量内,按范围记录不修。

Task-Guard: C73-beta-merge-review-dev2-20261016

Verification: merge origin/beta 12d7d559e5 into dev2 with 0 conflicts, zero-content-neutral merge (tree diff vs beta = exactly dev2's own 6 paths); 5-layer zero-resurrection evidence (beta 5070 paths missing 0, 3 additions all task-owned test files, 66 revert-deleted files vs merge-minus-beta = 0, 7329 revert-deleted substantive lines vs 407 net-added = 0, assessment ledger row-ID set beta 86 = merged 86) with falsifiable detector self-check PASS; 3 review rounds found 2 must-fix (P1 PyLoader lost its only always-on failure channel because SpiderDebug.log is gated on DebugLogStore.acceptsTag which defaults false, restoring e.printStackTrace alongside the diagnostic-store call; P2 docs/integration/spider.md mis-attributed py staleness to sys.modules when load_module re-executes every time and the real reuse is the __pycache__ mtime+size check), added PyLoaderDiagnosticsWiringTest regression lock; 7 mutation probes all turned red as designed and every probe restored byte-identical via git hash-object (PyLoader 11f1404045, SiteViewModel 976a508d5c, JsLoader 97d5761b09); targeted tests 4/4 + 3/3 + 7/7 + 1/1 + leanback 13/13 pass, dual-flavor and chaquo Java compile BUILD SUCCESSFUL, python contract tests 36/36 on CPython 3.10 and 3.14, git diff --check clean, UI token contrast 38 pairs 0 failures, gradlew clean BUILD SUCCESSFUL; the 3 remaining full-suite failures are pre-existing Windows-CRLF assertion bugs in files byte-identical across beta/pre-task-HEAD/final-tree and are recorded as out of scope

Task-Guard: C73-beta-merge-review-dev2-20261016
2026-10-16 13:23:51 +08:00
Silent1566
96771c8a98 docs(spider): 补充 Python 站源加载与缓存排查说明
排查「改了 py 却不生效」缺少可查的文档依据,补上加载链路与实际生效条件。

- 说明 getDependence 缺失按无依赖处理,不继承 base.spider.Spider 的
  单文件 py 源可以不实现
- 新增「Python 加载与缓存」小节:file:// 改写、api md5 缓存名、
  Spider 实例缓存、load_module 的 sys.modules 旧模块,共四层
- 记录实测结论:只替换磁盘 py 不生效,需触发配置重载或重启 App
- Source 依据补充 Loader.java / app.py / UrlUtil.java / Site.java

Verification: 文档核对:新增 Python 加载与缓存四层链路说明,并逐项对照源码(Site.objectFrom→UrlUtil.convert 的 file:// 改写、Loader.scriptName 的 api md5 缓存名、PyLoader.computeIfAbsent 实例缓存、app.spider 的 load_module/sys.modules)与真机实测(5557,同版本包同站点:只替换磁盘 py 不生效;触发真实配置重载 config/use→VodConfig.clear→BaseLoader.clear→PyLoader.clear 后生效 MK_B→MK_C;重启 App 生效);新增的 python-spider init failed 可诊断性说明与 317fa9021d 的实现一致;文档末尾 Source 依据新增的 4 个路径均已逐一确认存在于仓库;行尾保持 CRLF(195 CRLF / 0 bare LF);markdownlint 通过

Task-Guard: PY-SPIDER-CACHE-DOC-20261016
2026-10-16 10:50:51 +08:00
Silent1566
e80027303f docs: 修正开发者接入文档与当前源码不一致的描述
Verification: PASS: 13 integration docs links/source paths; 5 factual corrections cross-checked against Parse.java/Action.java/Local.java/SiteApi.java/JarLoader.java; git diff --check origin/beta..HEAD

Task-Guard: integration-docs-review-20260921
2026-09-21 14:10:39 +08:00
Silent1566
1d425537f5 docs: expand developer integration guides
Verification: 12 module integration docs expanded; total 1164 lines; indexes and relative links validated; no empty docs; root README entry present

Task-Guard: integration-docs-20260921
2026-09-21 14:01:20 +08:00