提议(Proposed,2026-08-18)
2026-08-18
ADR-005 决定融合结果落库:session_segments 表在停止时被 replace_segments(DELETE + INSERT 单事务)破坏性覆盖——原始字幕段/ASR 段被融合段替换。该设计带来三个连锁问题:
- 不可重算:用户调整 hotwords 或融合参数(gap 阈值、编辑距离阈值)后无法重新融合——原始 ASR 句已被裁剪/切分,无法还原
- 不可审计:可信度时间线(头脑风暴 O1)需要每段原始来源 + 置信度,但融合段落库时
confidence: None,且重叠校对丢弃的 ASR 部分直接消失 - 不可精修:离线精修(头脑风暴 O4:两遍解码出更好的 ASR 段)后无法重新融合——原始段已毁
另有性能问题(由 REQ-031 短期解决,本 ADR 提供更彻底的架构解法):停止流程同步执行全量融合重算 + 全表重写,大会话下停止按钮响应延迟。
约束:
- 本地优先:融合逻辑保持纯规则(无 LLM),本决策不改变融合算法本身
- 兼容性:既有会话数据(已被覆盖的段)无法追溯还原,迁移仅影响新数据
- 数据模型变更须走 ADR(AGENTS.md §10:SQLite schema 变更需额外审查)
我们将把会话段数据分为事实层与派生层两层(类物化视图模式):
- 事实层
session_segments(保留现状表,语义变更):只存原始段——字幕 OCR 段(source=subtitle)与流式 ASR 段(source=asr,带 confidence)。实时捕获链路持续写入,永不覆盖 - 派生层
fused_segments(新表):merge_transcript的融合结果 +fused_at时间戳。停止/手动触发时由融合任务生成,可随时 DELETE + 重算 - 展示:会话详情页默认读
fused_segments(融合轴);无融合结果(融合未完成/失败)时回退读session_segments(原始轴) - 失效标记:原始段被离线精修更新后,
fused_at早于最新原始段写入时间 → 标记"可重算",提示用户或自动重算
- 优点:可重算(热词/参数调整后重新融合);可审计(原始轴带置信度);可精修(O4 替换原始 ASR 段后重算);崩溃安全(融合失败只丢派生表,重算即可)
- 缺点:新表 + 详情页查询逻辑变化;双表一致性需失效标记;ADR-004/005 需同步更新
- 适用场景:V1.0 与 O1 可信度审计 / O4 离线精修一并落地
- 优点:理论上去除停止时全量重算
- 缺点:语义不成立——字幕段 end_ms 靠下一字幕出现时刻补齐(天然滞后);ASR 补缝的 gap 判断依赖字幕全集(全局语义);每次新段反复处理未闭合窗口,复杂度高收益趋近于零
- 适用场景:无;已否决
- 优点:每片独立,避免全量
- 缺点:ASR 句跨片、字幕端跨片的边界处理复杂;片间一致性维护成本高
- 适用场景:不推荐
- 优点:无改动
- 缺点:不可重算/不可审计/不可精修(本 ADR 背景三问题无解)
- 适用场景:放弃 O1/O4 时;已否决
- 事实与派生分离是数据建模的基本原则:原始段是唯一事实(fact),融合结果是可再生的派生(derived)——派生可重算、可失效、可丢弃,事实不可丢失
- O1(可信度审计)与 O4(离线精修)是 V1.0 明确方向(头脑风暴 P6 中期演进),派生视图是两者的共同前置
- 短期方案(REQ-031 停止异步化)的异步融合任务天然对接本方案:任务从"覆盖原始表"改为"写派生表",无额外架构成本
- 实时增量融合(方案 B)在语义层面不成立,排除
- 融合结果可重算(热词/参数调整后质量提升立即可见)
- 可信度审计(O1)落地:详情页可切换融合轴/原始轴,原始轴带置信度标记需人工核对段落
- 离线精修(O4)落地:替换原始 ASR 段 + 重算融合,两能力独立演进
- 崩溃安全:融合失败只丢派生表,原始数据永在
- 新增
fused_segments表 + 详情页查询逻辑变更(读派生表 + 回退原始表) - 双表一致性:需
fused_at/失效标记机制 - ADR-004(数据模型)与 ADR-005(融合落库决策)需同步更新为"已取代"状态引用本 ADR
- 既有会话数据已被覆盖式融合破坏,无法还原原始段——迁移策略:仅新会话受益,旧会话保留现状(融合轴即唯一数据),文档注明
- 详情页回退逻辑(无融合结果时读原始轴)若实现不当会造成"详情页数据突然变化"的体验断裂——需在前端明确"融合中"状态
- 新会话停止后:
session_segments保留全部原始段(数量 = 捕获段数),fused_segments生成融合轴(fused_at 有效) - 热词调整后重算融合:
fused_segments更新,session_segments不变 - 融合失败模拟:
fused_segments为空/旧数据,详情页回退显示原始轴且不报错 - 离线精修后:原始 ASR 段更新 →
fused_at失效标记生效 → 重算后详情页升级 -
cargo test新增:派生表读写、失效标记、详情页回退逻辑单测
- ADR-004: 会话管理数据模型方案(本决策将部分取代其"融合结果落库"语义)
- ADR-005: 字幕 OCR 与双源转写融合方案(融合规则不变,落库目标变更)
- REQ-031: 融合停止异步化 + 无字幕短路(短期方案,先行实施)
- 头脑风暴:无云端 AI 的内容提取极限(P6 短期/中期、O1 可信度审计、O4 离线精修)
- 需求池 REQ-031 / REQ-032(requirements-pool.md)