# 后端接口补全总结

本文档总结了为匹配前端 API 调用而补全的后端接口。

## 已完成的工作

### 1. 学校端 (`/api/v1/school/*`)

#### 班级管理 (`/classes`)
- `GET /list` - 获取班级列表（无分页）
- `GET /{id}/students` - 获取班级学生分页
- `GET /{id}/teachers` - 获取班级教师列表
- `POST /{id}/teachers` - 添加班级教师
- `PUT /{id}/teachers/{teacherId}` - 更新班级教师角色
- `DELETE /{id}/teachers/{teacherId}` - 移除班级教师

#### 学生管理 (`/students`)
- `POST /{id}/transfer` - 学生调班
- `GET /{id}/history` - 获取学生调班历史

### 2. 教师端 (`/api/v1/teacher/*`)

#### 课程管理 (`/courses`)
- `GET /classes` - 获取教师的班级列表
- `GET /students` - 获取教师所有学生分页
- `GET /classes/{classId}/students` - 获取班级学生分页
- `GET /classes/{classId}/teachers` - 获取班级教师列表

#### 课时管理 (`/lessons`)
- `POST /{id}/finish` - 结束课时（包含实际时长、评分等）
- `POST /{lessonId}/students/{studentId}/record` - 保存学生评价记录
- `GET /{lessonId}/student-records` - 获取课程所有学生记录
- `POST /{lessonId}/student-records/batch` - 批量保存学生评价记录
- `POST /{lessonId}/feedback` - 提交课程反馈
- `GET /{lessonId}/feedback` - 获取课程反馈

#### 课表管理 (`/schedules`)
- `GET /timetable` - 获取课表（按日期范围）
- `GET /today` - 获取今日课表
- `POST /` - 创建课表计划
- `PUT /{id}` - 更新课表计划
- `DELETE /{id}` - 取消课表计划

### 3. 家长端 (`/api/v1/parent/*`)

#### 孩子信息 (`/children`)
- `GET /` - 获取我的孩子（增强返回格式）
- `GET /{id}` - 获取孩子详情（增强返回格式）
- `GET /{childId}/lessons` - 获取孩子的课时记录
- `GET /{childId}/tasks` - 获取孩子的任务（带完成状态）

#### 任务管理 (`/tasks`)
- `PUT /{childId}/tasks/{taskId}/feedback` - 提交任务家长反馈

### 4. 管理员端 (`/api/v1/admin/*`)

管理员端接口大部分已存在，以下接口需要在未来补充：
- `PUT /themes/reorder` - 主题重新排序
- `PUT /packages/{packageId}/courses` - 设置套餐课程
- `POST /packages/{packageId}/courses` - 添加课程到套餐
- `DELETE /packages/{packageId}/courses/{courseId}` - 从套餐移除课程
- `POST /packages/{id}/submit` - 提交审核
- `POST /packages/{id}/review` - 审核套餐
- `POST /packages/{id}/publish` - 发布套餐
- `POST /packages/{id}/offline` - 下架套餐

## 实体类更新

### StudentRecord
新增字段：
- `focus` - 专注力评分 (1-5)
- `participation` - 参与度评分 (1-5)
- `interest` - 兴趣评分 (1-5)
- `understanding` - 理解度评分 (1-5)

### LessonFeedback
新增字段：
- `designQuality` - 设计质量评分 (1-5)
- `participation` - 参与度评分 (1-5)
- `goalAchievement` - 目标达成度评分 (1-5)
- `stepFeedbacks` - 环节反馈 JSON
- `pros` - 优点
- `suggestions` - 建议
- `activitiesDone` - 完成的活动 JSON

## Service 方法更新

### ClassService
- `getClassList(Long tenantId)` - 获取班级列表
- `getClassStudents(Long classId, ...)` - 获取班级学生分页
- `getClassTeachers(Long classId)` - 获取班级教师列表
- `addClassTeacher(...)` - 添加班级教师
- `updateClassTeacher(...)` - 更新班级教师角色
- `removeClassTeacher(...)` - 移除班级教师

### LessonService
- `finishLesson(...)` - 结束课时
- `saveStudentRecord(...)` - 保存学生评价记录
- `getStudentRecords(Long lessonId)` - 获取课程所有学生记录
- `batchSaveStudentRecords(...)` - 批量保存学生评价记录
- `saveLessonFeedback(...)` - 提交课程反馈
- `getLessonFeedback(Long lessonId)` - 获取课程反馈

### StudentService
- `transferStudent(...)` - 学生调班
- `getStudentClassHistory(Long studentId)` - 获取学生调班历史

### TaskService
- `getTaskCompletion(Long taskId, Long studentId)` - 获取任务完成记录

## 数据库迁移需求

需要创建数据库迁移脚本，添加以下字段：

```sql
-- student_records 表新增字段
ALTER TABLE student_records ADD COLUMN focus INT COMMENT '专注力评分 (1-5)';
ALTER TABLE student_records ADD COLUMN participation INT COMMENT '参与度评分 (1-5)';
ALTER TABLE student_records ADD COLUMN interest INT COMMENT '兴趣评分 (1-5)';
ALTER TABLE student_records ADD COLUMN understanding INT COMMENT '理解度评分 (1-5)';

-- lesson_feedbacks 表新增字段
ALTER TABLE lesson_feedbacks ADD COLUMN design_quality INT COMMENT '设计质量评分 (1-5)';
ALTER TABLE lesson_feedbacks ADD COLUMN participation INT COMMENT '参与度评分 (1-5)';
ALTER TABLE lesson_feedbacks ADD COLUMN goal_achievement INT COMMENT '目标达成度评分 (1-5)';
ALTER TABLE lesson_feedbacks ADD COLUMN step_feedbacks TEXT COMMENT '环节反馈 JSON';
ALTER TABLE lesson_feedbacks ADD COLUMN pros TEXT COMMENT '优点';
ALTER TABLE lesson_feedbacks ADD COLUMN suggestions TEXT COMMENT '建议';
ALTER TABLE lesson_feedbacks ADD COLUMN activities_done TEXT COMMENT '完成的活动 JSON';

-- student_class_history 表新增字段
ALTER TABLE student_class_history ADD COLUMN reason VARCHAR(255) COMMENT '调班原因';
```

## 待补充的接口

### 学校端
- `GET /stats/teachers/active` - 获取活跃教师统计
- `GET /stats/courses` - 获取课程使用统计
- `GET /stats/activities` - 获取最近活动
- `GET /stats/lesson-trend` - 课时趋势
- `GET /stats/course-distribution` - 课程分布
- `GET /reports/*` - 数据报告接口

### 教师端
- `POST /tasks/{taskId}/remind` - 发送任务提醒
- `GET /school-courses/*` - 校本课程相关接口

### 家长端
- `GET /growth-records/student/{studentId}` - 获取孩子成长记录（已存在，路径不同）

## 注意事项

1. 所有新增的数据库字段需要创建 Flyway 迁移脚本
2. 部分接口的返回数据结构已调整以匹配前端需求
3. 部分 Service 方法需要进一步测试验证
4. 教师端的班级、学生过滤逻辑需要根据实际业务场景优化
