Commit Graph

175 Commits

Author SHA1 Message Date
zhonghua
fceef0fa12 feat(admin): 课程包列表增加课程配置列,参考学校端排课展示课程类型标签
Made-with: Cursor
2026-03-23 10:36:06 +08:00
zhonghua
dc0ce2bf78 feat: 排课流程增加选择套餐步骤,课程详情预约跳过套餐选择
- 学校端/教师端排课:新增第一步「选择套餐」,支持租户一对多套餐
- 从课程详情预约上课:跳过套餐与课程包选择,从选择课程类型开始
- 课程详情页传递正确的 courseId/packageId 避免预约失败

Made-with: Cursor
2026-03-23 10:20:24 +08:00
En
1b1679585d fix: 修复学校端 DashboardView 调用 getLessonTrend 参数错误
问题:前端 API 已改为传入 startDate 和 endDate,但 DashboardView.vue 仍传入数字 7
修复:改为计算 7 天前的日期和今天日期,以 YYYY-MM-DD 格式传递
2026-03-23 09:52:48 +08:00
En
c1f5b5085e feat: 学校端数据报告功能实现
主要变更:
1. 新建 ReportMapper - 数据报告统计查询
   - getOverviewStats: 概览统计(教师/学生/班级总数、本月授课次数)
   - getTeacherReports: 教师教学数据统计
   - getCourseReports: 课程使用排行统计
   - getStudentReports: 学生学习数据统计

2. 新建 SchoolReportService - 数据报告服务层
   - 4 个报告查询接口实现

3. 修改 SchoolStatsController - 调整统计接口参数
   - getLessonTrend 改为支持 startDate 和 endDate 参数

4. 前端更新 ReportView.vue
   - 对接 4 个报告接口
   - 优化图表展示和数据表格
   - 支持日期范围筛选

5. 更新开发日志和测试记录

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 09:46:08 +08:00
En
e8219e5aab Merge branch 'retirado'
# Conflicts:
#	docs/dev-logs/2026-03-21.md
2026-03-21 21:37:17 +08:00
En
b361b1885b fix: 教师端首页今日课程 courseName 和 className 关联查询
问题:
- 今日课程功能只查询了 lesson 表,没有 JOIN 关联表
- TeacherLessonVO 的 courseName 和 className 字段为 null
- 前端无法显示课程名称和班级名称

修复:
- LessonMapper 新增 selectTodayLessonsWithDetails() 方法
- 通过 LEFT JOIN course_package 和 clazz 表获取名称
- TeacherStatsServiceImpl 重写 getTodayLessons() 方法
- 添加类型转换辅助方法 (getLong/getString/getLocalDate/getLocalTime/getLocalDateTime)

影响范围:
- 教师端首页 - 今日课程模块
- API: GET /api/v1/teacher/today-lessons
- API: GET /api/v1/teacher/dashboard

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 18:43:47 +08:00
Claude Opus 4.6
3183d1d388 feat: 学校端课程中心优化 - 照搬教师端实现
主要变更:
- 学校端课程详情页返回完整 CourseResponse(与教师端一致)
- 新增课程中心视图 CourseCenterView.vue(学校端/教师端)
- 新增 course-center.ts API 层
- 新增 PackageFilterMetaResponse 用于筛选元数据
- 菜单文案修改:课程管理 -> 课程中心

后端优化:
- SchoolCourseController.getCourse() 返回 CourseResponse
- CourseCollectionService 新增筛选元数据查询方法
- CoursePackageResponse 新增 filterMeta 字段

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 18:14:49 +08:00
En
6e1758a44d Merge remote-tracking branch 'origin/master'
# Conflicts:
#	reading-platform-frontend/openapi.json
#	reading-platform-frontend/src/api/generated/index.ts
#	reading-platform-frontend/src/api/generated/model/index.ts
#	reading-platform-frontend/src/api/generated/model/taskCreateRequest.ts
2026-03-21 12:54:02 +08:00
En
6f64723428 feat: 教师端数据看板与学校端课程统计功能
教师端数据看板:
- 新增 TeacherDashboardResponse/TeacherLessonVO/TeacherLessonTrendVO
- 新增 TeacherWeeklyStatsResponse 周统计响应
- 新增 TeacherActivityLevel 枚举和 TeacherActivityRankResponse 活跃度排行
- 实现教师端课程统计、任务完成详情、任务反馈接口

学校端课程统计:
- 新增 CourseUsageVO/CourseUsageStatsVO/CoursePackageVO
- 新增 SchoolCourseResponse 和学校端课程使用查询接口
- 实现学校端统计数据和课程趋势接口

用户资料功能:
- 新增 UpdateProfileRequest/UpdateProfileResponse
- 实现用户资料更新接口

前后端对齐:
- 更新 OpenAPI 规范和前端 API 类型生成
- 优化 DashboardView 组件和 API 调用

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 12:45:56 +08:00
zhonghua
c55b2266fb fix: task_feedback 表字段对齐与完成情况图片展示
- 新增 V47 迁移:为 task_feedback 添加 create_by、update_by、deleted 字段
- 修复 TaskFeedbackMapper 使用 deleted 替代 deleted_at
- 教师端完成情况:将「X张照片」改为图片缩略图展示,支持点击预览
- 评价弹窗提交内容预览区显示图片网格,参考家长端提交页面

