Files
Nexus_Edu/API_BCK
2025-11-28 19:23:19 +08:00

481 lines
14 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# EduNexus 前端组件API接口文档
## 按组件类型分类的API接口
### 1. 认证相关组件 (Auth Components)
#### LoginForm组件
- **前端服务**: `authService`
- **API调用**: `login(username: string)`
- **后端文件**: `auth.controller.ts`
- **接口**: `POST /api/auth/login`
- **参数**: username, password
- **说明**: 用户登录
#### RegisterForm组件
- **前端服务**: `authService`
- **API调用**: `register(data: RegisterDto)`
- **后端文件**: `auth.controller.ts`
- **接口**: `POST /api/auth/register`
- **参数**: realName, email, phone, password, gender
- **说明**: 用户注册
#### UserProfile组件
- **前端服务**: `authService`
- **API调用**:
- `me()`
- `updateProfile(data: UpdateProfileDto)`
- `changePassword(data: ChangePasswordDto)`
- **后端文件**: `auth.controller.ts`
- **接口**:
- `GET /api/auth/me`
- `PUT /api/auth/profile`
- `POST /api/auth/change-password`
- **说明**: 获取用户信息、更新用户资料、修改密码
### 2. 仪表板组件 (Dashboard Components)
#### TeacherDashboard组件
- **前端服务**:
- `analyticsService`
- `commonService`
- **API调用**:
- `getClassPerformance()`
- `getRadar()`
- `getScoreDistribution()`
- `getSchedule()`
- `getTeacherStats()`
- **后端文件**:
- `analytics.controller.ts`
- `common.controller.ts`
- **接口**:
- `GET /api/analytics/class-performance`
- `GET /api/analytics/radar`
- `GET /api/analytics/score-distribution`
- `GET /api/schedule`
- `GET /api/analytics/teacher-stats`
- **说明**: 获取教师统计数据、班级表现、知识图谱、成绩分布、课表
#### StudentDashboard组件
- **前端服务**:
- `analyticsService`
- `commonService`
- **API调用**:
- `getStudentGrowth()`
- `getStudentRadar()`
- `getSchedule()`
- **后端文件**:
- `analytics.controller.ts`
- `common.controller.ts`
- **接口**:
- `GET /api/analytics/student-growth`
- `GET /api/analytics/student-radar`
- `GET /api/schedule`
- **说明**: 获取学生成长数据、学生能力雷达图、课表
### 3. 作业管理组件 (Assignment Components)
#### TeacherAssignmentList组件
- **前端服务**: `assignmentService`
- **API调用**: `getTeachingAssignments()`
- **后端文件**: `assignment.controller.ts`
- **接口**: `GET /api/assignments/teaching`
- **参数**: 无
- **说明**: 获取教师发布的作业列表
#### StudentAssignmentList组件
- **前端服务**: `assignmentService`
- **API调用**: `getStudentAssignments()`
- **后端文件**: `assignment.controller.ts`
- **接口**: `GET /api/assignments/learning`
- **参数**: 无
- **说明**: 获取学生需要完成的作业列表
#### CreateAssignmentModal组件
- **前端服务**: `assignmentService`
- **API调用**: `publishAssignment(data: any)`
- **后端文件**: `assignment.controller.ts`
- **接口**: `POST /api/assignments`
- **参数**: examId, classId, title, startTime, endTime, allowLateSubmission, autoScoreEnabled
- **说明**: 创建并发布作业
#### AssignmentStats组件
- **前端服务**: `assignmentService`
- **API调用**: `getAssignmentStats(id: string)`
- **后端文件**: `assignment.controller.ts`
- **接口**: `GET /api/assignments/:id/stats`
- **参数**: assignmentId
- **说明**: 获取作业统计数据
### 4. 考试管理组件 (Exam Components)
#### ExamEditor组件
- **前端服务**:
- `examService`
- `questionService`
- **API调用**:
- `getExamDetail(id: string)`
- `saveExam(exam: ExamDetailDto)`
- `search(filter: any)`
- **后端文件**:
- `exam.controller.ts`
- `question.controller.ts`
- **接口**:
- `GET /api/exams/:id`
- `PUT /api/exams/:id/structure`
- `POST /api/questions/search`
- **说明**: 获取考试详情、保存考试结构、搜索题目
#### ExamList组件
- **前端服务**: `examService`
- **API调用**: `getMyExams()`
- **后端文件**: `exam.controller.ts`
- **接口**: `GET /api/exams`
- **参数**: subjectId, status
- **说明**: 获取我的考试列表
#### ExamStats组件
- **前端服务**: `examService`
- **API调用**: `getStats(id: string)`
- **后端文件**: `exam.controller.ts`
- **接口**: `GET /api/exams/:id/stats`
- **参数**: examId
- **说明**: 获取考试统计数据
### 5. 批改管理组件 (Grading Components)
#### GradingBoard组件
- **前端服务**: `gradingService`
- **API调用**:
- `getSubmissions(assignmentId: string)`
- `getPaper(submissionId: string)`
- `submitGrade(data: any)`
- **后端文件**: `grading.controller.ts`
- **接口**:
- `GET /api/grading/:assignmentId/list`
- `GET /api/grading/submissions/:submissionId`
- `POST /api/grading/submissions/:submissionId`
- **说明**: 获取作业提交列表、获取答卷详情、提交批改结果
#### SubmissionSidebar组件
- **前端服务**: `gradingService`
- **API调用**: `getSubmissions(assignmentId: string)`
- **后端文件**: `grading.controller.ts`
- **接口**: `GET /api/grading/:assignmentId/list`
- **参数**: assignmentId
- **说明**: 获取作业提交列表
### 6. 学生考试组件 (Student Exam Components)
#### StudentExamRunner组件
- **前端服务**: `submissionService`
- **API调用**:
- `getStudentPaper(assignmentId: string)`
- `submitExam(data: SubmitExamDto)`
- **后端文件**: `submission.controller.ts`
- **接口**:
- `GET /api/submissions/:assignmentId/paper`
- `POST /api/submissions/:assignmentId/submit`
- **说明**: 获取学生答题卡、提交答案
#### StudentResult组件
- **前端服务**: `submissionService`
- **API调用**: `getSubmissionResult(assignmentId: string)`
- **后端文件**: `submission.controller.ts`
- **接口**: `GET /api/submissions/:submissionId/result`
- **参数**: submissionId
- **说明**: 查看考试结果
### 7. 题库管理组件 (Question Components)
#### QuestionCard组件
- **前端服务**: `questionService`
- **API调用**: `search(filter: any)`
- **后端文件**: `question.controller.ts`
- **接口**: `POST /api/questions/search`
- **参数**: subjectId, questionType, difficulty, keyword, createdBy, sortBy, page, pageSize
- **说明**: 搜索题目
#### QuestionModal组件
- **前端服务**: `questionService`
- **API调用**:
- `create(data: any)`
- `update(id: string, data: any)`
- `delete(id: string)`
- **后端文件**: `question.controller.ts`
- **接口**:
- `POST /api/questions`
- `PUT /api/questions/:id`
- `DELETE /api/questions/:id`
- **说明**: 创建、更新、删除题目
#### SubjectSelector组件
- **前端服务**: `curriculumService`
- **API调用**: `getSubjects()`
- **后端文件**: `curriculum.controller.ts`
- **接口**: `GET /api/curriculum/subjects`
- **参数**: 无
- **说明**: 获取学科列表
### 8. 课程管理组件 (Curriculum Components)
#### KnowledgeGraph组件
- **前端服务**: `curriculumService`
- **API调用**: `getTree(id: string)`
- **后端文件**: `curriculum.controller.ts`
- **接口**: `GET /api/curriculum/textbooks/:id/tree`
- **参数**: id (textbookId或subjectId)
- **说明**: 获取教材知识树结构
#### TextbookModal组件
- **前端服务**: `curriculumService`
- **API调用**:
- `getTextbooksBySubject(subjectId: string)`
- `createTextbook(data: any)`
- `updateTextbook(id: string, data: any)`
- `deleteTextbook(id: string)`
- **后端文件**: `curriculum.controller.ts`
- **接口**:
- `GET /api/curriculum/subjects/:id/textbooks`
- `POST /api/curriculum/textbooks`
- `PUT /api/curriculum/textbooks/:id`
- `DELETE /api/curriculum/textbooks/:id`
- **说明**: 获取教材列表、创建、更新、删除教材
#### TreeNode组件
- **前端服务**: `curriculumService`
- **API调用**: `getTree(id: string)`
- **后端文件**: `curriculum.controller.ts`
- **接口**: `GET /api/curriculum/textbooks/:id/tree`
- **参数**: id
- **说明**: 获取课程树结构
### 9. 班级管理组件 (Class Components)
#### ClassCard组件
- **前端服务**: `orgService`
- **API调用**: `getClasses(role?: string)`
- **后端文件**: `org.controller.ts`
- **接口**: `GET /api/org/classes`
- **参数**: role
- **说明**: 获取我的班级列表
#### CreateClassModal组件
- **前端服务**: `orgService`
- **API调用**: `createClass(data: CreateClassDto)`
- **后端文件**: `org.controller.ts`
- **接口**: `POST /api/org/classes`
- **参数**: name, gradeId
- **说明**: 创建新班级
#### JoinClassModal组件
- **前端服务**: `orgService`
- **API调用**: `joinClass(inviteCode: string)`
- **后端文件**: `org.controller.ts`
- **接口**: `POST /api/org/classes/join`
- **参数**: inviteCode
- **说明**: 通过邀请码加入班级
#### ClassAnalysis组件
- **前端服务**: `orgService`
- **API调用**: `getClassMembers(classId: string)`
- **后端文件**: `org.controller.ts`
- **接口**: `GET /api/org/classes/:id/members`
- **参数**: classId
- **说明**: 获取班级成员列表
### 10. 消息组件 (Message Components)
#### CreateMessageModal组件
- **前端服务**: `messageService`
- **API调用**:
- `getMessages()`
- `createMessage(data: CreateMessageDto)`
- **后端文件**: `common.controller.ts`
- **接口**:
- `GET /api/messages`
- `POST /api/messages`
- **说明**: 获取消息列表、创建消息
#### NotificationList组件
- **前端服务**: `messageService`
- **API调用**: `getMessages()`
- **后端文件**: `common.controller.ts`
- **接口**: `GET /api/messages`
- **参数**: 无
- **说明**: 获取消息列表
### 11. 日程组件 (Schedule Components)
#### Timetable组件
- **前端服务**: `scheduleService`
- **API调用**: `getWeekSchedule()`
- **后端文件**: `common.controller.ts`
- **接口**: `GET /api/schedule`
- **参数**: 无
- **说明**: 获取周日程
#### EventModal组件
- **前端服务**: `scheduleService`
- **API调用**:
- `addEvent(data: CreateScheduleDto)`
- `deleteEvent(id: string)`
- **后端文件**: `common.controller.ts`
- **接口**:
- `POST /api/schedule`
- `DELETE /api/schedule/:id`
- **说明**: 添加日程、删除日程
### 12. 设置组件 (Settings Components)
#### ProfileSettings组件
- **前端服务**: `authService`
- **API调用**: `updateProfile(data: UpdateProfileDto)`
- **后端文件**: `auth.controller.ts`
- **接口**: `PUT /api/auth/profile`
- **参数**: realName, avatarUrl, bio, gender
- **说明**: 更新用户资料
#### SecuritySettings组件
- **前端服务**: `authService`
- **API调用**: `changePassword(data: ChangePasswordDto)`
- **后端文件**: `auth.controller.ts`
- **接口**: `POST /api/auth/change-password`
- **参数**: oldPassword, newPassword
- **说明**: 修改密码
## 未使用但可能需要的API
### 1. 用户管理
- **前端服务**: `authService`
- **API调用**: `updateProfile(data: UpdateProfileDto)`
- **后端文件**: `auth.controller.ts`
- **接口**: `PUT /api/auth/profile`
- **参数**: realName, avatarUrl, bio, gender
- **说明**: 更新用户资料
- **使用状态**: 已在ProfileSettings组件中使用
### 2. 密码管理
- **前端服务**: `authService`
- **API调用**: `changePassword(data: ChangePasswordDto)`
- **后端文件**: `auth.controller.ts`
- **接口**: `POST /api/auth/change-password`
- **参数**: oldPassword, newPassword
- **说明**: 修改密码
- **使用状态**: 已在SecuritySettings组件中使用
### 3. 知识点管理
- **前端服务**: `curriculumService`
- **API调用**: `createKnowledgePoint(data: any)`
- **后端文件**: `curriculum.controller.ts`
- **接口**: `POST /api/curriculum/knowledge-points`
- **参数**: lessonId, name, difficulty, description
- **说明**: 创建知识点
- **使用状态**: 未在前端组件中直接使用
### 4. 课时管理
- **前端服务**: `curriculumService`
- **API调用**: `createLesson(data: any)`
- **后端文件**: `curriculum.controller.ts`
- **接口**: `POST /api/curriculum/lessons`
- **参数**: unitId, name, sortOrder
- **说明**: 创建课时
- **使用状态**: 未在前端组件中直接使用
### 5. 单元管理
- **前端服务**: `curriculumService`
- **API调用**: `createUnit(data: any)`
- **后端文件**: `curriculum.controller.ts`
- **接口**: `POST /api/curriculum/units`
- **参数**: textbookId, name, sortOrder
- **说明**: 创建单元
- **使用状态**: 未在前端组件中直接使用
### 6. 消息管理
- **前端服务**: `messageService`
- **API调用**: `markAsRead(id: string)`
- **后端文件**: `common.controller.ts`
- **接口**: `PUT /api/messages/:id/read`
- **参数**: id
- **说明**: 标记消息为已读
- **使用状态**: 未在前端组件中直接使用
### 7. 统计分析
- **前端服务**: `analyticsService`
- **API调用**: `getClassPerformance()`
- **后端文件**: `analytics.controller.ts`
- **接口**: `GET /api/analytics/class-performance`
- **参数**: 无
- **说明**: 获取班级表现
- **使用状态**: 已在TeacherDashboard组件中使用
### 8. 学生成长
- **前端服务**: `analyticsService`
- **API调用**: `getStudentGrowth()`
- **后端文件**: `analytics.controller.ts`
- **接口**: `GET /api/analytics/student-growth`
- **参数**: 无
- **说明**: 获取学生成长数据
- **使用状态**: 已在StudentDashboard组件中使用
## API参数类型说明
### 基础数据类型
- **string**: 文本类型
- **number**: 数字类型
- **boolean**: 布尔类型
- **Date**: 日期类型
- **Array**: 数组类型
- **Object**: 对象类型
### 特殊类型
- **UserRole**: 'Student' | 'Teacher' | 'Admin'
- **QuestionType**: 'SingleChoice' | 'MultipleChoice' | 'TrueFalse' | 'Subjective' | 'FillBlank'
- **SubmissionStatus**: 'Pending' | 'Submitted' | 'Graded' | 'Late'
- **ExamStatus**: 'Draft' | 'Published' | 'Archived'
- **Difficulty**: 1-5 (数字1为最简单5为最难)
### 枚举类型
- **NodeType**: 'Group' | 'Question'
- **SortOrder**: 数字,表示排序顺序
- **Message Type**: 'System' | 'Teacher' | 'Student'
## 数据格式说明
### 分页数据格式
```typescript
{
items: T[],
totalCount: number,
pageIndex: number,
pageSize: number
}
```
### 树形数据格式
```typescript
{
id: string,
name: string,
children?: TreeNode[]
}
```
### 统计数据格式
```typescript
{
total: number,
passed: number,
average: number,
distribution: Array<{ range: string, count: number }>
}
```
## 注意事项
1. **认证**: 大部分API都需要用户认证需要在请求头中包含JWT token
2. **权限**: 某些API需要特定权限如教师权限
3. **分页**: 列表类API通常支持分页需要传入page和pageSize参数
4. **错误处理**: 前端需要处理各种可能的错误情况,如网络错误、权限不足、数据不存在等
5. **实时更新**: 某些操作(如提交作业)可能需要实时更新界面状态