【听见课堂 HarmonyOS NEXT 实战系列 49】把字幕、板书、任务合成一条证据时间线

字幕、OCR 板书和任务分别存放很合理,但复盘时用户需要按课堂顺序回看“当时说了什么、拍了什么、后来确认了什么”。听见课堂通过 ReviewTimelineItem 把三类数据映射成统一的只读时间线模型。

字幕、板书与任务映射为统一课堂证据时间线节点

一、统一时间线不是把三张表合成一张表

RelationalStore 仍保留字幕、扫描和任务各自的字段与生命周期。Service 读取三类 canonical data 后,临时生成适合展示的 ReviewTimelineItem

存储模型负责正确写入,投影模型负责统一阅读;两者不必强行使用同一张宽表。

二、ReviewTimelineItem 包含哪些字段

统一节点包含 idtimestamptypetitledetailsourceconfidenceLabelevidenceCount

这些字段足以支持列表摘要、类型筛选、节点详情和来源证据面板,同时不把原始实体的全部内部字段暴露给页面。

三、节点 ID 为什么要带类型前缀

字幕、扫描和任务的业务 ID 可能重复。Service 分别生成 transcript-scan-task- 前缀,形成跨类型唯一的 UI 节点键。

P07 与 P09 也能用同一规则定位任务节点,实现从任务卡直接跳转到证据时间线。

四、字幕如何映射

字幕节点保留原时间戳和原文,类型根据 isKeyPoint 映射为“重点”或“字幕”。详情标明说话者和课堂字幕原文,来源继续指向课堂字幕。

confidenceLabel 使用“已人工标记重点”或“原始字幕记录”,没有虚构语音识别置信度百分比。

五、板书如何映射

板书节点使用扫描标题和 OCR 文本,来源沿用 ScanNote.source,标签显示 Math.round(scan.confidence * 100) + '% OCR'

这个数字只能描述 ScanNote 当前保存的 OCR 置信字段。它可能来自真实 OCR 结果或演示种子,必须结合数据来源判断,不能直接当作项目整体识别准确率。

六、任务如何映射

任务节点包含标题、截止文本和来源,标签根据 confirmed 显示“已人工确认”或“待人工确认”。当前时间线会加入全部任务,包括候选。

这使用户能回看建议如何产生,但也要求界面明确区分候选与正式任务。

七、时间戳从哪里来

字幕直接使用自身时间戳;扫描与任务通过 reviewSourceTime() 从来源文本识别少量已知时间,否则使用调用处提供的兜底时间。

当前已知集合是 14:03 / 14:12 / 14:20 / 14:28。这是一套项目演示映射,不是通用自然语言时间解析器。

八、排序为什么可以使用 localeCompare

节点时间采用固定宽度的 HH:mm 字符串,因此按字典序排序与当天时间先后一致。

items.sort((left, right): number => {
  return left.timestamp.localeCompare(right.timestamp);
});

若未来支持跨日期、多时区或秒级时间,应改为结构化毫秒字段,不能继续只排显示字符串。

三类证据映射字段、节点标识、时间排序和详情联动

九、类型筛选留在页面短状态

P07 的 reviewFilter 支持全部、字幕、重点、板书和任务。页面只对已生成的 Snapshot 做轻量过滤,不回写数据源。

切换筛选时,如果当前选中节点不属于新类型,页面会清空选择;大屏则可自动选中新结果的第一项。

十、节点详情与证据面板如何联动

用户选择节点后,selectedReviewNodeId 同时驱动列表高亮、详情区和证据预览。手机端在列表下展开,大屏端使用多栏布局。

响应式变化不复制业务数据,所有区域都从同一个 Snapshot 中按 ID 查找节点。

十一、evidenceCount 当前为什么都是 1

三类映射都传入 1,表示每个时间线节点当前关联一份直接证据。这是模型为未来扩展留下的字段,不代表已经实现多证据关系聚合。

如果将来一个任务关联多段字幕和多张板书,应通过关系表或明确的关联集合计算,而不是手工改显示数字。

十二、从任务中心打开时间线

P09 会设置 reviewFilter='任务',选择 task- 前缀节点,再导航到复盘页。用户看到的不只是任务标题,还能继续核对截止文本、来源和确认状态。

这条路径把“做什么”重新连接到“为什么产生这项任务”。

十三、当前时间线仍是单课程快照

getReviewSnapshot() 读取的是当前 Repository 的当天课程数据,没有课程 ID 字段参与时间线筛选。对当前单课程演示足够,但不能声称已经支持跨课程时间线。

未来多课程需要节点携带 courseId,并让 Service 按课程或日期生成范围明确的快照。

十四、未来关系模型怎样扩展

可以新增 evidence_links:记录源实体类型、源 ID、目标实体类型、目标 ID、关系类型和创建来源。任务就能关联多段字幕、扫描也能关联对应讲解片段。

关系建立仍应由人工确认或可撤销规则完成,避免模型自动生成不可追溯的强关系。

十五、验收应该检查哪些证据

至少验证三类节点数量、前缀 ID 唯一性、时间顺序、类型筛选、选中详情、任务中心跳转、候选/确认标签、OCR 来源说明以及空时间线状态。

还要构造相同时间戳、未知来源时间和跨日期数据,确认当前限制被正确暴露。

十六、总结

统一证据时间线是一层可追溯投影,不是新的事实数据库。听见课堂保留三类实体的存储边界,在 Service 中生成共同节点,让手机和大屏按时间、类型和来源复盘;同时如实保留单课程、有限时间解析和一对一证据数的当前范围。

下一篇将进入历史页,拆解关键词、课程、日期和证据类型如何组合筛选与高亮。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