Made-with: Cursor
2026-03-20 19:05:59 +08:00
zhonghua
5cb903d7ed feat: 家长端任务、教师端统计、数据库迁移等
- 家长端阅读任务:从 task_target 获取任务(学生+班级),支持家长关联孩子查看
- 家长端提交任务:修复照片上传,使用 uploadFile(file, poster) 符合 API 规范
- 教师端任务列表:TaskResponse 新增 targetCount、completionCount,填充目标人数与完成人数
- 数据库迁移:V45 添加 task_completion.photos,V46 添加 submitted_at、reviewed_at
- 其他:班级学生、家长孩子、学校班级统计等修复

Made-with: Cursor
2026-03-20 18:43:47 +08:00
zhonghua
c93d325cee fix: 课后记录页面前后端对齐 - 修改 getStudentRecords 返回 { lesson, students } 结构 - 修改 batchSaveStudentRecords 接受 { records } 请求体 - 新增 StudentRecordsResponse/StudentWithRecordResponse/BatchStudentRecordsRequest - 前端增强数据容错
Made-with: Cursor
2026-03-20 16:11:08 +08:00
zhonghua
463c3d9922 feat: 阅读任务模块 - 关联绘本、任务模板与教师端优化
Made-with: Cursor
2026-03-20 15:55:33 +08:00
zhonghua
de742d9acf Merge branch 'retirado' of http://8.148.151.56:3000/tonytech/kindergarten_java 2026-03-20 15:09:46 +08:00
Claude Opus 4.6
2839fd7296 fix: 修复创建任务时 relatedBookName 字段未保存的问题
问题描述:
- TaskServiceImpl.createTask() 方法中遗漏了 relatedBookName 字段的设置
- 导致前端传入的关联绘本名称无法保存到数据库

修复内容:
- 在 createTask() 方法中添加 task.setRelatedBookName(request.getRelatedBookName())

测试验证:
- 后端 API 测试全部通过 (6/6)
- 学校端只读模式验证通过
- 创建任务后正确返回 relatedBookName 字段

同时添加:
- 阅读任务模块测试计划
- E2E 测试用例文件
- 详细测试报告

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 15:07:17 +08:00
En
9f04daa955 fix: 数据看板使用趋势 Y 轴步进值调整为 1
- 修改 DashboardView.vue 中趋势图表的 Y 轴配置
- 左右 Y 轴(授课次数、学生数)的步进值均设为 1
2026-03-20 14:54:11 +08:00
zhonghua
26f55da670 Merge branch 'retirado' of http://8.148.151.56:3000/tonytech/kindergarten_java
# Conflicts:
#	reading-platform-frontend/src/api/school.ts
#	reading-platform-frontend/src/api/teacher.ts
#	reading-platform-frontend/src/views/school/tasks/TaskListView.vue
#	reading-platform-frontend/src/views/teacher/tasks/TaskListView.vue
#	reading-platform-java/src/main/java/com/reading/platform/controller/school/SchoolTaskController.java
#	reading-platform-java/src/main/java/com/reading/platform/controller/teacher/TeacherTaskController.java
#	reading-platform-java/src/main/java/com/reading/platform/dto/response/TaskCompletionDetailResponse.java
#	reading-platform-java/src/main/java/com/reading/platform/service/TaskService.java
#	reading-platform-java/src/main/java/com/reading/platform/service/impl/TaskServiceImpl.java
2026-03-20 14:27:28 +08:00
Claude Opus 4.6
f62aa18e72 feat: 阅读任务模块重写(Phase 1-4)
## 主要变更

### 后端改造 (Phase 1)
- 新增 task_feedback 表存储教师评价
- task 表添加 related_book_name 字段
- task_completion 表添加 video_url, audio_url 字段
- 新增 TaskFeedback 实体和服务层
- 扩展 TaskService 支持完成情况查询和评价功能
- 学校端 API 改为只读模式 (/v1/school/reading-tasks)

### 教师端前端 (Phase 2)
- 创建任务弹窗添加关联绘本字段
- 完成情况弹窗支持新状态值 (PENDING/SUBMITTED/REVIEWED)
- 新增评价弹窗组件(评价结果、评分、评语)
- 显示提交内容预览(照片、视频、音频、文字)

### 家长端前端 (Phase 3)
- 提交功能改造支持照片上传(最多9张)
- 支持视频/音频链接输入
- 阅读心得文字输入
- 新增查看教师评价功能
- 状态驱动操作(待提交/已提交/已评价)

