课程审核流程设计

📋 问题分析

当前问题

  • 知识库转化为课程后直接发布,没有审核环节
  • 课程内容质量无法保证
  • 可能存在不当内容影响学生学习

解决方案

  • 引入课程审核机制,类似专家审核流程
  • 课程状态:draftpending_reviewapprovedpublished
  • 只有审核通过的课程才能被学生访问

🏗️ 审核流程设计

状态流转

知识库更新
    ↓
自动生成课程 (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

📊 审核内容

审核维度

  1. 内容质量

    • 知识点是否合理
    • 描述是否清晰
    • 难度等级是否合适
  2. 内容合规

    • 是否包含不当内容
    • 是否符合教育规范
    • 是否侵犯版权
  3. 结构完整性

    • 知识点数量是否足够
    • 课程描述是否完整
    • 元数据是否齐全

审核标准

  • ✅ 知识点数量 ≥ 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:基础审核流程

  1. 添加状态字段到课程映射
  2. 修改课程同步服务,默认生成草稿
  3. 实现提交审核API
  4. 实现审核API(通过/拒绝)

阶段2:管理界面

  1. 创建课程审核页面
  2. 显示待审核课程列表
  3. 审核操作界面

阶段3:通知和优化

  1. 审核通知
  2. 自动审核规则
  3. 审核历史记录

✅ 优势

  1. 质量控制:确保课程内容质量
  2. 合规性:避免不当内容
  3. 一致性:与专家审核流程保持一致
  4. 可追溯:记录审核历史

⚠️ 注意事项

  1. 向后兼容:现有课程设置为 published 状态
  2. 权限控制:只有管理员可以审核
  3. 通知机制:及时通知审核结果
  4. 审核效率:避免审核成为瓶颈