课程审核功能实现总结

✅ 已实现功能

1. 课程状态管理

状态流转

draft → pending_review → approved/published → published
                      ↘ rejected → draft (修改后重新提交)

状态说明

  • draft: 草稿,刚生成或更新后
  • pending_review: 待审核
  • approved: 审核通过(可选中间状态)
  • rejected: 审核拒绝
  • published: 已发布,学生可见

2. 课程同步服务修改

文件: src/services/course_sync_service.py

修改内容

  • 新生成的课程默认状态为 draft
  • 已发布的课程更新后保持 published 状态
  • 添加 review_info 字段记录审核信息

3. 课程审核 API

文件: opensource/mbe-education/backend/api/course_review_api.py

API 端点

  • POST /api/courses/{course_id}/submit-review - 提交审核
  • POST /api/courses/{course_id}/approve - 审核通过
  • POST /api/courses/{course_id}/reject - 审核拒绝
  • GET /api/courses/pending-review - 获取待审核列表

4. 课程列表过滤

文件: opensource/mbe-education/scripts/run_simple_api.py

修改内容

  • 默认只返回 status: "published" 的课程
  • 支持按状态筛选
  • 向后兼容(没有状态字段的课程默认为已发布)

🔄 工作流程

自动生成流程

知识库更新
    ↓
课程同步服务
    ↓
生成/更新课程 (status: draft)
    ↓
创建者检查内容
    ↓
提交审核 (status: pending_review)
    ↓
管理员审核
    ├─→ 通过 → 发布 (status: published)
    └─→ 拒绝 → 修改 (status: rejected → draft)

API 使用示例

1. 提交审核

POST /api/courses/{course_id}/submit-review
{
    "message": "课程已准备就绪,请审核"
}

2. 审核通过

POST /api/courses/{course_id}/approve
{
    "reviewer_id": "admin@example.com",
    "message": "审核通过,内容质量良好"
}

3. 审核拒绝

POST /api/courses/{course_id}/reject
{
    "reviewer_id": "admin@example.com",
    "message": "知识点描述过于简单,请完善后重新提交",
    "rejection_reason": "content_quality"
}

4. 查询待审核课程

GET /api/courses/pending-review

📊 数据结构

课程状态字段

{
  "id": "course_xxx",
  "status": "draft",
  "review_info": {
    "submitted_at": "2026-02-05T10:00:00",
    "reviewed_at": null,
    "reviewer_id": null,
    "review_message": null,
    "approved": null,
    "rejection_reason": null
  }
}

⚙️ 配置选项

自动审核(未来扩展)

AUTO_APPROVE_COURSES = False  # 默认关闭
AUTO_APPROVE_THRESHOLD = {
    "min_knowledge_points": 10,
    "min_description_length": 100,
    "coverage_score_threshold": 0.7
}

审核标准

  • ✅ 知识点数量 ≥ 5
  • ✅ 课程描述长度 ≥ 50 字符
  • ✅ 难度等级明确
  • ✅ 无敏感内容
  • ✅ 内容与知识库一致

🔐 权限控制

当前实现

  • 提交审核: 任何用户(实际应限制为创建者)
  • 审核操作: 需要管理员权限
  • 查看课程:
    • 学生:只能看到 published 状态
    • 创建者:可以看到自己创建的所有状态
    • 管理员:可以看到所有状态

未来改进

  • 集成完整的权限系统
  • 从 session 中获取用户信息
  • 验证创建者身份

📝 使用指南

对于创建者

  1. 知识库更新后

    • 课程自动生成,状态为 draft
    • 检查课程内容
    • 确认无误后提交审核
  2. 审核被拒绝后

    • 查看拒绝原因
    • 修改课程内容
    • 重新提交审核

对于管理员

  1. 查看待审核课程

    GET /api/courses/pending-review
    
  2. 审核课程

    • 检查课程内容质量
    • 检查合规性
    • 通过或拒绝

⚠️ 注意事项

1. 向后兼容

  • 现有课程如果没有 status 字段,默认为 published
  • 确保现有课程仍然可见

2. 状态一致性

  • 课程更新后,如果状态是 published,保持发布状态
  • 如果状态是 draftrejected,需要重新提交审核

3. 权限验证

  • 当前权限验证是简化版
  • 需要集成完整的权限系统

4. 通知机制

  • 审核结果应通知创建者
  • 待审核课程应通知管理员
  • 使用现有的通知系统

🚀 未来扩展

阶段1:管理界面

  • 创建课程审核管理页面
  • 显示待审核课程列表
  • 审核操作界面

阶段2:通知系统

  • 提交审核时通知管理员
  • 审核结果通知创建者
  • 使用邮件/WebSocket 通知

阶段3:自动审核

  • 基于规则的自动审核
  • 高质量课程自动通过
  • 低质量课程自动拒绝

阶段4:审核历史

  • 记录审核历史
  • 审核统计报表
  • 审核效率分析

📚 相关文件

  • src/services/course_sync_service.py - 课程同步服务
  • opensource/mbe-education/backend/api/course_review_api.py - 审核 API
  • opensource/mbe-education/scripts/run_simple_api.py - 后端服务集成
  • docs/architecture/COURSE_REVIEW_WORKFLOW.md - 审核流程设计

✅ 总结

已解决的问题

  • 课程生成后直接发布,没有审核环节
  • 课程内容质量无法保证
  • 可能存在不当内容

实现方案

  • 引入课程审核机制
  • 状态管理和流转
  • 审核 API 和管理功能

优势

  • 质量控制
  • 合规性保证
  • 与专家审核流程一致
  • 可追溯的审核历史