### 学校端前端 (Phase 4)
- 完全重写为只读模式
- 移除创建/编辑/删除功能
- 多维度筛选(关键字、类型、状态、日期、排序)
- 统计卡片(任务数、进行中、已提交、已评价)
- 任务详情弹窗
- 完成情况列表弹窗
- 提交详情弹窗

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 14:08:36 +08:00
zhonghua
802327f075 fix: 任务模板 API 修复与学校端功能实现
- TaskTemplateCreateRequest: isDefault/isPublic 改为 Boolean 类型
- SchoolTaskTemplateController: 接入 TaskTemplateService 实现完整 CRUD
- getTemplates: 支持 publicOnly、keyword、taskType 参数
- 学校端列表显示全部模板(含 isPublic=0)
- 前端 getTaskTemplates: 分页字段 Number 转换

Made-with: Cursor
2026-03-20 13:49:15 +08:00
zhonghua
37a6aba8cc feat: 任务完成情况 API 与 UI 优化
- 学校/教师端: 新增 GET/PUT 任务完成情况接口,支持分页与状态筛选
- 后端: TaskCompletionDetailResponse 含学生姓名、班级信息
- 后端: 新增 getTaskCompletionStats、getTaskCompletionsWithStudent
- 学校端: 状态筛选移至弹框标题后,分页始终显示
- 班级字段: 支持 ACTIVE 状态,无记录时用 student.grade 兜底
- 迁移 V43: 添加 student_class_history 测试数据

Made-with: Cursor
2026-03-20 11:48:56 +08:00
zhonghua
f90037dd17 feat: 根据排课lessonType直接进入子课程,子课程结束即上课结束;右侧添加课程类型展示
- 后端:LessonDetailResponse 新增 lessonType,从 SchedulePlan 读取
- 前端:根据 lessonType 直接进入对应子课程,子课程结束即上课结束
- 前端:右侧面板课程资源上方添加课程类型标签展示

Made-with: Cursor
2026-03-20 10:56:41 +08:00
zhonghua
5a05af18dd Merge branch 'master' of http://8.148.151.56:3000/tonytech/kindergarten_java 2026-03-20 10:07:26 +08:00
zhonghua
8502d8b2d3 fix:优化上课备课路由死循环 2026-03-20 10:07:17 +08:00
En
c3b1056c29 feat: 租户管理与课程套餐优化
- 优化租户管理相关接口与实体类
- 更新课程套餐服务层实现
- 新增数据库迁移脚本 V42
- 同步更新前端 API 类型与页面组件
2026-03-19 23:28:40 +08:00
zhonghua
ed9371b21f feat: 排课/预约优化与国际化
- main.ts: dayjs 时间国际化使用中文
- 排课日期禁止选择过去时间(学校端、教师端、校本课程预约)
- 移除选择课程套餐,租户仅一个套餐直接展示课程包
- 教师端预约上课增加排课计划参考表格

Made-with: Cursor
2026-03-19 18:31:54 +08:00
zhonghua
824ce7ad80 feat: 教师端预约上课与学校端新建排课流程一致
- 后端:教师可访问课程套餐/课程包/lesson-types API
- 后端:TeacherScheduleServiceImpl 支持 coursePackageId、lessonType
- 前端:新增 TeacherCreateScheduleModal 四步流程(选择课程包→课程类型→班级→时间)
- 前端:ScheduleView 集成新弹窗
- 前端:课程中心 PrepareModeView 预约上课使用相同四步流程,支持预设

Made-with: Cursor
2026-03-19 18:14:25 +08:00
zhonghua
3f6696d7bb feat: 教师端排课优化
- 排课详情/课表:显示班级、课程、课程类型(使用 toSchedulePlanResponse 填充)
- 开始上课:改用 from-schedule API,避免 teacherId/title/lessonDate 校验失败
- 前端:TeacherSchedule 增加 lessonType/coursePackageName,课程展示兼容 coursePackageName

Made-with: Cursor
2026-03-19 18:00:03 +08:00
zhonghua
7c5110b6d2 feat: 新建排课课程类型图标改用 @ant-design/icons-vue
Made-with: Cursor
2026-03-19 17:41:39 +08:00
zhonghua
829a70e448 feat: 学校端课程排期功能完善
- 排课计划参考:对齐管理端课程包详情,支持时间/课程类型/课程名称/区域活动/备注五列
- 支持两种 schedule_ref_data 格式(周排课表、课程类型说明)
- 新建排课弹窗样式提取为 CreateScheduleModal.scss 修复 SASS 编译错误
- 切换视图(列表/课表/日历)时自动刷新数据
- 排课列表、课表、日历视图增加课程类型 tag 展示
- 后端:timetable/lesson-types 接口修复,LessonTypeEnum 补充类型

Made-with: Cursor
2026-03-19 16:34:48 +08:00
zhonghua
f425209abe feat: 校园端课程列表筛选与卡片展示参考教师端
- 筛选栏:年级/领域/课程类型下拉、搜索框,保留授权新课程按钮
- 卡片:新增 lessonTags 展示(导入课、集体课、领域等)
- 后端:学校课程 API 支持 domain、lessonType 参数及 lessonTags 返回
- 主题保持校园端绿色

