前端项目初始化提交
This commit is contained in:
180
题目管理 API 文档.md
Normal file
180
题目管理 API 文档.md
Normal file
@@ -0,0 +1,180 @@
|
||||
# 题目管理 API 文档
|
||||
|
||||
## 1. 上传文件并生成题目
|
||||
|
||||
**接口说明:** 上传文档文件,调用 AI 自动生成题目
|
||||
|
||||
**请求方式:** `POST`
|
||||
|
||||
**接口地址:** `/question/upload`
|
||||
|
||||
**Content-Type:** `multipart/form-data`
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| -------------- | ------ | ---- | --------------------------------------- |
|
||||
| file | File | 是 | 文档文件(支持 doc, docx, pdf, txt 等) |
|
||||
| customFileName | String | 否 | 自定义文件名(可选) |
|
||||
|
||||
### 响应示例
|
||||
|
||||
json { "code": 200, "message": "操作成功", "data": "=== AI 处理结果 ===\n用户: admin\n文件路径: /path/to/file.docx\n\nAI 处理状态: 成功\n说明: 这是占位返回,请替换为实际的 AI 接口调用", "timestamp": "2026-04-23 08:30:00", "success": true }
|
||||
|
||||
> **注意:** 目前 `callAIInterface` 方法是占位符,需要对接 Dify 工作流才能实现真正的题目生成功能。
|
||||
|
||||
---
|
||||
|
||||
## 2. 分页查询题目
|
||||
|
||||
**接口说明:** 根据条件分页查询题目列表
|
||||
|
||||
**请求方式:** `GET`
|
||||
|
||||
**接口地址:** `/question/page`
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|
||||
| ------------ | ------- | ---- | ------ | ------------------------------------------------------------ |
|
||||
| pageNum | Integer | 否 | 1 | 页码 |
|
||||
| pageSize | Integer | 否 | 10 | 每页大小 |
|
||||
| questionType | String | 否 | - | 题目类型:single_choice/multiple_choice/fill_blank/true_false/subjective |
|
||||
| difficulty | Integer | 否 | - | 难度等级(1-5) |
|
||||
| status | String | 否 | - | 审核状态:pending/approved/rejected |
|
||||
|
||||
### 响应示例
|
||||
|
||||
json { "code": 200, "message": "操作成功", "data": { "records": [ { "id": 21, "questionId": "q-001-sc-uuid-20260418", "questionType": "single_choice", "difficulty": 2, "tags": ["公司历史", "基本信息"], "score": 10.00, "version": "1.0", "documentId": "doc-001", "documentName": "公司介绍手册", "sourceContext": "根据文档第一段描述...", "pageNumbers": [1], "content": { "stem": "根据文档,公司成立的年份是?", "answer": "B", "explanation": "在文档第一页明确提到...", "data": { "options": [ {"key": "A", "content": "1998年"}, {"key": "B", "content": "2005年"}, {"key": "C", "content": "2010年"}, {"key": "D", "content": "2015年"} ] } }, "status": "pending", "reviewerComment": null, "createdAt": "2026-04-18 08:00:00", "updatedAt": "2026-04-18 00:49:27" } ], "total": 25, "size": 10, "current": 1, "pages": 3 }, "timestamp": "2026-04-23 08:30:00", "success": true }
|
||||
|
||||
---
|
||||
|
||||
## 3. 获取题目详情
|
||||
|
||||
**接口说明:** 根据题目 ID 获取详细信息
|
||||
|
||||
**请求方式:** `GET`
|
||||
|
||||
**接口地址:** `/question/{id}`
|
||||
|
||||
### 路径参数
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| ------ | ---- | ---- | ----------- |
|
||||
| id | Long | 是 | 题目自增 ID |
|
||||
|
||||
### 响应示例
|
||||
|
||||
json { "code": 200, "message": "操作成功", "data": { "id": 21, "questionId": "q-001-sc-uuid-20260418", "questionType": "single_choice", "difficulty": 2, "tags": ["公司历史", "基本信息"], "score": 10.00, "version": "1.0", "documentId": "doc-001", "documentName": "公司介绍手册", "sourceContext": "根据文档第一段描述...", "pageNumbers": [1], "content": {...}, "status": "pending", "reviewerComment": null, "createdAt": "2026-04-18 08:00:00", "updatedAt": "2026-04-18 00:49:27" }, "timestamp": "2026-04-23 08:30:00", "success": true }---
|
||||
|
||||
## 4. 获取待审核题目列表
|
||||
|
||||
**接口说明:** 获取所有待审核的题目
|
||||
|
||||
**请求方式:** `GET`
|
||||
|
||||
**接口地址:** `/question/pending`
|
||||
|
||||
### 响应示例
|
||||
|
||||
json { "code": 200, "message": "操作成功", "data": [ { "id": 21, "questionId": "q-001-sc-uuid-20260418", "questionType": "single_choice", "status": "pending", ... } ], "timestamp": "2026-04-23 08:30:00", "success": true }
|
||||
|
||||
---
|
||||
|
||||
## 5. 审核题目
|
||||
|
||||
**接口说明:** 审核通过或拒绝题目
|
||||
|
||||
**请求方式:** `PUT`
|
||||
|
||||
**接口地址:** `/question/review/{questionId}`
|
||||
|
||||
### 路径参数
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| ---------- | ------ | ---- | --------- |
|
||||
| questionId | String | 是 | 题目 UUID |
|
||||
|
||||
### 请求参数
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| --------------- | ------ | ---- | -------------------------------------------- |
|
||||
| status | String | 是 | 审核状态:approved(通过)/ rejected(拒绝) |
|
||||
| reviewerComment | String | 否 | 审核评论/意见 |
|
||||
|
||||
### 请求示例
|
||||
|
||||
PUT /question/review/q-001-sc-uuid-20260418?status=approved&reviewerComment=题目质量良好
|
||||
|
||||
### 响应示例
|
||||
|
||||
json { "code": 200, "message": "操作成功", "data": null, "timestamp": "2026-04-23 08:30:00", "success": true }
|
||||
|
||||
---
|
||||
|
||||
## 6. 按题型获取题目列表
|
||||
|
||||
**接口说明:** 获取指定题型的所有已审核通过的题目
|
||||
|
||||
**请求方式:** `GET`
|
||||
|
||||
**接口地址:** `/question/type/{questionType}`
|
||||
|
||||
### 路径参数
|
||||
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
| ------------ | ------ | ---- | ------------------------------------------------------------ |
|
||||
| questionType | String | 是 | 题目类型:single_choice/multiple_choice/fill_blank/true_false/subjective |
|
||||
|
||||
### 响应示例
|
||||
|
||||
json { "code": 200, "message": "操作成功", "data": [ { "id": 21, "questionId": "q-001-sc-uuid-20260418", "questionType": "single_choice", "status": "approved", ... } ], "timestamp": "2026-04-23 08:30:00", "success": true }
|
||||
|
||||
---
|
||||
|
||||
## 7. 获取所有题型列表
|
||||
|
||||
**接口说明:** 获取系统支持的所有题目类型
|
||||
|
||||
**请求方式:** `GET`
|
||||
|
||||
**接口地址:** `/question/types`
|
||||
|
||||
### 响应示例
|
||||
|
||||
json { "code": 200, "message": "操作成功", "data": [ "single_choice", "multiple_choice", "fill_blank", "true_false", "subjective" ], "timestamp": "2026-04-23 08:30:00", "success": true }
|
||||
|
||||
---
|
||||
|
||||
## 附录
|
||||
|
||||
### 题目类型说明
|
||||
|
||||
| 类型值 | 中文名称 | 说明 |
|
||||
| --------------- | -------- | ------------- |
|
||||
| single_choice | 选择题 | 单选题 |
|
||||
| multiple_choice | 多选题 | 多项选择题 |
|
||||
| fill_blank | 填空题 | 填空题目 |
|
||||
| true_false | 判断题 | 判断对错 |
|
||||
| subjective | 简答题 | 主观题/问答题 |
|
||||
|
||||
### 审核状态说明
|
||||
|
||||
| 状态值 | 中文名称 | 说明 |
|
||||
| -------- | -------- | -------------------- |
|
||||
| pending | 待审核 | AI 生成后的初始状态 |
|
||||
| approved | 已通过 | 审核通过,可对外展示 |
|
||||
| rejected | 已拒绝 | 审核不通过 |
|
||||
|
||||
### 注意事项
|
||||
|
||||
1. **题目生成接口目前未完全实现**,`uploadAndProcessFile` 方法中的 `callAIInterface` 是占位符,需要对接 Dify 工作流 API
|
||||
2. **按题型查询只返回已通过的题目**(status = "approved"),如需查看所有状态的题目,请使用分页查询接口并指定 status 参数
|
||||
3. **时间格式统一为** `yyyy-MM-dd HH:mm:ss`
|
||||
|
||||
# AIChat模块流式接口
|
||||
POST 'http://localhost:8080/api/ai/chat/stream' \
|
||||
-H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxIiwidXNlcm5hbWUiOiJhZG1pbiIsImlhdCI6MTc3NzAwODgxOCwiZXhwIjoxNzc3MDE2MDE4fQ.mrvapro3L_vzYPxRtZPcEDQFAE2kuvpeMBV1vWhI9ho7lJZq0CnBrL1ZkhwOnDiXOZltLjor6vvFkuEb-pGEtg' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"message": "三峡船闸是什么", "chat_history": []}' \
|
||||
-H 'Accept: text/event-stream'
|
||||
Reference in New Issue
Block a user