题目接口
题目模块提供题目的增删改查、AI 生成、AI 解题、答案提交等功能,挂载于 /api/questions。所有接口均需认证。
获取题目列表
GET /api/questions
获取公开题目及当前用户创建的题目,支持多条件筛选和分页。
Query 参数
| 参数 | 类型 | 说明 |
|---|---|---|
subject | string | 按科目筛选(如:数学) |
topic | string | 按知识点模糊搜索 |
difficulty | string | easy / medium / hard |
type | string | multiple_choice / fill_blank / short_answer / essay / calculation |
search | string | 标题和内容全文搜索 |
page | number | 页码,默认 1 |
limit | number | 每页数量,默认 20 |
成功响应 200
{
"success": true,
"data": {
"questions": [
{
"id": "uuid",
"title": "一元二次方程求根",
"content": "解方程:x² - 5x + 6 = 0",
"subject": "数学",
"grade": "高中一年级",
"topic": "一元二次方程",
"difficulty": "medium",
"question_type": "calculation",
"options": null,
"correct_answer": "x=2 或 x=3",
"explanation": "...",
"tags": ["因式分解", "求根公式"],
"is_public": 1,
"creator_name": "张三",
"created_at": "2024-01-15T08:00:00.000Z"
}
],
"total": 100,
"page": 1,
"limit": 20
}
}
获取单道题目
GET /api/questions/:id
AI 生成题目
POST /api/questions/generate
🤖 AI · 限速 20次/分钟
调用 AI 生成符合指定条件的题目,并自动保存到题库。每次最多生成 10 道。
请求体
{
"subject": "数学", // 必填
"topic": "二次函数", // 必填
"difficulty": "medium", // 可选,默认 medium
"questionType": "multiple_choice", // 可选,默认 multiple_choice
"count": 3, // 可选,默认 1,最大 10
"grade": "高中一年级" // 可选
}
成功响应 200
{
"success": true,
"message": "成功生成3道题目",
"data": {
"ids": ["uuid1", "uuid2", "uuid3"],
"questions": [
{
"title": "二次函数顶点坐标",
"content": "二次函数 y=x²-4x+3 的顶点坐标是?",
"options": ["A. (2,1)", "B. (2,-1)", "C. (-2,1)", "D. (-2,-1)"],
"correct_answer": "B. (2,-1)",
"explanation": "配方法:y=(x-2)²-1,顶点为(2,-1)...",
"tags": ["顶点坐标", "配方法"]
}
]
}
}
提交答案
POST /api/questions/:id/submit
🤖 AI 批改
提交答案后,AI 实时批改,并自动更新知识点掌握度和每日统计。
请求体
{
"answer": "B. (2,-1)", // 学生答案
"timeSpent": 45 // 可选,答题秒数
}
成功响应 200
{
"success": true,
"data": {
"recordId": "uuid",
"isCorrect": true,
"score": 95,
"feedback": "回答正确!你准确运用了配方法找到顶点...",
"correctAnswer": "B. (2,-1)",
"explanation": "配方法:y=(x-2)²-1,顶点为(2,-1)..."
}
}
AI 解题
POST /api/questions/:id/solve
🤖 AI · 限速 20次/分钟
对指定题目调用 AI 生成详细解题过程,不需要请求体。
成功响应 200
{
"success": true,
"data": {
"solution": "## 解题过程\n\n**方法一:配方法**\n\ny = x² - 4x + 3\n= (x² - 4x + 4) - 4 + 3\n= (x-2)² - 1\n\n因此顶点为 **(2, -1)**...",
"keyPoints": ["配方法", "顶点式", "对称轴计算"]
}
}
手动创建题目
POST /api/questions
请求体
{
"title": "牛顿第二定律应用", // 必填
"content": "一个质量为2kg的物体...", // 必填
"subject": "物理", // 必填
"correctAnswer": "F=4N", // 必填
"explanation": "根据F=ma...", // 必填
"grade": "高中一年级", // 可选
"topic": "牛顿定律", // 可选
"difficulty": "medium", // 可选
"questionType": "calculation", // 可选
"options": null, // 选择题时填写
"tags": ["牛顿第二定律"], // 可选
"source": "人教版教材" // 可选
}
从文本提取题目
POST /api/questions/extract
🤖 AI
请求体
{
"text": "1. 下列说法正确的是...\nA. 选项1\nB. 选项2\n答案:A",
"subject": "物理"
}
更新题目
PUT /api/questions/:id
只有题目的创建者可以修改。请求体字段与创建题目相同。
删除题目
DELETE /api/questions/:id
只有题目的创建者可以删除。
成功响应 200
{ "success": true, "message": "删除成功" }