Made-with: Cursor
2026-03-19 15:07:40 +08:00
zhonghua
20c500e921 feat: 教师课程中心 - 年级/领域/课程类型筛选与 lessonTags 展示
- 新增 lessonType 筛选参数,支持 SOCIAL/SOCIETY/DOMAIN_* 等格式兼容
- 列表接口返回 lessonTags(name,lessonType) 供 tag 展示
- 新增 LessonTagResponse DTO
- 完善 tagMaps 与 LESSON_TYPE_NAMES 映射(INTRO/DOMAIN_*)
- 修复筛选参数未传递到接口的问题

Made-with: Cursor
2026-03-19 15:01:13 +08:00
zhonghua
81dd74662e fix: 修复 /api/v1/school/courses 接口 gradeTags 前端显示数据丢失
- 后端: 增强 SchoolCourseController.parseJsonArray 兼容多种 JSON 格式
- 后端: 新增 SchoolCourseResponse,gradeTags/domainTags 规范为 String[]
- 前端: 学校端课程列表/详情统一使用 parseGradeLevels 解析 gradeTags
- 前端: 兼容 grade_tags/domain_tags snake_case 字段

Made-with: Cursor
2026-03-19 14:05:28 +08:00
En
efedb37cae Merge remote-tracking branch 'origin/master'
# Conflicts:
#	reading-platform-frontend/src/views/admin/collections/CollectionEditView.vue
2026-03-19 12:34:35 +08:00
En
9a9caab60b feat(db): 添加 V40 迁移脚本删除 tenant_package 表的 package_id 字段
- 创建 V40__drop_tenant_package_package_id.sql 迁移脚本
- 安全删除 tenant_package 表中废弃的 package_id/packageId 列
- 该字段已在 V31 中尝试删除,V40 用于修复执行失败的情况
- TenantPackage 实体已使用 collectionId 字段替代

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 12:34:00 +08:00
zhonghua
8f5a0fcdda fix: 套餐管理优化与 gradeLevels/重复包修复
- gradeLevels: 后端 JSON 解析修复,前端兼容错误格式
- 筛选下拉: 状态选项按业务流程排序
- 已下架: 列表与详情页增加编辑、删除操作
- 课程包关联: 前后端去重,修复 uk_collection_package 唯一约束冲突

Made-with: Cursor
2026-03-19 11:37:04 +08:00
zhonghua
289fcbee52 feat: 课程套餐与课程包管理优化
- 课程套餐:适用年级从已选课程包自动同步,年级列改为只读
- 课程套餐:草稿/已驳回状态添加发布按钮
- 课程包:已发布状态不显示编辑按钮,编辑页增加状态校验
- 套餐创建:年级列从课程包读取,不可编辑

Made-with: Cursor
2026-03-19 11:18:02 +08:00
zhonghua
2eb4a28b89 修复文件上传 2026-03-19 10:53:13 +08:00
En
deb8431910 fix: 修复 course.ts 中 http 对象未导入的问题
- 添加 http 对象封装,支持 get/post/put/delete 方法
- 修复 submitCourse 和 rejectCourse 函数中 http.post 未导入的问题
- 确保课程包编辑页面的"保存"和"保存草稿"按钮能正常请求后端

同时包含之前的数据库外键修复:
- 新增 V39 迁移脚本删除外键约束
- 修改 V28 移除外键创建语句
- 增强 CourseCollectionService 应用层验证
2026-03-19 10:32:58 +08:00
En
1d4bf52d05 fix: 修复租户管理选择套餐显示 NaN 元问题
问题原因:
- 租户管理页面调用 /api/v1/admin/packages/all 获取课程包
- 但 CoursePackage 实体没有 price 和 discountPrice 字段
- 这些字段在 CourseCollection(课程套餐)实体中

后端修改:
- AdminCourseCollectionController 新增 GET /all 接口
- 返回已发布的课程套餐列表(含价格信息)
- 添加 @Slf4j 注解和必要导入

前端修改:
- src/api/admin.ts 修改 API 调用路径为 /collections/all
- 修改返回类型为 CourseCollectionResponse[]
- TenantListView.vue 修改 packageList 类型
- 修复 formatPackagePrice 处理 undefined 值
- 修复 handlePackageTypeChange 类型检查

数据库迁移:
- 添加 V38 脚本为 course_collection 表添加自增主键

其他修改:
- .gitignore 移除 *.sql 排除规则(允许迁移脚本)
- CourseCollectionRejectRequest 和 CourseRejectRequest 用于审核驳回

修复的 TypeScript 错误:
- formatPackagePrice 参数改为可选类型
- selectedPackage.name 添加可选链操作符
2026-03-19 09:34:54 +08:00
Claude Opus 4.6
ddd3d8c152 feat: 套餐管理功能增强
新增功能:
- 后端新增套餐状态管理端点(下架、重新发布、撤销审核)
- 前端套餐详情页增加完整状态流转操作
- 前端套餐管理增加课程包添加/移除功能
- 修复套餐详情页空值引用错误
- 新增 collections.ts API 封装模块

后端变更:
- AdminCourseCollectionController 新增 archive/republish/withdraw 端点
- CourseCollectionService 新增对应服务方法

