Skip to content

Commit d99edc8

Browse files
committed
docs(versions): v0.7.2 版本批次与需求登记
1 parent e104efb commit d99edc8

6 files changed

Lines changed: 98 additions & 7 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,28 @@
33
本项目遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/) 与 [SemVer](https://semver.org/lang/zh-CN/)。
44
各版本的深度版本文档见 [docs/versions/](docs/versions/)。
55

6-
## [0.7.1] - 2026-08(开发中)
6+
## [0.7.2] - 2026-08(开发中)
77

88
### 新增
99

10-
- **课堂助手体验三连(2026-08 用户需求)**:
10+
- **课堂助手体验三连(2026-08 用户需求,已完成)**:
1111
- 最近画面按时间先后排列:缩略图条去掉"最新在前"反转——前→后 = 旧→新,新画面追加在末尾(后端本就按时间戳升序返回)
12-
- ASR 未沉淀行多行展示:实时转写不再折叠为单行——识别中(灰斜)与已定稿待沉淀(黑)各行并存;连续定稿(快速短句)不再互相覆盖丢失,新句首个 partial 到达时统一沉淀入列表(纯前端状态机,后端单流协议不变)
12+
- ASR 未沉淀行多行展示:实时转写不再折叠为单行——识别中(灰斜)与已定稿待沉淀(黑)各行并存;连续定稿(快速短句)不再互相覆盖丢失,新句首个 partial 到达时统一沉淀入列表;**2026-08 修正**:识别中 partial 按句读(。!?…)拆多行灰斜体全部显示(整句候选含多句时不再一行越滚越长),定稿时合并为一行黑色待沉淀(纯前端,后端单流协议不变)
1313
- 视频类型档案新增「未知」选项:自动检测零信号命中(无法识别)时如实选中「未知」并生效(参数走默认档零回归、产物模板同网课讲义);记忆偏好/会话 profile/产物构建全链路支持 unknown
14+
- **课堂助手四深化(2026-08 用户需求,实施中)**:
15+
- 采集信息面板(REQ-151):采集过程右侧信息区显示播放平台/视频时长/合集集号/字幕情况——平台=标题后缀规则;时长=播放器区域 OCR 时间文本;合集=标题规则+播放器 OCR 分P文本;字幕=实时字幕检测状态(全部本地,无网络)
16+
- 合集检测与联动(REQ-152):extract_series/normalize_title 纯逻辑(P/集/EP/括号/数字后缀,防误判边界)+ 档案检测系列名投票(跨集投票一致)+ 记忆偏好系列键(用户选一次,整系列生效)+ 课程分组扩展;B站搜索接口反查方案否决(风控/隐私/维护成本),播放器 OCR 为本地增强
17+
- 说话人分离弱化版(REQ-153):sherpa SpeakerEmbeddingExtractor 引擎接线 + VAD 段馈入 + 讲者切换事件(时间戳+置信度)落库与展示;模型缺失降级为无讲者标注;课堂助手使用说明同步提醒
18+
- 语速停顿自适应(REQ-154):S-1 动态合并阈值(段前停顿统计 → 合并 gap 从固定 600ms 参数化);S-2 语速骤变事件(speech_rate 已落库 → 段间骤变事件落库,重点标注备数据)
19+
20+
### 测试
21+
22+
- 单测 N 个(实施中):合集序列识别矩阵(P/集/EP/括号/数字后缀+反例)· 平台后缀剥离 · 课程分组回归 · 检测系列名投票一致性 · 记忆系列键跨集命中与旧 JSON 兼容 · 断句自适应阈值统计与注入
23+
24+
## [0.7.1] - 2026-08(开发中)
25+
26+
### 新增
27+
1428
- **会话体验小版本(REQ-135~137,2026-08-19 头脑风暴)**:
1529
- 会话↔笔记双向关联:`notes.session_id` 列迁移(删除会话 `SET NULL` 只断关联不删笔记——笔记是用户资产;旧数据诚实 NULL 不猜不填);`list_sessions` 返回 `SessionListItem`(has_note/note_id/note_title/has_content 子查询标记);`artifact_to_note` 同步写关联(口径统一)
1630
- 批量转笔记 `batch_session_to_note`:≤50 条、部分成功语义(单条失败不阻塞、跳过原因显式回传)、重复 id 去重、跳过已转防重复;`convert_to_note` 核心提取——单条与批量共用同一过滤管线(REQ-081/082 原则延续)

‎docs/Foresight/brainstorming-video-profile-detection.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# 头脑风暴记录:视频类型档案自动检测准确度提升
22

3-
**状态**: 前瞻构想(未排期)——2026-08 用户反馈"档案自动化检测准确度较低",本文对
4-
根因做代码级定位并产出候选方案矩阵;落地项待裁决后进 requirements-pool。
3+
**状态**: 部分已立项(v0.7.2,2026-08 用户裁决:合集检测联动 + 断句自适应落地;检测准确度整体仍搁置)——本文对
4+
根因做代码级定位并产出候选方案矩阵;已立项项登记 [需求池 REQ-152/154](../product/requirements-pool.md)(v0.7.2),其余待裁决。
55

66
## 基本信息
77

‎docs/Foresight/video-data-extraction-inventory.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
# 视频知识提取:一个视频能提取出哪些数据(非社交属性)
22

3-
**状态**: 前瞻构想(未排期)——2026-08 应询整理:以"一个视频"为对象,逐项列出可提取的
4-
非社交属性数据(不含评论/点赞/弹幕等社交信号),标注**已投入使用 / 已实现未接线 / 未实现**。
3+
**状态**: 部分已立项(v0.7.2,2026-08 用户裁决:说话人分离弱化版落地(A8)、采集信息面板(时长/合集/字幕,C/B 层复用))——本文为
4+
前瞻整理:以"一个视频"为对象,逐项列出可提取的非社交属性数据(不含评论/点赞/弹幕等社交信号),标注**已投入使用 / 已实现未接线 / 未实现**;
5+
已立项项登记 [需求池 REQ-151/153](../product/requirements-pool.md)(v0.7.2),其余待裁决。
56

67
## 阅读约定
78

‎docs/product/requirements-pool.md‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,21 @@
164164
| REQ-136 | 批量转笔记:batch_session_to_note(≤50、部分成功语义、跳过规则显式回传)+ 列表行内一键转笔记(4 步→1 步)+ 已转会话显示「查看笔记 →」 | P1 | 已排期 | v0.7.1 | convert_to_note 核心提取(单条/批量共用单一管线,REQ-081/082 原则延续);批量跳过已转防重复,详情页保留有意重新生成 |
165165
| REQ-137 | 会话列表管理增强:状态/转化筛选 + 排序 + 批量删除(笔记保留)+ 双模式搜索整合(标题/转写内容)+ 事件驱动刷新(live:status/session:fused/切页 active)+ 新完成提示条 + 空态/加载态 | P1 | 已排期 | v0.7.1 | display:none 挂载不刷新导致的"采集中"残留根治(TD-004 副作用);筛选本地过滤零后端改动 |
166166

167+
### v0.7.2 · 课堂助手实时体验深化(2026-08 用户需求批次)
168+
169+
> 2026-08 用户需求:采集过程信息透明化 + 说话人切换可见 + 合集识别联动 + 断句自适应;
170+
> 设计依据 [档案检测准确度头脑风暴](../Foresight/brainstorming-video-profile-detection.md) · [视频数据提取清单](../Foresight/video-data-extraction-inventory.md) · [v0.7.2 版本文档](../versions/v0.7.2.md)。
171+
172+
| ID | 需求 | 优先级 | 状态 | 目标版本 | 备注 |
173+
|----|------|--------|------|---------|------|
174+
| REQ-148 | 最近画面按时间先后排列(用户需求) | P1 | 已实现 | v0.7.2 | 缩略图条旧→新,新图追加末尾(后端本就升序,去掉前端 reverse) |
175+
| REQ-149 | ASR 未沉淀行多行展示 + 识别中按句拆行(用户需求) | P1 | 已实现 | v0.7.2 | 识别中灰斜(按句读拆多行全部显示)+ 已定稿待沉淀黑并存;连续定稿不覆盖丢失;纯前端状态机 |
176+
| REQ-150 | 档案新增「未知」选项,无法自动识别时选中(用户需求) | P1 | 已实现 | v0.7.2 | 零信号命中→unknown 候选→自动选中生效;参数默认档零回归;全链路支持 |
177+
| REQ-151 | 采集信息面板:播放平台/视频时长/合集集号/字幕情况 | P1 | 已排期 | v0.7.2 | 平台=标题后缀规则;时长=播放器区域 OCR 时间文本;合集=标题规则+播放器 OCR 分P文本;字幕=实时字幕检测状态;全本地零网络 |
178+
| REQ-152 | 合集检测与联动:extract_series/normalize_title + 档案检测系列名投票 + 记忆系列键 + 课程分组扩展 | P1 | 已排期 | v0.7.2 | 纯文本规则(P/集/EP/括号/数字后缀+反例);P1 与 P5 投票一致;选一次整系列生效;B站合集自动归组;搜索接口反查否决(风控/隐私) |
179+
| REQ-153 | 说话人分离弱化版:SpeakerEmbeddingExtractor 引擎接线 + VAD 段馈入 + 切换事件落库展示 + 使用说明提醒 | P1 | 已排期 | v0.7.2 | 弱化版不聚类身份(只标切换点);wespeaker 模型(Apache-2.0)缺失降级;会话后离线分析;A3 spike 已验证 sherpa 1.13 可用 |
180+
| REQ-154 | 语速停顿习惯自适应:动态合并阈值 + 语速骤变事件 | P2 | 已排期 | v0.7.2 | S-1 合并 gap 从固定 600ms 参数化(pause_ms 统计驱动);S-2 speech_rate 骤变事件落库(重点标注备数据) |
181+
167182
### v0.8.0 · AI 接入——会话→笔记精修 + 知识补充 + 信任基建(第八阶段,规划中)
168183

169184
> 2026-08-19 头脑风暴收敛([头脑风暴 v0.8 AI 精修([ ] 已归档)](../archive/2026-08-19/brainstorming-v0.8-ai-note-refine.md)):核心=SiliconFlow AI 接入(会话→笔记 AI 精修 + 余额查询);

‎docs/versions/README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
| v0.6.0 | [v0.6.0.md](./v0.6.0.md) — 第六阶段:提取质量与信任+性能资源+会话体验(REQ-059~087,含 ADR-011/012) | 发版文档(开发完成 2026-08-19,M7 真机验收待执行) |
1616
| v0.7.0 | [v0.7.0.md](./v0.7.0.md) — 第七阶段:信任收尾+存储使能+类型扩展(三通道模型;REQ-088/098~134,37 项) | 发版文档(开发完成 2026-08-19,M4 真机验收待执行) |
1717
| v0.7.1 | [v0.7.1.md](./v0.7.1.md) — 会话体验小版本:管理控制台+转化流水线(REQ-135~137,含 ADR-014) | 发版文档(开发完成 2026-08-19,真机验收待执行) |
18+
| v0.7.2 | [v0.7.2.md](./v0.7.2.md) — 课堂助手实时体验深化:信息面板+合集检测联动+说话人分离弱化版+断句自适应(REQ-148~154) | 发版文档(开发中 2026-08) |
1819
| v0.8.0 | [v0.8.0.md](./v0.8.0.md) — 第八阶段:AI 接入——会话→笔记精修+知识补充+信任基建(REQ-138~147,含余额查询) | 发版文档(规划中,M0 验收总清前置) |
1920

2021
## 沉淀规则

‎docs/versions/v0.7.2.md‎

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# v0.7.2 — 课堂助手实时体验深化(信息可见性 + 说话人 + 合集 + 断句自适应)
2+
3+
> **状态**: 开发中(2026-08 用户需求批次;四项深化按序实施,三连体验已完成)
4+
> **目标**: 采集过程中右侧信息透明化(平台/时长/合集/字幕)· 说话人切换可见 · 合集识别与档案检测联动 · 断句随说话人语速停顿习惯自适应
5+
> **关联**: [档案检测准确度头脑风暴](../Foresight/brainstorming-video-profile-detection.md) · [视频数据提取清单](../Foresight/video-data-extraction-inventory.md) · [需求池](../product/requirements-pool.md)(REQ-148~154)
6+
7+
## 一、阶段目标
8+
9+
1. **体验三连(已完成)**:最近画面按时间顺序排列;ASR 未沉淀行多行展示(识别中按句读拆行 + 已定稿并存);档案新增「未知」选项
10+
2. **采集信息面板(REQ-151)**:采集过程右侧空白区显示播放平台、视频时长、是否合集及第几集、字幕情况(有无/内嵌/外部文件)
11+
3. **合集检测与联动(REQ-152)**:标题系列名/序号提取 → 档案检测系列名投票 + 记忆系列键 + 课程分组扩展
12+
4. **说话人分离弱化版(REQ-153)**:SpeakerEmbeddingExtractor 引擎接线 + VAD 段馈入 + 讲者切换事件;课堂助手使用说明提醒
13+
5. **语速停顿自适应(REQ-154)**:动态合并阈值 + 语速骤变事件
14+
15+
## 二、范围(需求追溯)
16+
17+
| REQ | 内容 | 验收要点 | 规划状态 |
18+
|-----|------|---------|---------|
19+
| REQ-148 | 最近画面按时间先后排列(用户需求) | 缩略图条旧→新,新图追加末尾 | **已实现** |
20+
| REQ-149 | ASR 未沉淀行多行展示 + 识别中按句拆行(用户需求) | 识别中多句各占一行灰斜;连续定稿不覆盖丢失;定稿合并待沉淀 | **已实现** |
21+
| REQ-150 | 档案新增「未知」选项,无法识别时选中(用户需求) | 零信号命中→候选 unknown→自动选中生效;参数默认档零回归 | **已实现** |
22+
| REQ-151 | 采集信息面板:平台/时长/合集集号/字幕情况 | 采集 30-60s 内信息齐全;播放器 OCR 识别时间与分P文本;字幕检测状态如实 | **已排期** |
23+
| REQ-152 | 合集检测与联动:extract_series/normalize_title + 档案系列名投票 + 记忆系列键 + 课程分组 | 标题 P/集/EP/括号/数字后缀正确识别(反例不误判);P1 与 P5 投票一致;选一次整系列生效;B站合集自动归组 | **已排期** |
24+
| REQ-153 | 说话人分离弱化版:引擎接线 + VAD 段馈入 + 切换事件 + 使用说明提醒 | 访谈/会议会话产出讲者切换时间轴;模型缺失降级无标注;使用说明含提醒 | **已排期** |
25+
| REQ-154 | 语速停顿自适应:动态合并阈值 + 语速骤变事件 | 机关枪说话人不再整段挂起;慢速说话人半句不丢;语速骤变事件落库 | **已排期** |
26+
27+
## 三、关键设计决策
28+
29+
1. **信息面板数据全本地**:平台=标题后缀规则(`normalize_title`,B站/YouTube/腾讯视频等剥离表);时长=播放器区域 OCR 时间文本(`播放器区域检测`已有,识别 `当前/总时长` 文本);合集=标题规则 + 播放器 OCR 分P文本(`P2/12`、`第2集`);字幕=`subtitle_detect` 实时状态。**零网络请求**。
30+
2. **B站 p= 参数获取否决搜索接口**:标题→搜索 API 反查 bvid→pagelist 拿分P——性能可行(两次请求 <1s 后台)但无 cookie 高频 412 风控、接口签名随前端变动、标题外发违背本地优先精神、同名视频搜错。**替代=播放器 OCR(完全本地,顺带解决时长)**;搜索接口记为可选增强(需用户授权)。
31+
3. **合集检测纯规则**:P/第X集/EP/括号/数字后缀五模式 + 边界反例(`Python3`/`2026`/`UP主` 不误判)+ 序号开头放弃(诚实降级);跨会话同系列 ≥2 确认合集。与 `course_of`(第X章前缀)合并为统一系列键。
32+
4. **说话人分离弱化版**:不聚类身份、只标切换点(时间戳+置信度);sherpa-onnx `SpeakerEmbeddingExtractor`(A3 spike 已验证 1.13 可用)+ wespeaker 模型(Apache-2.0);**会话后离线分析**(session-audio WAV + VAD 段边界 → 每段 embedding → 相邻余弦,复用 `speaker_change.rs` 判定器);模型缺失 → 无讲者标注降级;产物/会话详情展示切换时间轴。
33+
5. **断句自适应**:S-1 会话前段统计平均段前停顿(`pause_ms` 已落库)→ 合并 gap 从固定 600ms 参数化(`asr_merge` 阈值注入);S-2 `speech_rate` 已落库 → 段间骤变 → `session_events` 新事件(重点标注备数据,消费端后续接线)。
34+
35+
## 四、测试与验证
36+
37+
- **Rust 单测**(实施中):`series_detect` 五模式+反例矩阵、平台后缀剥离、`course_of` 回归(第X章行为不变)、检测系列名投票一致性、`ProfileMemory` 系列键跨集命中+旧 JSON 兼容、断句自适应阈值统计/注入、语速骤变事件
38+
- **前端**:`npm run build` 通过(TS 类型检查 + 打包);信息面板 UI 真机验证清单见下
39+
- **模型**:wespeaker 说话人 embedding 模型(开发期手动下载至 `models/`,不入库;生产期捆绑/首启下载)
40+
41+
### 真机手动验证清单(实施完成后执行)
42+
43+
1. 采集 B站视频:面板 30-60s 内显示平台=B站、总时长、合集集号(标题带 P 或播放器 OCR 识别)
44+
2. 采集无字幕视频:字幕状态显示"未检测到字幕";有字幕视频显示"内嵌/滚动字幕"
45+
3. 访谈/会议会话(模型就绪):会话详情出现讲者切换标记;模型缺失时无标记不报错
46+
4. 机关枪讲课(停顿 <600ms):段落粒度改善(不再整段挂起/停止时才冒)
47+
5. P1/P2 两个会话:档案检测结果一致;确认一次后 P2 直接生效(记忆系列键)
48+
49+
## 五、文件清单(实施中,按提交逐步更新)
50+
51+
**Rust**:`series_detect.rs`(新:normalize_title/extract_series/normalize_episode)· `commands_session.rs`(course_of 扩展)· `video_profile.rs`(ProfileMemory 系列键 + ObservedSignals.is_series)· `commands_video.rs`(检测入口系列名)· `asr_merge.rs`/`live_session_persist.rs`(动态合并阈值注入)· `live_session_loop.rs`(语速骤变事件)· `live_session.rs`/`speaker_engine.rs`(新:embedding 引擎接线)· `session_events.rs`(新事件类型)· `commands_speaker.rs`(新:会话讲者分析命令)· `lib.rs`(注册)· 测试文件若干
52+
53+
**前端**:`types.ts`(信息面板/讲者切换事件类型)· `LiveActivityPanel.tsx`(信息卡 UI)· `SessionDetailPanel.tsx`(讲者切换时间轴标记)· `ProfileDetector.tsx`/`ClassroomPage.tsx`(系列联动)
54+
55+
## 六、后续批次(本版本不做)
56+
57+
- 讲者身份识别/聚类(A/B/C 时间轴归属,V1.0 模型分发波)
58+
- B站搜索接口反查(可选增强,需用户授权 + 降级设计)
59+
- 词级时间戳落库与"定位回听"(V1.0 升级 + schema 迁移)
60+
- 视频文件元数据提取展示(ffprobe 已捆绑,零成本,独立小批次)

0 commit comments

Comments
 (0)