|
|
27cb883b23
|
feat: Flyway 迁移脚本更新课程包统计数据
V10__update_course_package_stats.sql:
- 根据 lesson 表实际数据更新 usage_count (status != 'cancelled')
- 根据 lesson 表实际数据更新 teacher_count (status = 'completed' 去重教师)
|
2026-03-20 14:38:26 +08:00 |
|
|
|
4ec61e48ca
|
fix: 课程包统计逻辑修正
1. CoursePackageMapper: 新增 decrementUsageCount 方法
- 课程取消时减少使用次数
2. LessonServiceImpl: 完善课程状态变更时的统计
- cancelLesson: 取消时 usage_count -1
- startLesson: 设置 startDatetime
- completeLesson: 完成时设置 endDatetime
统计口径:
- usage_count: status != 'cancelled' 的课程数(创建时 +1,取消时 -1)
- teacher_count: status = 'completed' 的课程中去重教师数
|
2026-03-20 14:38:26 +08:00 |
|
zhonghua
|
161e05dce4
|
fix:修复数据库迁移启动失败
|
2026-03-20 14:34:21 +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 |
|
|
|
13fc0e720e
|
refactor: 课程包统计与启动脚本优化
1. LessonStatus 枚举:code 值改为大写(与枚举名一致)
2. CoursePackageMapper:新增课程包统计方法
- incrementUsageCount: 增加使用次数
- updateTeacherCount: 更新教师数量(去重统计)
3. 启动脚本:端口调整为 8481(后端) 和 5174(前端)
|
2026-03-20 11:15:08 +08:00 |
|
|
|
79e90410dd
|
refactor: 替换 Lesson 状态魔法值为 LessonStatus 枚举
- 将 LessonServiceImpl 中所有状态魔法值替换为 LessonStatus 枚举
- 提升代码可维护性和类型安全
|
2026-03-20 11:04:10 +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 |
|
Claude Opus 4.6
|
a31921f27f
|
fix: 统一启动脚本端口配置为 8480
- 修改 start-all.sh: 端口检查、健康检查使用 8480
- 修改 stop-all.sh: 停止后端服务使用 8480
- 与 application.yml 中的 SERVER_PORT:8480 保持一致
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-20 09:55:35 +08:00 |
|
|
|
a054c410c2
|
refactor: 学校端课程响应重构
- 将 toSchoolCourseResponse 转换逻辑从 Controller 移到 Response 类
- 使用静态方法引用简化 Controller 代码
- 删除已弃用的文档文件
|
2026-03-20 09:42:04 +08:00 |
|
|
|
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 |
|
|
|
69d00d7650
|
Merge remote-tracking branch 'origin/master'
|
2026-03-19 17:53:05 +08:00 |
|
zhonghua
|
7c5110b6d2
|
feat: 新建排课课程类型图标改用 @ant-design/icons-vue
Made-with: Cursor
|
2026-03-19 17:41:39 +08:00 |
|
|
|
2b611f6c17
|
fix(V41): 修复中间表优化迁移脚本(使用存储过程处理不存在的情况)
- 使用存储过程和 IF EXISTS 检查来删除索引和字段
- 避免因为索引/字段不存在导致迁移失败
- 创建临时 FlywayCleanerConfig 用于清理失败的 v41 迁移记录
- 成功执行 V41 迁移,优化中间表结构
影响范围:
- course_collection_package: 删除 uk_collection_package 索引和 deleted 字段
- tenant_course: 删除 uk_tenant_course 索引和 deleted 字段
- class_teacher: 删除 deleted 字段
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-19 17:28:15 +08:00 |
|
|
|
48172921d7
|
fix: 修复 V41 迁移脚本的 SQL 语法错误(MySQL 不支持 IF EXISTS)
|
2026-03-19 16:54:21 +08:00 |
|
|
|
dad4c14f97
|
Merge remote-tracking branch 'origin/master'
|
2026-03-19 16:40:13 +08:00 |
|
|
|
60213b513d
|
refactor(entity): 中间表优化 - 移除联合唯一索引和 deleted 字段
- CourseCollectionPackage、TenantCourse、ClassTeacher 改为独立实体类
- 不再继承 BaseEntity,移除 deleted 字段,使用物理删除
- 创建 V41 迁移脚本移除联合唯一索引和 deleted 字段
- 更新中间表设计规范到 CLAUDE.md 和统一开发规范.md
refactor(entity): 中间表优化 - 移除联合唯一索引和 deleted 字段
- CourseCollectionPackage、TenantCourse、ClassTeacher 改为独立实体类
- 不再继承 BaseEntity,移除 deleted 字段,使用物理删除
- 创建 V41 迁移脚本移除联合唯一索引和 deleted 字段
- 更新中间表设计规范到 CLAUDE.md 和统一开发规范.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-19 16:38:51 +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 |
|
|
|
7743ae7a01
|
优化
|
2026-03-19 15:38:00 +08:00 |
|
|
|
a2751d7aa5
|
Merge remote-tracking branch 'origin/master'
# Conflicts:
# reading-platform-java/src/main/java/com/reading/platform/service/CourseLessonService.java
|
2026-03-19 15:27:03 +08:00 |
|
|
|
67b87fae73
|
refactor(service): Service 层重构 - 接口与实现分离
重构以下服务类为接口 + 实现类结构,符合三层架构规范:
- CourseCollectionService → CourseCollectionService + CourseCollectionServiceImpl
- CourseLessonService → CourseLessonService + CourseLessonServiceImpl
- ResourceLibraryService → ResourceLibraryService + ResourceLibraryServiceImpl
- ThemeService → ThemeService + ThemeServiceImpl
变更详情:
- 接口继承 IService<Entity>,定义业务方法签名
- 实现类继承 ServiceImpl 并实现对应接口,添加 @Override 注解
- CourseCollectionServiceImpl 注入 CourseLessonService 接口依赖
- FileStorageService 保持原结构(纯工具类无需拆分)
验证:
- mvn compile -DskipTests 编译通过
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-19 15:08:01 +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
|
c652cda7a8
|
fix: 教师端课程包按 学校->套餐->课程包 层级查询
- 新增 getTenantPackageCoursePage 方法实现层级分页查询
- TeacherCourseController 使用新方法替代直接按 tenant_id 查询
- 修复 /api/v1/teacher/courses 无数据问题
Made-with: Cursor
|
2026-03-19 14:20:49 +08:00 |
|
zhonghua
|
ccce7e66bb
|
feat(school): 教师管理前后端对齐 - 支持loginAccount/classIds字段
- TeacherCreateRequest: 添加@JsonAlias(loginAccount)支持前端字段
- TeacherCreateRequest/UpdateRequest: 支持classIds班级分配
- TeacherResponse: 返回loginAccount、classIds、classNames、lessonCount
- 重置密码接口: 自动生成并返回tempPassword
- 创建/更新教师时处理class_teacher关联
Made-with: Cursor
|
2026-03-19 14:11:41 +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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
134cc6a075
|
Merge remote-tracking branch 'origin/master'
|
2026-03-19 11:09:28 +08:00 |
|
zhonghua
|
2eb4a28b89
|
修复文件上传
|
2026-03-19 10:53:13 +08:00 |
|
|
|
37083d9b3b
|
docs: 修改主键策略为数据库自增(不再使用雪花算法)
- 将实体类主键策略从 ASSIGN_ID(雪花算法)改为 AUTO(数据库自增)
- 更新 BaseEntity 基类:@TableId(type = IdType.AUTO)
- 更新所有表结构示例:id BIGINT PRIMARY KEY AUTO_INCREMENT
- 更新中间表示例:主键类型从 VARCHAR(32) 改为 BIGINT
- 统一使用 Long 类型作为 ID 字段类型
原因:
- 数据库自增简单可靠,便于调试和数据迁移
- 避免雪花算法在分布式环境下的时钟回拨问题
- 对于本项目规模,自增 ID 完全满足需求
- 与现有数据库表结构保持一致(如 course_collection 等表)
|
2026-03-19 10:51:04 +08:00 |
|
|
|
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 |
|
|
|
bad446c069
|
Merge remote-tracking branch 'origin/master'
|
2026-03-19 09:39:52 +08:00 |
|
Claude Opus 4.6
|
10936b7a78
|
fix: 修复迁移脚本被 .gitignore 忽略的问题
- 添加 !**/db/migration/*.sql 例外规则
- 补充 V32-V37 Flyway 迁移脚本
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-19 09:39:38 +08:00 |
|
|
|
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 |
|
zhonghua
|
640fbc94f9
|
feat: 添加 CoursePackageServiceImpl 实现 CoursePackageService 接口修复启动失败
Made-with: Cursor
|
2026-03-18 18:38:45 +08:00 |
|
Claude Opus 4.6
|
41d2cc4030
|
docs: 更新 2026-03-18 开发日志和变更记录
新增内容:
- 套餐管理功能增强完整记录
- 数据库变动详细记录
- 远程合并与冲突解决记录
- API 变更记录
- 文件变更统计
更新内容:
- CHANGELOG.md 新增套餐管理功能增强章节
- 2026-03-18.md 完整重构为详细开发日志
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-18 18:21:53 +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 |
|