前端变更:
- collections.ts 新增 API 封装
- CollectionDetailView 增加状态管理按钮和课程包管理
- CollectionListView 增加状态筛选和操作按钮
- 修复 route 配置和 API 调用路径
- 合并远程更新,解决 TenantListView.vue 冲突

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 18:19:25 +08:00
zhonghua
337dcc43d8 feat(课程包): 三课表单formRules校验与UI优化
- LessonConfigPanel: 添加a-form+formRules表单校验
- 导入课/集体课/领域课: 核心资源均必填校验
- 修复教学目标/教学准备/教学延伸等重复校验提示
- 核心资源校验错误提示可见展示
- 教学环节: 环节名称改为水平布局(标签左对齐)

Made-with: Cursor
2026-03-18 16:59:42 +08:00
zhonghua
17dc815030 feat(课程包): 表单校验增强 - 教学环节必填标识与校验、核心资源必填标识
Made-with: Cursor
2026-03-18 16:19:22 +08:00
zhonghua
a72984c860 feat(课程包): 表单校验增强与交互优化
- 顶部操作栏吸顶,下一步/保存草稿合并到顶部
- 导入课、集体课、领域课至少配置一种的校验
- 领域课 getSaveData 仅返回已填写教学目标的领域
- 教学环节添加必填标识(*)

Made-with: Cursor
2026-03-18 16:06:35 +08:00
zhonghua
694fda88c0 调整API走代理,不直接请求 2026-03-18 15:46:56 +08:00
En
d9a8da6a84 Merge remote-tracking branch 'origin/master' 2026-03-18 15:30:14 +08:00
zhonghua
db70b1ad47 fix: 租户管理表单校验与后端字段对齐
- 前端: 学习地址必填、有效期绑定 formData.dateRange 修复校验
- 前端: admin.ts 请求体字段映射 loginAccount->code, contactPerson->contactName
- 后端: TenantCreateRequest 新增 password 字段
- 后端: TenantServiceImpl 创建租户时设置 username(code) 和 password

Made-with: Cursor
2026-03-18 15:16:37 +08:00
En
aff8162180 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	reading-platform-frontend/src/components.d.ts
2026-03-18 15:14:01 +08:00
En
db508dc2b6 refactor(teacher): 教师端 Controller 注释中文化
将教师端所有 Controller 的 @Tag 和 @Operation 注释从英文改为中文,提升代码可读性和一致性。

涉及的 Controller:
- TeacherCourseController
- TeacherFeedbackController
- TeacherGrowthController
- TeacherLessonController
- TeacherNotificationController
- TeacherScheduleController
- TeacherStatsController
- TeacherTaskController
- TeacherTaskTemplateController

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 15:10:01 +08:00
Claude Opus 4.6
279fa79b56 merge: 合并远程更新并解决冲突
- 合并学校课程管理搜索与年级筛选功能
- 修复教学资源区域间距问题
- 删除已忽略的自动生成文件
- 新增排课弹窗优化(移除课程选择,自动选择第一门课程)
- 新增 lessonType 从 schedule_ref_data 解析功能
- 修复前端代理配置(端口 8480)
2026-03-18 14:46:32 +08:00
zhonghua
43d5bc8662 fix: 教学资源区域增加间距,避免动画被遮挡
Made-with: Cursor
2026-03-18 14:13:57 +08:00
zhonghua
1264c4707e 播放器: bigPlayButton 居中显示
Made-with: Cursor
2026-03-18 11:11:57 +08:00
zhonghua
c2f4a77d85 gitignore: 忽略自动生成的 components.d.ts 和 typed-router.d.ts
Made-with: Cursor
2026-03-18 10:17:26 +08:00
zhonghua
7fe2c319ee 学校课程管理: 前后端对齐,实现搜索与年级筛选功能
Made-with: Cursor
2026-03-18 10:15:37 +08:00
En
c85a3fd195 Merge remote-tracking branch 'origin/master' 2026-03-18 10:02:26 +08:00
En
ad249d0392 租户编辑,暂时不能更换套餐 2026-03-18 10:01:50 +08:00
Claude Opus 4.6
2e3143affb feat: 添加课程包排课计划参考数据返回
后端改动:
1. CoursePackageResponse.CoursePackageCourseItem 添加 scheduleRefData 和 lessonType 字段
2. CoursePackageService.toResponse() 填充 scheduleRefData 和 lessonType
3. CourseCollectionService.toPackageResponse() 重写以包含课程列表和排课计划参考
4. 添加必要的 mapper 依赖注入

前端改动:
1. school.ts CoursePackage 接口添加 scheduleRefData 字段
2. CreateScheduleModal.vue 优化 selectPackage() 方法,直接从响应数据中提取排课计划参考

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 09:38:52 +08:00
En
1d7ade9d90 feat: 学校端接口租户隔离修复与Response规范化
## 租户隔离修复
- 修复 SchoolCourseController 硬编码 tenantId=1L 的严重 bug
- 为 SchoolClassController 8个接口添加租户验证
- 为 SchoolTeacherController 4个接口添加租户验证
- 为 SchoolStudentController 3个接口添加租户验证
- 为 SchoolParentController 6个接口添加租户验证
- 为 SchoolTaskController 3个接口添加租户验证
- 为 SchoolGrowthController 3个接口添加租户验证

