guoyu/_已清理文件备份_周六 22512/md/考核模块接口文档.md
2025-12-06 20:11:36 +08:00

8.6 KiB
Raw Blame History

考核模块接口文档

1. 考试管理接口

1.1 查询考试列表

  • 接口URL: /study/exam/list
  • 请求方式: GET
  • 权限要求: study:exam:list
  • 请求参数:
    {
      "pageNum": 1,
      "pageSize": 10,
      "examName": "考试名称(可选)",
      "subjectId": "科目ID可选",
      "status": "状态0-草稿1-已发布2-已结束,可选)"
    }
    
  • 响应示例:
    {
      "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
  • 响应示例:
    {
      "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
  • 权限要求: 无(学生端)
  • 响应示例:
    {
      "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
  • 请求参数:
    {
      "examName": "数学期中考试",
      "subjectId": 1,
      "duration": 120,
      "totalScore": 100.0
    }
    
  • 响应示例:
    {
      "code": 200,
      "msg": "操作成功"
    }
    

1.5 修改考试

  • 接口URL: /study/exam
  • 请求方式: PUT
  • 权限要求: study:exam:edit
  • 请求参数: 同新增考试

1.6 删除考试

  • 接口URL: /study/exam/{ids}
  • 请求方式: DELETE
  • 权限要求: study:exam:remove
  • 响应示例:
    {
      "code": 200,
      "msg": "操作成功"
    }
    

1.7 发布考试

  • 接口URL: /study/exam/publish/{id}
  • 请求方式: PUT
  • 权限要求: study:exam:edit
  • 响应示例:
    {
      "code": 200,
      "msg": "操作成功"
    }
    

1.8 AI生成题目

  • 接口URL: /study/exam/ai/generate-questions
  • 请求方式: POST
  • 权限要求: study:exam:edit
  • 请求参数:
    {
      "subjectId": 1,
      "questionCounts": {
        "single": 10,
        "multiple": 5,
        "judge": 5,
        "fill": 3,
        "essay": 2
      }
    }
    
  • 响应示例:
    {
      "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
  • 请求参数:
    [
      {
        "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
  • 请求参数:
    {
      "pageNum": 1,
      "pageSize": 10,
      "examId": "考试ID可选",
      "studentId": "学生ID可选",
      "status": "状态(可选)"
    }
    
  • 响应示例:
    {
      "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
  • 权限要求: 无
  • 响应示例:
    {
      "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
  • 权限要求: 无(学生端)
  • 请求参数:
    {
      "examId": 1,
      "answers": [
        {
          "questionId": 1,
          "answer": "2"
        },
        {
          "questionId": 2,
          "answer": "A,B"
        }
      ],
      "duration": 115
    }
    
  • 响应示例:
    {
      "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()
  • 函数签名:
    public AjaxResult generateQuestionsByAI(@RequestBody Map<String, Object> params)
    
  • 参数说明:
    • subjectId: 科目IDLong
    • questionCounts: 各题型题量Map<String, Integer>
      • 题型single/multiple/judge/fill/essay
      • 值:题量
  • 返回值: 题目列表List
  • 接入方式: 替换TODO注释处的代码调用实际AI API

3.2 AI自动打分API

  • 位置: StudyScoreController.submitAnswer()
  • 函数签名:
    public AjaxResult submitAnswer(@RequestBody Map<String, Object> params)
    
  • 参数说明:
    • examId: 考试IDLong
    • studentAnswers: 学生答题数据List
  • 返回值: 打分结果Map<String, Object>
    {
      "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: 已评分