Files
zclaw_openfang/docs/features/audit-v12/M11-classroom.md
iven 442ec0eeef
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
docs(audit): V12 模块化端到端审计报告 — 11 模块 + 总报告
混合矩阵式审计: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天)
2026-04-04 17:55:03 +08:00

37 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 模块 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 错误不透明是核心短板。