Appearance
培训考试系统 内部 API
题库、考试、阅卷、培训中心、刷题 / 复习、AI 模型 / 提示词等内部接口。
权限码为接口所需权限标识。
TrainAiModelController
- 基础路径:
/train/ai/model - 类级权限:
@ss.hasPermi('train:ai:model:list')
| 方法 | 路径 | 权限 | 说明 |
|---|---|---|---|
| GET | /train/ai/model/list | @ss.hasPermi('train:ai:model:list') | 查询AI模型配置列表 |
| GET | /train/ai/model/current | @ss.hasPermi('train:ai:model:list') | 查询当前生效的默认配置(供前端展示) |
| GET | /train/ai/model/{configId} | @ss.hasPermi('train:ai:model:query') | 获取AI模型配置详细信息 |
| POST | /train/ai/model | @ss.hasPermi('train:ai:model:add') | 新增AI模型配置 |
| PUT | /train/ai/model | @ss.hasPermi('train:ai:model:edit') | 修改AI模型配置 |
| DELETE | /train/ai/model/{configIds} | @ss.hasPermi('train:ai:model:remove') | 删除AI模型配置 |
| PUT | /train/ai/model/sort | @ss.hasPermi('train:ai:model:edit') | 拖动排序:按传入的有序模型ID列表重写提供方组内排序号(需同属一个提供方) |
| POST | /train/ai/model/test/{configId} | @ss.hasPermi('train:ai:model:test') | 测试模型连接 |
TrainAiModelProviderController
- 基础路径:
/train/ai/provider - 类级权限:
@ss.hasPermi('train:ai:model:list')
| 方法 | 路径 | 权限 | 说明 |
|---|---|---|---|
| GET | /train/ai/provider/list | @ss.hasPermi('train:ai:model:list') | 查询AI模型提供方列表 |
| GET | /train/ai/provider/{providerId} | @ss.hasPermi('train:ai:model:query') | 获取AI模型提供方详细信息 |
| POST | /train/ai/provider | @ss.hasPermi('train:ai:model:add') | 新增AI模型提供方 |
| PUT | /train/ai/provider | @ss.hasPermi('train:ai:model:edit') | 修改AI模型提供方(名称/地址/密钥/状态/备注;连接参数变更自动镜像其下模型) |
| DELETE | /train/ai/provider/{providerIds} | @ss.hasPermi('train:ai:model:remove') | 删除AI模型提供方 |
| PUT | /train/ai/provider/default/{providerId} | @ss.hasPermi('train:ai:model:default') | 设为默认提供方(其下排序第一的启用模型=系统默认模型) |
| POST | /train/ai/provider/fetch-models/{providerId} | @ss.hasPermi('train:ai:model:add') | 获取模型列表并批量导入(GET {base_url}/models,OpenAI 兼容规范) |
TrainAiPromptController
- 基础路径:
/train/ai/prompt - 类级权限:
@ss.hasPermi('train:ai:prompt:list')
| 方法 | 路径 | 权限 | 说明 |
|---|---|---|---|
| GET | /train/ai/prompt/list | @ss.hasPermi('train:ai:prompt:list') | 查询AI提示词列表 |
| GET | /train/ai/prompt/{promptId} | @ss.hasPermi('train:ai:prompt:query') | 获取AI提示词详细信息 |
| POST | /train/ai/prompt | @ss.hasPermi('train:ai:prompt:add') | 新增AI提示词 —— 给新接入的 AI 场景创建提示词。 |
| DELETE | /train/ai/prompt/{promptIds} | @ss.hasPermi('train:ai:prompt:remove') | 删除AI提示词(内置场景的提示词不可删除,只能修改或恢复默认) |
| PUT | /train/ai/prompt | @ss.hasPermi('train:ai:prompt:edit') | 修改AI提示词(含采样温度/最大token等参数) |
| PUT | /train/ai/prompt/reset/{promptCode} | @ss.hasPermi('train:ai:prompt:reset') | 恢复指定场景的内置默认提示词 |
TrainAnalysisController
- 基础路径:
/train/analysis - 类级权限:
@ss.hasPermi('train:practice:list')
| 方法 | 路径 | 权限 | 说明 |
|---|---|---|---|
| GET | /train/analysis/stream/{questionId} | @ss.hasPermi('train:practice:list') | 流式生成题目 AI 分析 |
TrainCategoryController
- 基础路径:
/train/category - 类级权限:
@ss.hasPermi('train:category:list')
| 方法 | 路径 | 权限 | 说明 |
|---|---|---|---|
| GET | /train/category/list | @ss.hasPermi('train:category:list') | 查询题库分类列表 |
| GET | /train/category/all | 查询全部启用分类(下拉选择用) | |
| GET | /train/category/{categoryId} | @ss.hasPermi('train:category:query') | 获取题库分类详细信息 |
| POST | /train/category | @ss.hasPermi('train:category:add') | 新增题库分类 |
| PUT | /train/category | @ss.hasPermi('train:category:edit') | 修改题库分类 |
| DELETE | /train/category/{categoryIds} | @ss.hasPermi('train:category:remove') | 删除题库分类 |
TrainCenterController
- 基础路径:
/train/center - 类级权限:
@ss.hasPermi('train:center:list')
| 方法 | 路径 | 权限 | 说明 |
|---|---|---|---|
| GET | /train/center/guide | @ss.hasPermi('train:center:list') | AI 生成引导问题(第一轮) |
| POST | /train/center/material | @ss.hasPermi('train:center:list') | 根据用户回答生成个性化培训资料(异步,返回生成中记录) |
| GET | /train/center/myList | @ss.hasPermi('train:center:list') | 我的培训资料列表 |
| GET | /train/center/material/{materialId} | @ss.hasPermi('train:center:list') | 培训资料详情 |
| DELETE | /train/center/material/{materialIds} | @ss.hasPermi('train:center:list') | 删除培训资料 |
| GET | /train/center/material/{materialId}/export | @ss.hasPermi('train:center:list') | 导出培训资料为 docx |
| GET | /train/center/material/{materialId}/exportPdf | @ss.hasPermi('train:center:list') | 导出培训资料为 PDF |
TrainExamController
- 基础路径:
/train/exam - 类级权限:
@ss.hasPermi('train:exam:list')
| 方法 | 路径 | 权限 | 说明 |
|---|---|---|---|
| GET | /train/exam/deptTree | @ss.hasPermi('train:exam:list') | 部门树(考试范围选择用,独立于系统管理权限) |
| GET | /train/exam/searchUser | @ss.hasPermi('train:exam:list') | 搜索用户(考试范围选择用,独立于系统管理权限) |
| GET | /train/exam/list | @ss.hasPermi('train:exam:list') | 查询考试列表 |
| GET | /train/exam/{examId} | @ss.hasPermi('train:exam:query') | 获取考试详细信息(校验题库可见性) |
| POST | /train/exam | @ss.hasPermi('train:exam:add') | 新增考试 |
| PUT | /train/exam | @ss.hasPermi('train:exam:edit') | 修改考试 |
| DELETE | /train/exam/{examIds} | @ss.hasPermi('train:exam:remove') | 删除考试 |
| POST | /train/exam/paper/{examId} | @ss.hasPermi('train:exam:paper') | 智能组卷 |
| POST | /train/exam/paper/manual/{examId} | @ss.hasPermi('train:exam:paper') | 自定义组卷(管理员从题库手动挑选题目) |
| GET | /train/exam/paper/{examId} | @ss.hasPermi('train:exam:query') | 查询考卷题目(预览) |
| POST | /train/exam/paper/{examId}/replace/{questionId} | @ss.hasPermi('train:exam:paper') | 手动换题 |
| PUT | /train/exam/paper/score | @ss.hasPermi('train:exam:paper') | 调整题目分值 |
| PUT | /train/exam/finish/{examId} | @ss.hasPermi('train:exam:status') | 手动结束考试 |
| PUT | /train/exam/reopen/{examId} | @ss.hasPermi('train:exam:status') | 恢复考试(取消手动结束) |
| GET | /train/exam/scoreList | @ss.hasPermi('train:exam:list') | 查询考试成绩列表(按考试查考生成绩) |
| GET | /train/exam/participants/{examId} | @ss.hasPermi('train:exam:list') | 考试参加情况(校验题库可见性) |
| POST | /train/exam/exportScore | @ss.hasPermi('train:exam:export') | 导出考试成绩 |
TrainGradingController
- 基础路径:
/train/grading - 类级权限:
@ss.hasPermi('train:grading:list')
| 方法 | 路径 | 权限 | 说明 |
|---|---|---|---|
| GET | /train/grading/examList | @ss.hasPermi('train:grading:list') | 阅卷可选考试列表(有考生交卷记录的考试,含参与人数,供下拉选择) |
| GET | /train/grading/recordList | @ss.hasPermi('train:grading:list') | 考生成绩列表(按考试) |
| GET | /train/grading/detail/{recordId} | @ss.hasPermi('train:grading:list') | 查看任意考生答卷详情(数据权限范围内可见) |
| POST | /train/grading/report/{recordId} | @ss.hasPermi('train:grading:list') | 触发生成考试宏观分析报告(异步) |
| PUT | /train/grading/score | @ss.hasPermi('train:grading:list') | 人工修改问答题得分(AI阅卷纠错,总分联动重算) |
| GET | /train/grading/report/{recordId} | @ss.hasPermi('train:grading:list') | 查询宏观分析报告状态与内容 |
| GET | /train/grading/myReport/{recordId} | @ss.hasPermi('train:record:list') | 我的宏观分析报告(用户端,从记录ID查询) |
| POST | /train/grading/myReport/{recordId} | @ss.hasPermi('train:record:list') | 用户为自己生成宏观分析报告(校验答卷归属本人) |
TrainPracticeController
- 基础路径:
/train/practice - 类级权限:
@ss.hasPermi('train:practice:list')
| 方法 | 路径 | 权限 | 说明 |
|---|---|---|---|
| GET | /train/practice/draw | @ss.hasPermi('train:practice:list') | 刷题抽题(不含答案;scope:all 全部 / new 仅未做过 / wrong 仅错题; |
| GET | /train/practice/scopeStats | @ss.hasPermi('train:practice:list') | 分类可刷题数量统计(范围选择提示:全部/未做过/错题,可限定题型/难度/知识点) |
| GET | /train/practice/knowledgePoints | @ss.hasPermi('train:practice:list') | 分类下知识点列表(筛选下拉用) |
| POST | /train/practice/submit | @ss.hasPermi('train:practice:list') | 提交刷题答案(返回对错与标准答案) |
| POST | /train/practice/aiJudge | @ss.hasPermi('train:practice:list') | 问答题 AI 判分(AI 依据参考答案评判作答,判错进错题/判对算已做过) |
| GET | /train/practice/reviewList | @ss.hasPermi('train:review:list') | 复习模式题目列表(含答案;scope:all 全部 / new 仅未做过 / wrong 仅错题; |
| POST | /train/practice/recordReview | @ss.hasPermi('train:review:list') | 记录复习浏览 |
| GET | /train/practice/question/{questionId} | @ss.hasPermi('train:practice:list') | 题目详情(复习/刷题共用,含答案) |
TrainQuestionController
- 基础路径:
/train/question - 类级权限:
@ss.hasPermi('train:question:list')
| 方法 | 路径 | 权限 | 说明 |
|---|---|---|---|
| GET | /train/question/list | @ss.hasPermi('train❓list') | 查询题目列表 |
| POST | /train/question/export | @ss.hasPermi('train❓export') | 导出题目列表 |
| GET | /train/question/{questionId} | @ss.hasPermi('train❓query') | 获取题目详细信息 |
| POST | /train/question | @ss.hasPermi('train❓add') | 新增题目 |
| PUT | /train/question | @ss.hasPermi('train❓edit') | 修改题目 |
| DELETE | /train/question/{questionIds} | @ss.hasPermi('train❓remove') | 删除题目 |
| POST | /train/question/parse | @ss.hasPermi('train❓import') | 上传 docx 题库文件并解析(返回预览,确认后导入) |
| POST | /train/question/import | @ss.hasPermi('train❓import') | 确认导入解析后的题目 |
| POST | /train/question/ai/generate | @ss.hasPermi('train❓add') | AI 辅助生成题目(异步任务,可传参考资料文本或 docx 文件) |
| POST | /train/question/ai/convert | @ss.hasPermi('train❓add') | AI 模板转换(异步任务):用户自定义模板(docx/文本)转为系统标准模板并入库 |
| GET | /train/question/ai/tasks | @ss.hasPermi('train❓add') | 我的 AI 出题任务列表(分页 + 状态筛选,刷新页面后仍可查看任务状态) |
| GET | /train/question/ai/task/{taskId} | @ss.hasPermi('train❓add') | AI 出题任务详情(前端轮询) |
| GET | /train/question/template | @ss.hasPermi('train❓import') | 下载题库模板 |
TrainRecordController
- 基础路径:
/train/record - 类级权限:
@ss.hasPermi('train:record:list')
| 方法 | 路径 | 权限 | 说明 |
|---|---|---|---|
| GET | /train/record/list | @ss.hasPermi('train:record:list') | 我的考试记录列表 |
| GET | /train/record/myExam | @ss.hasPermi('train:record:list') | 查询本人可参加的考试列表(进行中) |
| GET | /train/record/start/{examId} | @ss.hasPermi('train:record:list') | 开始考试(返回试卷) |
| GET | /train/record/draft/{examId} | @ss.hasPermi('train:record:list') | 获取未提交答卷(刷新恢复续答) |
| POST | /train/record/save/{examId} | @ss.hasPermi('train:record:list') | 实时保存答卷草稿(前端防抖自动保存,刷新/返回不丢答案) |
| POST | /train/record/submit/{examId} | @ss.hasPermi('train:record:list') | 提交答卷 |
| GET | /train/record/detail/{recordId} | @ss.hasPermi('train:record:list') | 答卷详情(本人) |
| GET | /train/record/gradingStatus/{recordId} | @ss.hasPermi('train:record:list') | 阅卷进度轮询 |
| DELETE | /train/record/{recordIds} | @ss.hasPermi('train:record:list') | 删除考试记录(本人) |
| POST | /train/record/regenAnalysis/{recordId} | @ss.hasPermi('train:record:list') | 重新生成本人答卷的错题AI分析(清空失败占位后异步重跑) |
TrainStatController
- 基础路径:
/train/stat
| 方法 | 路径 | 权限 | 说明 |
|---|---|---|---|
| POST | /train/stat/overview | 统计大屏全部数据(一次返回,支持全局部门/季度筛选 + 各图表独立分类筛选) | |
| GET | /train/stat/detail | 图表下钻明细(分页,随数据权限) |