guoyu/log/考核模块接口文档.md

404 lines
8.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 考核模块接口文档
## 1. 考试管理接口
### 1.1 查询考试列表
- **接口URL**: `/study/exam/list`
- **请求方式**: `GET`
- **权限要求**: `study:exam:list`
- **请求参数**:
```json
{
"pageNum": 1,
"pageSize": 10,
"examName": "考试名称(可选)",
"subjectId": "科目ID可选",
"status": "状态0-草稿1-已发布2-已结束,可选)"
}
```
- **响应示例**:
```json
{
"code": 200,
"msg": "操作成功",
"rows": [
{
"id": 1,
"examName": "数学期中考试",
"subjectId": 1,
"subjectName": "数学",
"questionCount": 20,
"duration": 120,
"totalScore": 100.0,
"status": "1",
"publishTime": "2024-01-01 10:00:00",
"createTime": "2024-01-01 09:00:00"
}
],
"total": 1
}
```
### 1.2 查询考试详情
- **接口URL**: `/study/exam/{id}`
- **请求方式**: `GET`
- **权限要求**: `study:exam:query`
- **响应示例**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"id": 1,
"examName": "数学期中考试",
"subjectId": 1,
"subjectName": "数学",
"questionCount": 20,
"duration": 120,
"totalScore": 100.0,
"status": "1",
"questions": [
{
"id": 1,
"questionType": "single",
"questionContent": "1+1等于多少",
"options": "[\"1\", \"2\", \"3\", \"4\"]",
"correctAnswer": "2",
"score": 5.0
}
]
}
}
```
### 1.3 获取考试题目(学生端)
- **接口URL**: `/study/exam/{id}/questions`
- **请求方式**: `GET`
- **权限要求**: 无(学生端)
- **响应示例**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"exam": {
"id": 1,
"examName": "数学期中考试",
"subjectName": "数学",
"duration": 120,
"totalScore": 100.0
},
"questions": [
{
"id": 1,
"questionType": "single",
"questionContent": "1+1等于多少",
"options": "[\"1\", \"2\", \"3\", \"4\"]",
"score": 5.0
}
]
}
}
```
- **说明**: 此接口不返回正确答案,仅用于学生答题
### 1.4 新增考试
- **接口URL**: `/study/exam`
- **请求方式**: `POST`
- **权限要求**: `study:exam:add`
- **请求参数**:
```json
{
"examName": "数学期中考试",
"subjectId": 1,
"duration": 120,
"totalScore": 100.0
}
```
- **响应示例**:
```json
{
"code": 200,
"msg": "操作成功"
}
```
### 1.5 修改考试
- **接口URL**: `/study/exam`
- **请求方式**: `PUT`
- **权限要求**: `study:exam:edit`
- **请求参数**: 同新增考试
### 1.6 删除考试
- **接口URL**: `/study/exam/{ids}`
- **请求方式**: `DELETE`
- **权限要求**: `study:exam:remove`
- **响应示例**:
```json
{
"code": 200,
"msg": "操作成功"
}
```
### 1.7 发布考试
- **接口URL**: `/study/exam/publish/{id}`
- **请求方式**: `PUT`
- **权限要求**: `study:exam:edit`
- **响应示例**:
```json
{
"code": 200,
"msg": "操作成功"
}
```
### 1.8 AI生成题目
- **接口URL**: `/study/exam/ai/generate-questions`
- **请求方式**: `POST`
- **权限要求**: `study:exam:edit`
- **请求参数**:
```json
{
"subjectId": 1,
"questionCounts": {
"single": 10,
"multiple": 5,
"judge": 5,
"fill": 3,
"essay": 2
}
}
```
- **响应示例**:
```json
{
"code": 200,
"msg": "操作成功",
"data": [
{
"questionType": "single",
"questionContent": "1+1等于多少",
"options": "[\"1\", \"2\", \"3\", \"4\"]",
"correctAnswer": "2",
"score": 5.0
}
]
}
```
- **说明**: 此处接入AI题目生成API需要替换为实际API地址
### 1.9 保存题目
- **接口URL**: `/study/exam/{examId}/questions`
- **请求方式**: `POST`
- **权限要求**: `study:exam:edit`
- **请求参数**:
```json
[
{
"questionType": "single",
"questionContent": "1+1等于多少",
"options": "[\"1\", \"2\", \"3\", \"4\"]",
"correctAnswer": "2",
"score": 5.0,
"sortOrder": 1
}
]
```
## 2. 成绩管理接口
### 2.1 查询成绩列表
- **接口URL**: `/study/score/list`
- **请求方式**: `GET`
- **权限要求**: `study:score:list`
- **请求参数**:
```json
{
"pageNum": 1,
"pageSize": 10,
"examId": "考试ID可选",
"studentId": "学生ID可选",
"status": "状态(可选)"
}
```
- **响应示例**:
```json
{
"code": 200,
"msg": "操作成功",
"rows": [
{
"id": 1,
"examId": 1,
"examName": "数学期中考试",
"studentId": 100,
"studentName": "张三",
"studentNo": "2024001",
"totalScore": 100.0,
"obtainedScore": 85.0,
"submitTime": "2024-01-01 12:00:00",
"duration": 115,
"status": "2"
}
],
"total": 1
}
```
### 2.2 查询成绩详情
- **接口URL**: `/study/score/{id}`
- **请求方式**: `GET`
- **权限要求**: 无
- **响应示例**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"id": 1,
"examId": 1,
"examName": "数学期中考试",
"studentId": 100,
"studentName": "张三",
"totalScore": 100.0,
"obtainedScore": 85.0,
"submitTime": "2024-01-01 12:00:00",
"duration": 115,
"status": "2",
"answerDetails": [
{
"id": 1,
"questionId": 1,
"questionContent": "1+1等于多少",
"studentAnswer": "2",
"correctAnswer": "2",
"isCorrect": "1",
"score": 5.0,
"questionScore": 5.0
}
]
}
}
```
### 2.3 获取当前学生的成绩列表
- **接口URL**: `/study/score/my-scores`
- **请求方式**: `GET`
- **权限要求**: 无(学生端)
- **响应示例**: 同查询成绩列表
### 2.4 提交答题结果
- **接口URL**: `/study/score/submit`
- **请求方式**: `POST`
- **权限要求**: 无(学生端)
- **请求参数**:
```json
{
"examId": 1,
"answers": [
{
"questionId": 1,
"answer": "2"
},
{
"questionId": 2,
"answer": "A,B"
}
],
"duration": 115
}
```
- **响应示例**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"totalScore": 100.0,
"obtainedScore": 85.0,
"answerDetails": [
{
"questionId": 1,
"isCorrect": "1",
"score": 5.0
}
]
}
}
```
- **说明**: 此处接入AI自动打分API需要替换为实际API地址
## 3. AI API 接入点说明
### 3.1 AI题目生成API
- **位置**: `StudyExamController.generateQuestionsByAI()`
- **函数签名**:
```java
public AjaxResult generateQuestionsByAI(@RequestBody Map<String, Object> params)
```
- **参数说明**:
- `subjectId`: 科目IDLong
- `questionCounts`: 各题型题量Map<String, Integer>
-题型single/multiple/judge/fill/essay
- 值:题量
- **返回值**: 题目列表List<StudyQuestion>
- **接入方式**: 替换TODO注释处的代码调用实际AI API
### 3.2 AI自动打分API
- **位置**: `StudyScoreController.submitAnswer()`
- **函数签名**:
```java
public AjaxResult submitAnswer(@RequestBody Map<String, Object> params)
```
- **参数说明**:
- `examId`: 考试IDLong
- `studentAnswers`: 学生答题数据List<StudyStudentAnswer>
- **返回值**: 打分结果Map<String, Object>
```json
{
"totalScore": 100.0,
"obtainedScore": 85.0,
"answerDetails": [
{
"questionId": 1,
"isCorrect": "1",
"score": 5.0
}
]
}
```
- **接入方式**: 替换TODO注释处的代码调用实际AI API
## 4. 错误码说明
| 错误码 | 说明 |
|--------|------|
| 200 | 操作成功 |
| 401 | 未登录或登录已过期 |
| 403 | 无权限访问 |
| 500 | 服务器内部错误 |
## 5. 题型说明
| 题型代码 | 说明 | 选项格式 |
|---------|------|---------|
| single | 单选题 | JSON数组["选项A", "选项B", "选项C", "选项D"] |
| multiple | 多选题 | JSON数组答案用逗号分隔"A,B" |
| judge | 判断题 | 答案:"正确" 或 "错误" |
| fill | 填空题 | 文本答案 |
| essay | 简答题 | 文本答案 |
## 6. 状态说明
### 考试状态
- `0`: 草稿
- `1`: 已发布
- `2`: 已结束
### 成绩状态
- `0`: 未提交
- `1`: 已提交
- `2`: 已评分