feat: 初始化考培练系统项目
- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
220
知识库/参考代码/python_dev_project/docs/modules/exam_module.md
Normal file
220
知识库/参考代码/python_dev_project/docs/modules/exam_module.md
Normal file
@@ -0,0 +1,220 @@
|
||||
# 考试模块(Exam Module)
|
||||
|
||||
## 模块概述
|
||||
|
||||
考试模块是考培练系统的核心功能之一,提供动态组卷、在线考试、自动判题、成绩分析和错题管理等功能。该模块与Dify AI平台集成,支持智能出题和主观题自动评分。
|
||||
|
||||
## 主要功能
|
||||
|
||||
### 1. 动态组卷
|
||||
- 根据课程、知识点、难度等参数动态生成试卷
|
||||
- 支持多种题型:单选题、多选题、判断题、填空题、简答题、论述题
|
||||
- 通过Dify工作流实现智能出题
|
||||
|
||||
### 2. 考试管理
|
||||
- 考试计时和状态管理
|
||||
- 防作弊机制(防重复提交、超时控制)
|
||||
- 题目与答案分离存储,确保安全性
|
||||
|
||||
### 3. 自动判题
|
||||
- 客观题自动判分
|
||||
- 主观题通过Dify AI评分
|
||||
- 实时计算成绩和统计信息
|
||||
|
||||
### 4. 成绩分析
|
||||
- 详细的成绩报告
|
||||
- 题型正确率统计
|
||||
- 知识点掌握情况分析
|
||||
- AI生成的学习建议
|
||||
|
||||
### 5. 错题管理
|
||||
- 自动记录错题
|
||||
- 支持错题复习和标记掌握状态
|
||||
- 按知识点分类管理
|
||||
|
||||
## 技术架构
|
||||
|
||||
### 数据模型
|
||||
- `ExamSession`: 考试会话表
|
||||
- `ExamQuestion`: 考试题目表
|
||||
- `ExamAnswer`: 考试答案表
|
||||
- `ExamResult`: 考试结果表
|
||||
- `Mistake`: 错题记录表
|
||||
|
||||
### API接口
|
||||
|
||||
#### 1. 开始考试
|
||||
```
|
||||
POST /api/v1/exams/start
|
||||
```
|
||||
- 功能:动态生成试卷并开始考试
|
||||
- 权限:需要登录
|
||||
- 参数:课程ID、题目数量、时长、难度等
|
||||
|
||||
#### 2. 提交考试
|
||||
```
|
||||
POST /api/v1/exams/{examId}/submit
|
||||
```
|
||||
- 功能:提交答案并生成成绩
|
||||
- 权限:需要登录,只能提交自己的考试
|
||||
- 参数:答案列表
|
||||
|
||||
#### 3. 获取考试详情
|
||||
```
|
||||
GET /api/v1/exams/{examId}
|
||||
```
|
||||
- 功能:获取考试信息和题目(不含答案)
|
||||
- 权限:需要登录,只能查看自己的考试
|
||||
|
||||
#### 4. 获取考试记录
|
||||
```
|
||||
GET /api/v1/exams/records
|
||||
```
|
||||
- 功能:分页获取考试历史记录
|
||||
- 权限:需要登录
|
||||
- 支持按状态筛选
|
||||
|
||||
#### 5. 获取考试结果
|
||||
```
|
||||
GET /api/v1/exams/{examId}/result
|
||||
```
|
||||
- 功能:获取详细的考试成绩和分析
|
||||
- 权限:需要登录,只能查看自己的成绩
|
||||
|
||||
#### 6. 获取错题列表
|
||||
```
|
||||
GET /api/v1/exams/mistakes
|
||||
```
|
||||
- 功能:分页获取错题记录
|
||||
- 权限:需要登录
|
||||
- 支持按掌握状态筛选
|
||||
|
||||
## 配置说明
|
||||
|
||||
### 环境变量
|
||||
```env
|
||||
# Dify配置
|
||||
DIFY_API_BASE=https://api.dify.ai/v1
|
||||
DIFY_API_KEY=your_api_key
|
||||
DIFY_EXAM_WORKFLOW_ID=exam_workflow_id
|
||||
DIFY_EVAL_WORKFLOW_ID=eval_workflow_id
|
||||
DIFY_TIMEOUT=30
|
||||
```
|
||||
|
||||
### 考试参数限制
|
||||
- 题目数量:1-100题
|
||||
- 考试时长:1-300分钟
|
||||
- 难度等级:1-5级
|
||||
- 默认及格分:60分
|
||||
|
||||
## 使用示例
|
||||
|
||||
### 1. 开始考试
|
||||
```python
|
||||
# 请求
|
||||
POST /api/v1/exams/start
|
||||
{
|
||||
"exam_name": "Python基础测试",
|
||||
"question_count": 20,
|
||||
"time_limit": 60,
|
||||
"difficulty": 3,
|
||||
"knowledge_points": ["Python基础", "数据结构"],
|
||||
"question_types": ["single_choice", "true_false"]
|
||||
}
|
||||
|
||||
# 响应
|
||||
{
|
||||
"code": 200,
|
||||
"message": "考试开始成功",
|
||||
"data": {
|
||||
"id": 1,
|
||||
"exam_name": "Python基础测试",
|
||||
"total_questions": 20,
|
||||
"total_score": 100.0,
|
||||
"time_limit": 60,
|
||||
"status": "in_progress",
|
||||
"started_at": "2024-01-01T10:00:00",
|
||||
"questions": [...]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 提交考试
|
||||
```python
|
||||
# 请求
|
||||
POST /api/v1/exams/1/submit
|
||||
{
|
||||
"answers": [
|
||||
{
|
||||
"question_id": 1,
|
||||
"user_answer": "B",
|
||||
"time_spent": 30
|
||||
},
|
||||
{
|
||||
"question_id": 2,
|
||||
"user_answer": "True",
|
||||
"time_spent": 20
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
# 响应
|
||||
{
|
||||
"code": 200,
|
||||
"message": "考试提交成功",
|
||||
"data": {
|
||||
"exam_id": 1,
|
||||
"total_score": 100.0,
|
||||
"actual_score": 85.0,
|
||||
"percentage_score": 85.0,
|
||||
"is_passed": true,
|
||||
"correct_questions": 17,
|
||||
"ai_analysis": "您在Python基础部分表现优秀...",
|
||||
"improvement_suggestions": ["建议加强数据结构的学习"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 安全考虑
|
||||
|
||||
1. **认证控制**:所有接口需要JWT认证
|
||||
2. **权限隔离**:用户只能访问自己的考试数据
|
||||
3. **防作弊机制**:
|
||||
- 题目与答案分离存储
|
||||
- 考试状态严格控制
|
||||
- 超时自动结束
|
||||
- 防止重复提交
|
||||
|
||||
## 性能优化
|
||||
|
||||
1. **数据库索引**:
|
||||
- 用户ID和考试状态联合索引
|
||||
- 考试ID和题目顺序联合索引
|
||||
|
||||
2. **分页查询**:
|
||||
- 考试记录和错题列表支持分页
|
||||
- 默认每页20条,最大100条
|
||||
|
||||
3. **异步处理**:
|
||||
- 使用异步数据库操作
|
||||
- Dify API调用设置超时控制
|
||||
|
||||
## 扩展性
|
||||
|
||||
该模块设计考虑了未来的扩展需求:
|
||||
|
||||
1. **题库管理**:预留了题库查询接口
|
||||
2. **批量导入**:支持从Excel导入试题
|
||||
3. **考试模板**:可保存常用考试配置
|
||||
4. **团体考试**:支持班级或部门统一考试
|
||||
5. **证书生成**:考试通过后生成电子证书
|
||||
|
||||
## 测试覆盖
|
||||
|
||||
- 单元测试:覆盖所有服务层方法
|
||||
- 集成测试:覆盖所有API接口
|
||||
- 测试场景包括:
|
||||
- 正常流程测试
|
||||
- 异常情况处理
|
||||
- 权限控制验证
|
||||
- 边界条件测试
|
||||
Reference in New Issue
Block a user