kindergarten_java/docs/dev-logs/2026-03-20.md

321 lines
10 KiB
Markdown
Raw Normal View History

# 开发日志 - 2026-03-20
## 阅读任务模块重写 Phase 1 - 后端基础改造
### 完成的工作
#### 1. 数据库迁移脚本
- 文件: `V43__add_reading_task_features.sql`
- 创建 `task_feedback` 表(评价表)
-`task` 表添加 `related_book_name` 字段
-`task_completion` 表添加 `video_url`, `audio_url` 字段
#### 2. 实体类
- `TaskFeedback.java` - 新增评价实体
- `Task.java` - 添加 `relatedBookName` 字段(已存在)
- `TaskCompletion.java` - 添加新字段(已存在)
#### 3. DTO
- `TaskFeedbackRequest.java` - 评价请求 DTO
- `TaskFeedbackResponse.java` - 评价响应 DTO
- `TaskCompletionDetailResponse.java` - 完成详情响应 DTO
- `TaskSubmitRequest.java` - 家长提交请求 DTO
#### 4. Service 层
**新增**:
- `TaskFeedbackService.java` - 评价服务接口
- `TaskFeedbackServiceImpl.java` - 评价服务实现
**扩展**:
- `TaskService.java` - 添加以下方法:
- `getTaskCompletions()` - 获取任务完成情况列表
- `getCompletionDetail()` - 获取提交详情
- `submitTaskCompletion()` - 家长提交任务完成
- `getSchoolTaskList()` - 学校端任务列表(多维度筛选)
- `getTaskDetailForSchool()` - 学校端任务详情
- `ClassService.java` - 添加:
- `getPrimaryClassByStudentId()` - 获取学生当前所在班级
#### 5. Controller 层
**教师端** (`TeacherTaskController.java`):
- `GET /api/v1/teacher/tasks/{taskId}/completions` - 完成情况列表
- `GET /api/v1/teacher/tasks/completions/{completionId}` - 提交详情
- `POST /api/v1/teacher/tasks/completions/{completionId}/feedback` - 提交评价
- `PUT /api/v1/teacher/tasks/completions/{completionId}/feedback` - 修改评价
**家长端** (`ParentTaskController.java`):
- `POST /api/v1/parent/tasks/{taskId}/submit` - 提交任务完成
- `PUT /api/v1/parent/tasks/{taskId}/submit` - 修改提交
- `GET /api/v1/parent/tasks/completions/{completionId}/feedback` - 获取评价
- `GET /api/v1/parent/tasks/completions/{completionId}` - 获取提交详情
**学校端** (`SchoolTaskController.java`) - **完全重写为只读**:
- `GET /api/v1/school/reading-tasks` - 任务列表(多维度筛选)
- `GET /api/v1/school/reading-tasks/{taskId}` - 任务详情
- `GET /api/v1/school/reading-tasks/{taskId}/completions` - 完成情况列表
- `GET /api/v1/school/reading-tasks/completions/{completionId}` - 学生提交详情
- `GET /api/v1/school/reading-tasks/statistics` - 统计数据TODO
**移除的学校端 API**:
- ~~POST 创建任务~~
- ~~PUT 更新任务~~
- ~~DELETE 删除任务~~
### 关键设计决策
1. **学校端只读**: 学校端 API 路径从 `/api/v1/school/tasks` 改为 `/api/v1/school/reading-tasks`,完全只读
2. **评价结果枚举**: `EXCELLENT`(优秀)/ `PASSED`(通过)/ `NEEDS_WORK`(需改进)
3. **完成状态**: `PENDING`(待提交)/ `SUBMITTED`(已提交)/ `REVIEWED`(已评价)
4. **文件存储**: 继续使用现有 OSS照片以 JSON 数组存储
---
## 阅读任务模块重写 Phase 2 - 教师端前端改造 ✅
### 完成的工作
#### 1. API 类型更新 (`src/api/teacher.ts`)
- 更新 `TaskCompletion` 接口添加新字段:
- `photos: string[]` - 照片列表
- `videoUrl: string` - 视频链接
- `audioUrl: string` - 音频链接
- `content: string` - 提交内容
- `submittedAt: string` - 提交时间
- `reviewedAt: string` - 评价时间
- `feedback: TaskFeedback` - 关联评价
- 添加 `TaskFeedbackDto` 接口(评价请求)
- 添加新 API 函数:
- `getTeacherTaskCompletions()` - 获取完成情况列表
- `getCompletionDetail()` - 获取提交详情
- `submitCompletionFeedback()` - 提交评价
- `updateCompletionFeedback()` - 修改评价
#### 2. TaskListView.vue 改造
**创建任务弹窗**:
- [x] 添加 `relatedBookName`(关联绘本名称)字段
- [x] 编辑任务时加载已有绘本名称
**完成情况弹窗改造**:
- [x] 状态筛选改为新状态值PENDING/SUBMITTED/REVIEWED
- [x] 显示提交内容预览(照片数量、视频、文字内容)
- [x] 统计标签更新为:待提交/已提交/已评价
**评价弹窗组件**:
- [x] 新增评价弹窗 UI
- [x] 提交内容预览区域(照片、视频、音频、文字)
- [x] 评价结果选择(优秀/通过/需改进)
- [x] 评分组件1-5 星)
- [x] 评语输入框
- [x] 支持新建和编辑评价
**状态显示逻辑**:
- [x] `getCompletionStatusColor()` - 新状态颜色映射
- [x] `getCompletionStatusText()` - 新状态文本映射
- [x] `completionStats` computed 使用新状态值
### 文件变更清单
**修改文件**:
- `src/api/teacher.ts` - API 类型和函数
- `src/views/teacher/tasks/TaskListView.vue` - 教师任务管理页面
### TypeScript 编译验证
- `src/views/teacher/tasks/TaskListView.vue` ✅ 无错误
---
## 下一步
### Phase 3: 家长端前端改造
- [ ] 改造提交功能
- [ ] 新增查看评价页面
### Phase 4: 学校端前端重写
- [ ] 重写任务列表页(只读+多维度筛选)
- [ ] 新增任务详情页
- [ ] 新增学生提交详情页
---
## 阅读任务模块重写 Phase 3 - 家长端前端改造 ✅
### 完成的工作
#### 1. API 类型更新 (`src/api/parent.ts`)
- 添加新的类型定义:
- `TaskCompletionStatus` - 完成状态类型
- `FeedbackResult` - 评价结果类型
- `TeacherFeedback` - 教师评价接口
- `TaskCompletion` - 任务完成记录接口
- `TaskSubmitRequest` - 提交请求接口
- 更新 `TaskWithCompletion` 接口添加新字段:
- `photos: string[]` - 照片列表
- `videoUrl: string` - 视频链接
- `audioUrl: string` - 音频链接
- `content: string` - 提交内容
- `submittedAt: string` - 提交时间
- `reviewedAt: string` - 评价时间
- `teacherFeedback: TeacherFeedback` - 教师评价
- 添加新 API 函数:
- `submitTaskCompletion()` - 提交任务完成
- `updateTaskCompletion()` - 修改提交
- `getCompletionDetail()` - 获取提交详情
- `getCompletionFeedback()` - 获取教师评价
#### 2. TaskListView.vue 完全重写
**任务卡片展示**:
- [x] 显示关联绘本名称
- [x] 状态标签更新为新状态(待提交/已提交/已评价)
- [x] 已提交内容预览(照片数量、视频、音频、文字)
- [x] 教师评价显示区域(评价结果、评分、评语)
**提交功能改造**:
- [x] 照片上传最多9张
- [x] 视频链接输入
- [x] 音频链接输入
- [x] 阅读心得文字输入
- [x] 支持新建和修改提交
**查看评价功能**:
- [x] 评价详情弹窗
- [x] 评价结果展示(优秀/通过/需改进)
- [x] 评分显示1-5星
- [x] 教师评语展示
- [x] 提交内容回顾(照片网格、链接、文字)
- [x] 图片预览功能
**状态驱动操作**:
- [x] 待提交状态 → 显示"提交完成"按钮
- [x] 已提交状态 → 显示"修改提交"按钮
- [x] 已评价状态 → 显示"查看评价详情"按钮
### 文件变更清单
**修改文件**:
- `src/api/parent.ts` - API 类型和函数
- `src/views/parent/tasks/TaskListView.vue` - 家长任务管理页面
### TypeScript 编译验证
- `src/api/parent.ts` ✅ 无错误
- `src/views/parent/tasks/TaskListView.vue` ✅ 无错误
---
## 阅读任务模块重写 Phase 4 - 学校端前端重写 ✅
### 完成的工作
#### 1. API 层更新 (`src/api/school.ts`)
**新增只读接口类型**:
- `TaskCompletionStatus` - 完成状态PENDING/SUBMITTED/REVIEWED
- `FeedbackResult` - 评价结果EXCELLENT/PASSED/NEEDS_WORK
- `TaskTeacherFeedback` - 教师评价接口
- `TaskCompletionRecord` - 任务完成记录(新设计)
- `SchoolTaskQueryParams` - 多维度筛选参数
**新增 API 函数**:
- `getReadingTaskList()` - 获取任务列表(多维度筛选)
- `getReadingTaskDetail()` - 获取任务详情
- `getReadingTaskCompletions()` - 获取完成情况列表
- `getCompletionDetail()` - 获取提交详情
**保留旧接口**: 保留 create/update/delete 函数以保持向后兼容
#### 2. TaskListView.vue 完全重写(只读模式)
**移除的功能**:
- ❌ 创建任务
- ❌ 编辑任务
- ❌ 删除任务
- ❌ 发布任务按钮
**新增/改进的功能**:
**统计卡片**:
- [x] 全部任务数
- [x] 进行中任务数
- [x] 已提交数量
- [x] 已评价数量
**多维度筛选**:
- [x] 关键字搜索
- [x] 任务类型筛选(阅读/活动/作业)
- [x] 任务状态筛选(进行中/草稿/已归档)
- [x] 日期范围筛选
- [x] 排序方式选择
**任务列表**:
- [x] 卡片式展示
- [x] 显示关联绘本名称
- [x] 显示创建人
- [x] 完成情况统计(待提交/已提交/已评价)
- [x] 完成率进度条
- [x] 点击查看详情
**任务详情弹窗**:
- [x] 基本信息(类型、状态、时间等)
- [x] 关联绘本
- [x] 完成情况统计
- [x] 查看完成列表入口
**完成情况列表弹窗**:
- [x] 学生信息(姓名、班级、头像)
- [x] 状态标签
- [x] 提交内容预览(照片数量、视频、音频)
- [x] 教师评价显示
- [x] 筛选和分页
- [x] 查看详情按钮
**提交详情弹窗**:
- [x] 学生信息卡片
- [x] 提交状态显示
- [x] 照片网格展示(支持预览)
- [x] 视频/音频链接
- [x] 阅读心得文字
- [x] 提交时间
- [x] 教师评价详情(结果、评分、评语)
- [x] 评价时间
### 文件变更清单
**修改文件**:
- `src/api/school.ts` - 新增只读接口类型和函数
- `src/views/school/tasks/TaskListView.vue` - 完全重写为只读模式
### TypeScript 编译验证
- `src/api/school.ts` ✅ 无错误
- `src/views/school/tasks/TaskListView.vue` ✅ 无错误
---
## 总结
### 阅读任务模块重写全部完成 ✅
| Phase | 端 | 状态 |
|-------|-----|------|
| Phase 1 | 后端基础改造 | ✅ 完成 |
| Phase 2 | 教师端前端 | ✅ 完成 |
| Phase 3 | 家长端前端 | ✅ 完成 |
| Phase 4 | 学校端前端 | ✅ 完成 |
### 关键设计决策
1. **学校端只读**: 学校端 API 路径改为 `/api/v1/school/reading-tasks`,完全只读
2. **新状态值**: `PENDING``SUBMITTED``REVIEWED`
3. **评价结果**: `EXCELLENT`(优秀)/ `PASSED`(通过)/ `NEEDS_WORK`(需改进)
4. **多维度筛选**: 支持关键字、类型、状态、日期范围、排序等筛选条件
---
*Last updated: 2026-03-20 19:30*