## 现象 BV1fcHD6cEw3:PR #225 修复后 chapters 以 `kind=segments` 成功重生(fingerprint b5bebec0a91b),随后用户触发详细笔记(generate_notes),notes 层 8ms 确定性失败:`chapter anchor fingerprint mismatch`(task_744c0ad4f5ea4a2c9539f7a00d510117)。 ## 根因(生产实证) - writer(transcription.py:1700-1715 分层缓存补种子):dialogs 不在 → 取 `cache_data["segments"]`(运行态内存片段)作 chapters 时间轴种子,指纹随该内存形态生成 - reader(notes_processor.load_notes_source_segments kind=segments → transcriber.segments.load_segments):从磁盘 transcript_funasr.json 规范化,556 段,指纹 ed62cc163258 - 本地复算 MISMATCH(两指纹均留档);writer 与 reader 对「segments 锚点源」不同构,存储指纹不可从磁盘复现 - 说话人识别任务下两形态差异最大(speaker 标注/规范化路径不同) ## 触发链 此前 chapters 对该形态必 FAILED(PR #225 修复前),notes-on-chapters 不可达,缺陷潜伏;修复使 chapters 可成功 → notes 路径首次激活即暴露。**不是排序归一化的回归**,是被它解锁的存量缺陷。 ## 影响 - chapters 重生后(分段缓存路径),该媒体详细笔记 100% 失败(确定性) - 视图目录不受影响(fingerprint mismatch 只降级 jump_ok=False,目录仍渲染) ## 修复方向 llm_ops/transcription 的 chapters 种子在 segments 分支改用与 reader 同源的 `load_segments(cache_dir)`(dialogs 分支的 in-memory 形态与 llm_processed.json 同轮写盘、天然一致,可保留);已存不一致指纹的媒体需删除 llm_chapters.json 重提一次重生成。 相关:PR #225、issue #226
Activity
Merge pull request #228 from zlxlabs/card/VideoTranscriptAPI-20261015-01
zj1123581321 commentedon Oct 10, 2026
根因修正(2026-10-10 晚,PR #228 部署后复测)
原帖「cache_data[segments] vs load_segments」的归因不完整。PR #228(种子改 load_segments)部署后重生成 chapters,notes 仍失败,拿到生产双侧真实读数:
source.kind="segments"标签记录的是队列种子来源,不是 coordinator 最终锚点(structured 覆盖后未改写标签),notes reader 按这个标签选加载器 → 永远错配主脑前两版归因(内存形态 vs load_segments)均不完整,本条为第三次修正;两侧指纹与段数均已容器内实测留档。
真根因
notes reader 按 source.kind 选加载器,但该 kind 不是 chapters 实际锚点的真相;chapters 实际锚点由 coordinator 的 structured 优先逻辑决定。writer 的「锚点真相」没有随产物传递到 reader。
修复方向
让 notes reader 拿到的锚点源与 chapters 实际使用的锚点源同源:要么 source.kind 记录 coordinator 最终输入并让 reader 按 kind 精确复现(dialogs kind → 读 llm_processed.json dialogs),要么 notes 直接复用 chapters 产物内嵌的锚点数据。具体以代码核实为准。
精简锚点源回归测试:合并生产同构场景的重复装配(#227)
Merge pull request #229 from zlxlabs/card/VideoTranscriptAPI-20261015-06
Merge pull request #231 from zlxlabs/card/VideoTranscriptAPI-20261015-06
zj1123581321 commentedon Oct 12, 2026
核实完成,关闭已修复问题
当前主干基线
c7dc7fcbb1727057ecf2c4d8c3f38e34d3136f72已包含 PR #228/#229/#231。2026-10-12 主脑在该基线独立工作树用已有解释器、显式 PYTHONPATH 指向该树 src,复跑python -m pytest tests/unit/test_notes_anchor_source.py -q:7条通过,退出码0。回归覆盖缓存dialogs、segments与声明来源不匹配时明确失败。历史生产证据(不是本次生产复测):2026-10-11交接记录kind=cached_dialogs、518段、reader指纹MATCH、notes_status=generated、笔记非空。
本次没有重新部署或修改产品代码。按已合并修复+当前主干回归+历史生产闭环关闭,不重复派修复卡。
chapters segments 种子改用 load_segments 同源加载(修 notes 指纹错配,#227)
Merge pull request #228 from zlxlabs/card/VideoTranscriptAPI-20261015-01
章节锚点源同源化:source.kind 记录实际锚定来源,notes 按标签精确复现(#227)
精简锚点源回归测试:合并生产同构场景的重复装配(#227)
Merge pull request #229 from zlxlabs/card/VideoTranscriptAPI-20261015-06
chapters 种子经 llm_task 交接时透传真实 kind(修分支 1 硬编码标签,#227)
Merge pull request #231 from zlxlabs/card/VideoTranscriptAPI-20261015-06