## Map 返回类型改 Response
- SchoolTaskTemplateController: Map → TaskTemplateResponse
- SchoolScheduleController: Map → SchedulePlanResponse
- SchoolPackageController: Map → PackageInfoResponse/PackageUsageResponse
- SchoolSettingsController: Map → SchoolSettingsResponse 等
- SchoolReportController: Map → ReportOverviewResponse 等

## 新增 Response DTO
- PackageInfoResponse, PackageUsageResponse
- SchoolSettingsResponse, BasicSettingsResponse
- NotificationSettingsResponse, SecuritySettingsResponse
- ReportOverviewResponse, TeacherReportResponse
- CourseReportResponse, StudentReportResponse

## 新增 Request DTO
- RenewRequest, SchoolSettingsUpdateRequest
- BasicSettingsUpdateRequest, NotificationSettingsUpdateRequest
- SecuritySettingsUpdateRequest

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 00:02:05 +08:00
Claude Opus 4.6
bd244a7c7d test: 修复排课功能冲突检测API测试并完成全面测试
- 修复冲突检测API测试参数错误(使用正确的classId/scheduledDate/scheduledTime)
- 新增全面API测试脚本 (test_all_apis.sh)
- 新增Python Playwright浏览器自动化测试 (test_schedule_page.py)
- 新增前端E2E测试用例 (schedule-comprehensive.spec.ts, schedule-real.spec.ts)
- 更新测试报告,所有API测试通过

测试覆盖:
- 登录认证 
- 课程套餐列表(两层结构)
- 排课列表/课表/日历视图 
- 班级/教师列表 
- 冲突检测API  (已修复)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 20:34:41 +08:00
Claude Opus 4.6
ab7a06adea fix: 修复学校端排课路由冲突 - 移除重复的子路由 2026-03-17 19:44:10 +08:00
Claude Opus 4.6
42e5232426 chore: 删除已清理的测试报告文件 2026-03-17 19:36:32 +08:00
zhonghua
eb1b1a3153 课程包详情: 核心发展目标字段翻译为中文显示
Made-with: Cursor
2026-03-17 17:56:30 +08:00
zhonghua
0baf3936d0 课程详情: 收藏/已收藏图标颜色区分(红/灰)
Made-with: Cursor
2026-03-17 17:47:49 +08:00
zhonghua
8f94774e19 Merge remote-tracking branch 'origin/master'
Made-with: Cursor
2026-03-17 17:28:17 +08:00
zhonghua
971f78e630 KidsMode: 取消 controlsVisible 自动隐藏底部导航
Made-with: Cursor
2026-03-17 17:25:43 +08:00
Claude Opus 4.6
c90873bea9 Merge remote-tracking branch 'origin/master' and complete two-tier structure refactoring
合并同事的远程更新:
- 多地点登录支持功能
- 资源库管理优化
- 数据看板修复
- 视频预览功能
- KidsMode增强

两层结构重构完成:
- 数据库迁移 V28(course_collection、course_collection_package)
- 后端实体、Service、Controller实现
- 前端API类型和组件重构
- 修复冲突文件:CHANGELOG.md、components.d.ts、TeacherLessonController.java

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 16:59:06 +08:00
En
95b3e973e0 Merge remote-tracking branch 'origin/master' 2026-03-17 16:23:18 +08:00
En
6af88225c9 fix: 数据看板前后端接口数据结构差异修复
- admin.ts: 新增后端响应类型定义和数据映射函数
  - AdminStatsResponse, StatsTrendResponse, ActiveTenantResponse, PopularCourseResponse
  - mapStatsData, mapTrendData, mapActiveTenants, mapPopularCourses
- admin/DashboardView: 活跃租户列表显示调整
- teacher/DashboardView: 数据加载添加字段映射和默认值处理
- school/DashboardView: 图表初始化添加空数据处理和数据校验

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 16:21:51 +08:00
zhonghua
846ba61b88 资源库: 按类型限制上传文件、移除搜索框重复图标
Made-with: Cursor
2026-03-17 16:18:51 +08:00
zhonghua
193bbe90ae feat: 资源库管理优化 - 直传、WebOffice预览、接口对齐
- 资源上传改为 OSS 直传,支持进度与取消
- Office 文档(PDF/PPT/Word/Excel)使用 WebOffice 在线预览
- 后端 ResourceItemResponse 补充 title/fileType/filePath/fileSize/tags/library
- 后端 getStats 返回 totalLibraries/totalItems/itemsByLibraryType
- 前后端字段对齐:libraryType、name/type 兼容
- 修复 tags 反序列化、name 必填、主键冲突问题
- 新增 V16 迁移修复 resource_item AUTO_INCREMENT

Made-with: Cursor
2026-03-17 15:53:04 +08:00
En
673214481d feat: 课程包功能完善与代码优化
后端:
- 新增 YesNo 枚举类
- 新增 LessonStepCreateRequest、PackageGrantRequest 等 DTO
- 新增 ResourceItemCreateRequest、ResourceLibraryCreateRequest
- 新增 StatsService 统计服务实现
- 优化 AdminCourseController、AdminResourceController 等控制器
- 完善 TenantService 套餐授权功能

