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