- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
3.7 KiB
3.7 KiB
前后端接口约定
基础规范
请求格式
- Base URL:
http://localhost:8000(开发) /https://aiedu.ireborn.com.cn(生产) - Content-Type:
application/json - 认证:
Authorization: Bearer <jwt_token>响应格式
{
"code": 200,
"message": "success",
"data": {}
}
状态码
200: 成功400: 参数错误401: 未认证403: 权限不足404: 资源不存在500: 服务器错误
核心接口
1. 认证模块 /api/v1/auth
登录
POST /api/v1/auth/login
{
"username": "string",
"password": "string"
}
注册
POST /api/v1/auth/register
{
"username": "string",
"email": "string",
"password": "string",
"name": "string"
}
刷新Token
POST /api/v1/auth/refresh
{
"refresh_token": "string"
}
2. 用户模块 /api/v1/users
用户列表
GET /api/v1/users?page=1&size=10&keyword=string
当前用户
GET /api/v1/users/me
更新用户
PUT /api/v1/users/{id}
{
"name": "string",
"email": "string"
}
3. 课程模块 /api/v1/courses
课程列表
GET /api/v1/courses?page=1&size=10&category=string
课程详情
GET /api/v1/courses/{id}
课程材料
GET /api/v1/courses/{id}/materials
4. 考试模块 /api/v1/exams
开始考试
POST /api/v1/exams/dynamic/start
{
"courseId": 1,
"totalRounds": 10
}
提交答案
POST /api/v1/exams/dynamic/submit
{
"sessionId": "string",
"questionId": "string",
"answer": "string"
}
考试记录
GET /api/v1/exams/records?page=1&size=10
5. 陪练模块 /api/v1/training
陪练场景
GET /api/v1/training-scenes
开始陪练
POST /api/v1/training/start
{
"sceneId": 1
}
陪练记录
GET /api/v1/training-records?page=1&size=10
WebSocket陪练
WS /ws/v1/training/{sessionId}
6. 分析模块 /api/v1/analytics
系统概览
GET /api/v1/analytics/overview?timeRange=30d
能力雷达图
GET /api/v1/analytics/ability-radar?userId=1
数据结构
用户信息
{
"id": 1,
"username": "string",
"email": "string",
"name": "string",
"role": "admin|manager|trainee",
"status": "active|inactive"
}
课程信息
{
"id": 1,
"title": "string",
"description": "string",
"category": "string",
"difficulty": "beginner|intermediate|advanced",
"duration": 60,
"progress": 0,
"status": "published|draft"
}
考试题目
{
"id": "string",
"type": "single|multiple|judge|fill",
"content": "string",
"options": [{"id": "A", "content": "string"}],
"score": 10
}
陪练场景
{
"id": 1,
"name": "string",
"description": "string",
"category": "string",
"difficulty": "easy|medium|hard",
"status": "active|inactive"
}
分页格式
请求参数
page: 页码 (从1开始)size: 每页数量 (默认10)
响应格式
{
"code": 200,
"message": "success",
"data": {
"items": [],
"total": 100,
"page": 1,
"size": 10
}
}
文件上传
POST /api/v1/upload
Content-Type: multipart/form-data
file: <binary>
type: "avatar|course-cover|material"
响应:
{
"code": 200,
"message": "success",
"data": {
"url": "string",
"filename": "string"
}
}
错误格式
{
"code": 400,
"message": "参数错误",
"data": null,
"errors": [
{
"field": "email",
"message": "邮箱格式不正确"
}
]
}