docs(audit): V12 模块化端到端审计报告 — 11 模块 + 总报告
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled

混合矩阵式审计:10 个功能模块 × 五维检查清单
- 项目整体健康度: 76/100
- 2 个 P0 (M4 双数据库 + 反思引擎 LLM 未接入)
- 15 个 P1 (跨 M2/M3/M4/M5/M6/M7/M11)
- 三类断链模式: 写了没接/接了不对/双实现未统一
- 三阶段修复路线图: P0(2-3天) → P1(5-7天) → P2(5-7天)
This commit is contained in:
iven
2026-04-04 17:55:03 +08:00
parent e90eb5df60
commit 442ec0eeef
11 changed files with 1068 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
# 模块 M11 Classroom 课堂 审计报告
> **审计版本**: V12 | **日期**: 2026-04-04
## 1. 链路完整性
| 链路 | 状态 | 备注 |
|------|------|------|
| 课堂生成 | ✅ | classroom_generate → 4 阶段 pipeline → classroom:progress 事件 |
| 课堂加载 | ✅ | classroom_get → ClassroomStore HashMap |
| 场景播放 | ✅ | SceneRenderer 按 actions 自动播放(speech/whiteboard/quiz) |
| 课堂聊天 | ✅ | classroom_chat → LLM 多 agent 响应 |
| 笔记展示 | ✅ | scenes 列表 → 点击切换 |
| 白板渲染 | ⚠️ | WhiteboardCanvas 和 SceneRenderer 内联 SVG 两套实现未统一 |
| TTS | ✅ | 浏览器 SpeechSynthesis zh-CN |
| 导出 | ✅ | JSON/HTML/Markdown → Blob download |
| 取消生成 | ✅ | classroom_cancel_generation → tasks 移除 |
| 课堂历史列表 | ❌ | classroom_list 后端已实现但前端未集成 |
| 生成进度查询 | ❌ | classroom_generation_progress 后端已实现但前端未集成 |
**链路完整性评分: 82/100**
## 2. 问题清单
| ID | 文件 | 级别 | 描述 | 修复建议 |
|----|------|------|------|---------|
| M11-01 | `generate.rs:141-144` | **P1** | `is_cancelled()``blocking_lock()` 在 async 函数中tokio runtime 可能死锁 | 改为 `try_lock()``tokio::sync::watch` channel |
| M11-02 | `generate.rs:158-175` | **P1** | Stage 0/1 LLM 调用无 `map_err`driver 未配置时可能 panic 或返回空结果无错误提示 | 增加 map_err 错误处理 |
| M11-03 | `generate.rs:190-213` | **P1** | 课堂数据仅存内存 HashMap应用重启后全部丢失 | 增加 SQLite 或文件持久化 |
| M11-04 | `chat.rs:82-92` | P2 | LLM 失败静默 fallback 到 placeholder用户无法区分真实和模拟回复 | 增加 isPlaceholder 标志 |
| M11-05 | `ClassroomPlayer.tsx:74-77` | P2 | 生成完成后强制打开 player即使生成期间用户已关闭 | 增加手动关闭状态检查 |
| M11-06 | `classroomStore.ts:192` | P2 | chat message ID 用 `Date.now()` 可能冲突 | 改用 `crypto.randomUUID()` |
| M11-07 | `WhiteboardCanvas.tsx` | P3 | SceneRenderer 未引用 WhiteboardCanvas白板有两套渲染实现 | 统一为一套 |
| M11-08 | `export.rs:92-103` | P3 | HTML 导出只渲染 title+duration不包含 key_points 等内容 | 丰富导出内容 |
**综合健康度: 70/100** — 功能链路基本贯通但无持久化、async 锁风险、LLM 错误不透明是核心短板。