前端:
- 优化套餐详情页和列表页展示
- 更新自动生成的 API 类型定义

文档:
- 更新设计文档和开发日志

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 15:03:02 +08:00
En
d57affd2ee feat: 套餐审核支持通过时同时发布
- 后端 PackageReviewRequest 新增 publish 字段
- 后端 CoursePackageService.reviewPackage 支持审核通过后直接发布
- 前端审核弹窗拆分为"通过"和"通过并发布"两个按钮

状态流转:
- 驳回: status → REJECTED
- 仅通过: status → APPROVED
- 通过并发布: status → PUBLISHED

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 15:00:49 +08:00
zhonghua
459fa434ac feat: KidsMode 文档/视频预览调整,player 增强
- KidsMode: 视频对接 player 组件,文档对接 WebOffice 组件
- WebOffice: 新增 noPage 嵌入模式,支持 props 传入 url/fileName
- player: 参考 VideoPlayer 增强功能(title、emit、键盘快捷键、加载遮罩、唯一ID)

Made-with: Cursor
2026-03-17 14:43:08 +08:00
zhonghua
155f5f230b 视频预览 2026-03-17 14:17:21 +08:00
En
bb7fb86c3b feat: 租户套餐枚举优化与学校端课程查询实现
- 新增 TenantPackageStatus 枚举类,消除 status 字段魔法值
- 修改 TenantPackage 实体 status 字段类型为枚举
- 更新 CoursePackageService、TenantServiceImpl、CourseLessonService 使用枚举
- 实现学校端课程查询接口 /api/v1/school/courses
- 新增 CourseService.getTenantPackageCourses() 方法查询租户套餐下的课程
- 前端新增 Course 类型定义

共修改 26 个文件,新增 609 行,删除 83 行
2026-03-17 13:42:01 +08:00
zhonghua
c8ecbe277c fix: 教师端课程与授课记录优化
- 修复 assessment_data JSON 字段:普通文本自动包装为有效 JSON
- 修复返回时页面 ID 丢失:校验无效 ID 并跳转,goBackToDetail 优先使用路由 ID
- 修复上课记录列表:getLessons 支持 pageNum、日期范围、状态映射,list 转 items
- 修复班级与课程取值:LessonResponse 增加 courseName/className,接口返回时自动填充
- 备课/详情页增加 ID 校验,防止跳转到 undefined

Made-with: Cursor
2026-03-17 11:24:25 +08:00
En
e8b44b25e0 优化 2026-03-17 10:38:51 +08:00
En
7b54b29821 fix: 修复课程包审核管理按状态查询不生效问题
- AdminCourseController.getCoursePage 方法添加 status 和 reviewOnly 参数接收
- 修复前端按审核状态过滤时后端无法接收参数的问题
- Service 层已支持参数处理(无需修改)

相关文件:reading-platform-java/.../controller/admin/AdminCourseController.java
2026-03-17 10:33:40 +08:00
zhonghua
03726b5ab8 样式优化 2026-03-17 09:56:38 +08:00
zhonghua
4e17ee281c 在线文档支持 2026-03-16 20:06:56 +08:00
En
ce7ee34666 feat: 集成阿里云 IMM (即时媒体服务) 与 OSS 跨域配置优化
主要变更:
- 新增阿里云 IMM SDK 依赖 (imm20200930 v1.28.3)
- 新增 IMM 配置类 (ImmConfig, ImmUtil, ImmController, ImmTokenVo)
- 新增前端 API 生成文件 (imm.api.ts)
- 更新 WebOffice.vue 使用新的 imm.api 导入

配置优化:
- 三环境 (dev/test/prod) 均开启 OSS CORS 跨域支持
- 添加 IMM 服务配置 (endpoint, region, project, 密钥)
- 测试/开发环境跨域域名设置为通配符

技术栈:
- 后端:Spring Boot + 阿里云 IMM SDK
- 前端:Vue 3 + TypeScript API 生成

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 19:35:31 +08:00
zhonghua
709e59e142 feat: 展播模式优化与排课表修复
- 展播模式:空状态/错误状态添加返回上课按钮
- 展播模式:退出时自动跳转回上课页面或关闭标签页
- 数据库:lesson表id添加AUTO_INCREMENT,修复预约上课报错

Made-with: Cursor
2026-03-16 19:22:06 +08:00
zhonghua
a7e22ff35b 文件直传优化 2026-03-16 18:46:16 +08:00
En
e7348656ff feat: 更新 FileUploader 组件和生成的 API 类型
- 更新 FileUploader.vue 组件
- 更新组件类型定义
- 更新 API 生成的类型定义

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 18:15:34 +08:00
En
a1dcd529ef feat: 实现 OSS 直传功能
后端实现:
- 新增 OssTokenVo 响应类
- 修改 OssUtils 支持生成 OSS 直传 Token
- 修改 FileUploadController 添加 /oss/token 接口
- 修改 SecurityConfig 配置 OSS 相关接口权限
- 更新多环境 OSS 配置

