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