课程审核流程设计
📋 问题分析
当前问题:
- 知识库转化为课程后直接发布,没有审核环节
- 课程内容质量无法保证
- 可能存在不当内容影响学生学习
解决方案:
- 引入课程审核机制,类似专家审核流程
- 课程状态:
draft→pending_review→approved→published - 只有审核通过的课程才能被学生访问
🏗️ 审核流程设计
状态流转
知识库更新
↓
自动生成课程 (status: draft)
↓
提交审核 (status: pending_review)
↓
管理员审核
├─→ 通过 (status: approved) → 发布 (status: published)
└─→ 拒绝 (status: rejected) → 修改后重新提交
状态定义
| 状态 | 说明 | 可见性 |
|---|---|---|
draft |
草稿,刚生成 | 仅创建者可见 |
pending_review |
待审核 | 仅创建者和管理员可见 |
approved |
审核通过 | 仅创建者和管理员可见 |
rejected |
审核拒绝 | 仅创建者和管理员可见 |
published |
已发布 | 所有学生可见 |
🔧 实现方案
1. 课程状态管理
在 course_mappings.json 中添加状态字段:
{
"id": "course_xxx",
"status": "draft", // draft, pending_review, approved, rejected, published
"review_info": {
"submitted_at": "2026-02-05T10:00:00",
"reviewed_at": null,
"reviewer_id": null,
"review_message": null
}
}
2. 课程同步服务修改
生成课程时,默认状态为 draft:
course = {
"id": f"course_{kb_id}",
"status": "draft", # 默认草稿状态
"review_info": {
"submitted_at": None,
"reviewed_at": None,
"reviewer_id": None,
"review_message": None
}
}
3. 提交审核 API
POST /api/courses/{course_id}/submit-review
4. 审核 API
# 审核通过
POST /api/admin/courses/{course_id}/approve
# 审核拒绝
POST /api/admin/courses/{course_id}/reject
5. 课程列表过滤
学生只能看到 status: "published" 的课程:
GET /api/courses?status=published
📊 审核内容
审核维度
内容质量
- 知识点是否合理
- 描述是否清晰
- 难度等级是否合适
内容合规
- 是否包含不当内容
- 是否符合教育规范
- 是否侵犯版权
结构完整性
- 知识点数量是否足够
- 课程描述是否完整
- 元数据是否齐全
审核标准
- ✅ 知识点数量 ≥ 5
- ✅ 课程描述长度 ≥ 50 字符
- ✅ 难度等级明确
- ✅ 无敏感内容
- ✅ 内容与知识库一致
🔄 工作流程
自动生成流程
知识库更新
↓
课程同步服务
↓
生成课程 (status: draft)
↓
通知创建者(可选)
提交审核流程
开发者/创建者
↓
查看草稿课程
↓
检查内容
↓
提交审核 (status: pending_review)
↓
通知管理员
审核流程
管理员
↓
查看待审核课程列表
↓
审核课程内容
├─→ 通过 → 自动发布 (status: published)
└─→ 拒绝 → 通知创建者 (status: rejected)
⚙️ 配置选项
自动审核(可选)
对于高质量课程,可以自动审核通过:
AUTO_APPROVE_COURSES = False # 默认关闭
AUTO_APPROVE_THRESHOLD = {
"min_knowledge_points": 10,
"min_description_length": 100,
"coverage_score_threshold": 0.7
}
审核通知
- 提交审核时通知管理员
- 审核结果通知创建者
- 使用现有的通知系统(邮件/WebSocket)
📝 API 设计
课程提交审核
POST /api/courses/{course_id}/submit-review
{
"message": "课程已准备就绪,请审核"
}
管理员审核
POST /api/admin/courses/{course_id}/approve
{
"reviewer_id": "admin@example.com",
"message": "审核通过,内容质量良好"
}
POST /api/admin/courses/{course_id}/reject
{
"reviewer_id": "admin@example.com",
"message": "知识点描述过于简单,请完善后重新提交",
"rejection_reason": "content_quality"
}
查询课程
# 学生查询(仅已发布)
GET /api/courses?status=published
# 创建者查询(所有状态)
GET /api/courses?creator_id=xxx
# 管理员查询(待审核)
GET /api/admin/courses?status=pending_review
🎯 实施建议
阶段1:基础审核流程
- 添加状态字段到课程映射
- 修改课程同步服务,默认生成草稿
- 实现提交审核API
- 实现审核API(通过/拒绝)
阶段2:管理界面
- 创建课程审核页面
- 显示待审核课程列表
- 审核操作界面
阶段3:通知和优化
- 审核通知
- 自动审核规则
- 审核历史记录
✅ 优势
- 质量控制:确保课程内容质量
- 合规性:避免不当内容
- 一致性:与专家审核流程保持一致
- 可追溯:记录审核历史
⚠️ 注意事项
- 向后兼容:现有课程设置为
published状态 - 权限控制:只有管理员可以审核
- 通知机制:及时通知审核结果
- 审核效率:避免审核成为瓶颈