前端实现:
- 新增 env.ts 工具函数,支持环境前缀
- file.ts 新增 getOssToken 和 uploadToOss 方法
- 修改 uploadFile 方法使用 OSS 直传

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 18:13:56 +08:00
En
f1bb1447bb feat: 前端 uploadFile 接口改为 OSS 直传
- 修改 uploadFile 方法使用 OSS 直传方式上传
- 新增 getOssToken 和 uploadToOss 方法
- 返回格式保持兼容,filePath 返回 OSS 完整 URL
- 自动添加环境前缀 (dev/test/prod)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 18:11:07 +08:00
zhonghua
d72e85f71a 添加logo 2026-03-16 17:49:09 +08:00
En
05d075eefc refactor: 代码优化和资源表修复
- 修复 CourseStatus 枚举
- 优化 CourseServiceImpl 和 TeacherStatsServiceImpl
- 修复资源表迁移脚本
- 更新开发日志

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 15:36:09 +08:00
zhonghua
4a713c41d3 chore: 隐藏通知设置及顶部通知铃铛
- 学校端系统设置:移除通知设置卡片
- 超管端系统设置:移除通知设置标签页
- 各端 Layout:移除顶部通知铃铛图标

Made-with: Cursor
2026-03-16 15:32:19 +08:00
zhonghua
7e96b80a38 Merge branch 'master' of http://8.148.151.56:3000/tonytech/kindergarten_java 2026-03-16 15:28:49 +08:00
zhonghua
1f6bd41b64 删除自动化一键登录按钮 2026-03-16 15:28:45 +08:00
En
57f9c804c9 fix: 登录验证错误信息传递修复
- JwtTokenProvider 新增 validateTokenWithReason 方法,返回具体错误原因
- JwtAuthenticationFilter token 验证失败时返回 401 错误响应
- 前端 axios 拦截器增强 403 处理,区分 token 过期和权限不足场景

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 15:26:37 +08:00
zhonghua
f25664cf9a feat: 实现各端个人信息功能
- 新增 ProfileView 共享个人信息页面
- 扩展 auth API UserProfile 支持各角色
- 为 admin/school/teacher/parent 添加 profile 路由
- 各端 Layout 用户菜单增加个人信息入口及跳转
- 家长端移动版抽屉菜单增加个人信息入口

Made-with: Cursor
2026-03-16 15:04:48 +08:00
zhonghua
23eab43590 fix(teacher): 教师端多项修复
- 课程中心: 修复搜索框重复图标、页面无数据、gradeTags/domainTags 解析
- 备课/上课: 课程/授课 ID 使用 string 避免 Long 精度丢失
- 预约上课: 补充 teacherId/title/lessonDate 等必填字段
- 备课模式: 解析 gradeTags 字符串修复 translateGradeTags 报错
- 涉及: CourseListView, PrepareModeView, LessonView, BroadcastView, LessonRecordsView

Made-with: Cursor
2026-03-16 14:54:18 +08:00
zhonghua
b6e46ba21e fix(school): 修复搜索框重复显示两个搜索图标
- 移除 a-input-search 的 #prefix 插槽(组件自带搜索按钮)
- 涉及:课程管理、教师/学生/家长/班级管理

Made-with: Cursor
2026-03-16 14:36:24 +08:00
zhonghua
73ff311370 搜索框样式调整 2026-03-16 14:33:13 +08:00
zhonghua
0777d2901a Merge branch 'master' of http://8.148.151.56:3000/tonytech/kindergarten_java 2026-03-16 14:25:32 +08:00
zhonghua
6b65bd656f fix(school): 校园端页面添加内边距,与其他端保持一致
- 为 Dashboard、教师/学生/家长/班级管理、课程、反馈、报告、成长档案、设置等页面添加 padding: 24px
- 任务、排期、课表、操作日志等页面补充 padding 与背景样式
- 课程详情、校本课程包详情页添加内边距
- 统一校园端内容区视觉与 admin/teacher 端一致

Made-with: Cursor
2026-03-16 14:25:05 +08:00
En
928f1b7afe redis添加密码 2026-03-16 14:24:17 +08:00
En
43095f97af fix: 课程创建功能调试和测试脚本优化
前端:
- CourseEditView 添加调试日志,修复创建课程后跳转逻辑(window.location.href → router.push)
- E2E 测试脚本增加日志监听和更精确的选择器
- 优化测试等待时间和元素定位逻辑
- helpers.ts 增强登录流程日志

后端:
- AdminCourseController 添加日志记录,简化课程列表查询参数
- CourseServiceImpl 添加课程创建日志

配置:
- application-dev.yml 修改为本地数据库配置(192.168.1.250)
- application-test.yml 同步使用本地数据库

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 14:17:11 +08:00
zhonghua
8956f0b790 fix: 课程包管理详情 - 修复大整数 ID 精度丢失,使用 string 传递避免课程不存在
Made-with: Cursor
2026-03-16 14:13:59 +08:00