Commit Graph

260 Commits

Author SHA1 Message Date
zhonghua
c2d194b45d feat: 班级学生列表返回主家长姓名与联系电话
- SchoolClassController: 学生列表补充 parentName、parentPhone
- TeacherCourseController: 学生列表补充 parentName、parentPhone
- 通过 ParentStudentMapper 查询主家长(isPrimary=1),关联 Parent 获取信息

Made-with: Cursor
2026-03-24 11:04:09 +08:00
zhonghua
1e73b480a0 fix: 新增学生导入模板接口及修复阅读任务日期筛选
- 新增 GET /api/v1/school/students/import/template 接口,返回导入模板配置
- 实现阅读任务 startDate/endDate 日期范围查询(按任务日期交集筛选)
- 支持阅读任务按 startDate/endDate 排序

Made-with: Cursor
2026-03-24 10:05:28 +08:00
En
bf03bc30af feat: 教师手机号唯一性校验 & 班级相关功能优化
1. 教师手机号唯一性校验 (TeacherServiceImpl)
   - 添加 checkPhoneUnique 私有方法
   - createTeacher 和 updateTeacher 方法中调用校验
   - 租户隔离,编辑时排除当前教师

2. 班级相关功能优化
   - SchoolClassController: 班级管理接口
   - ClassService/ClassServiceImpl: 班级服务层
   - ClassCreateRequest/ClassUpdateRequest: 请求 DTO 优化
   - 新增班级教师相关 DTO: AddClassTeacherRequest, ClassTeacherUpdateRequest, UpdateClassTeacherRequest
   - 新增 ClassTeacherRole 枚举

3. 前端适配
   - school.ts API 更新
   - ClassListView.vue 班级列表页面优化
   - ParentListView.vue 家长列表页面优化

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 23:54:01 +08:00
En
c436f9f384 feat: 班级名称唯一性校验
- 在 createClass 方法中添加班级名称唯一性校验
- 在 updateClass 方法中添加班级名称唯一性校验(排除当前班级)
- 使用 MyBatis-Plus 自动逻辑删除过滤
- 同一租户下已存在的班级名称抛出 INVALID_PARAMETER 异常

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 23:49:19 +08:00
En
d6f66135f6 feat: 学生管理支持家长信息关联
- StudentResponse 新增 parentName 和 parentPhone 字段
- StudentCreateRequest/StudentUpdateRequest 新增家长信息字段
- 学生列表和详情接口返回关联的家长信息
- 创建/更新学生时自动处理家长账号和关联关系
- 支持根据手机号识别已存在家长,避免重复创建

修复学校端学生管理页面家长信息不展示的问题

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 20:49:59 +08:00
En
871f352a4b 优化 2026-03-23 19:59:23 +08:00
En
b715c9a31c Merge remote-tracking branch 'origin/master' 2026-03-23 19:58:11 +08:00
En
8aaa8cdd94 feat: 操作日志模块同步方案
后端新增:
- 新增 LogModule 枚举类,统一管理操作日志模块
- 新增 LogOperationType 枚举类,统一管理操作类型
- 修改 @Log 注解,module 参数改为 LogModule 枚举类型
- 修改 LogAspect 切面,将枚举转换为字符串存储
- 新增 GET /api/v1/school/operation-logs/modules 接口

前端修改:
- 新增 logOperationType.ts 常量文件
- 修改 OperationLogView.vue,通过 API 动态获取模块列表
- 修改 school.ts,新增 getOperationLogModules API

数据库修改:
- OperationLog 实体新增 requestParams 字段,用于记录请求参数
- 新增 V48 迁移脚本,添加 request_params 字段

重构:
- 所有 Controller 中的 @Log 注解改为使用 LogModule 枚举

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 19:57:40 +08:00
zhonghua
2d9856edac feat: 课程中心增加课程包主题筛选,过滤导入课/集体课
- 后端: 套餐筛选元数据新增 themes,getPackages 支持 themeId
- 前端: 学校端/教师端课程中心增加课程包主题下拉筛选
- 课程配置筛选和卡片展示均过滤导入课、集体课

Made-with: Cursor
2026-03-23 18:28:54 +08:00
zhonghua
212559fd9f fix: GET /school/classes 班级列表关联教师已删除时不抛异常
- 新增 TeacherService.findTeacherById 教师不存在时返回 null
- SchoolClassController 使用 findTeacherById 替代 getTeacherById

Made-with: Cursor
2026-03-23 17:59:45 +08:00
zhonghua
0e77fae390 fix: 课程包下架后需重新提交审核才能发布
- ARCHIVED 状态改为「提交审核」按钮,移除直接重新发布
- CollectionEditView/PackageEditView: 选择弹窗回显与分页保持选中

Made-with: Cursor
2026-03-23 17:23:00 +08:00
zhonghua
fdf34e9352 feat: 套餐优惠类型统一、课程审核表单校验、人工审核项必填标识
- 套餐/租户: 统一优惠类型映射(PERCENTAGE->折扣,FIXED->立减),租户套餐下拉显示优惠类型
- 课程审核: 添加 formRules 校验,人工审核项需完成全部4项,驳回时审核意见必填
- 人工审核项: 添加红色必填星号标识

Made-with: Cursor
2026-03-23 17:11:53 +08:00
zhonghua
cb737a43e5 feat: 租户配额、家长重置密码及重置密码弹窗优化
- 租户配额: 实现 PUT /admin/tenants/:id/quota 更新逻辑,修复回显老值问题
- 家长重置密码: 改为后端生成临时密码并返回,与教师/租户接口一致
- 重置密码弹窗: 确认按钮文案改为「重置」,新密码区域字体改为白色

Made-with: Cursor
2026-03-23 16:55:01 +08:00
zhonghua
354071b6a3 feat(school): 新增学生调班与调班历史 API
- GET /api/v1/school/students/{id}/history 获取学生调班历史
- POST /api/v1/school/students/{id}/transfer 学生调班
- 新增 TransferStudentRequest、StudentTransferHistoryItemResponse DTO
- ClassService 新增 getStudentClassHistory 方法

Made-with: Cursor
2026-03-23 16:38:54 +08:00
zhonghua
c6328dd441 fix:保存主题统一 2026-03-23 16:26:10 +08:00
zhonghua
1d23f617d5 fix: 新增学生时班级不回显 - StudentCreateRequest 支持 classId,创建时分配班级
Made-with: Cursor
2026-03-23 16:03:00 +08:00
zhonghua
1783706d63 fix: 课程包详情页标题改为「详情」; 优化课程包编辑页相关逻辑
Made-with: Cursor
2026-03-23 15:34:26 +08:00
zhonghua
877acf33b8 fix(admin): 课程包编辑页问题修复
- 封面回显与保存:使用 getFileUrl 统一处理,修复 watch 逻辑
- 课程介绍/排课参考/环创建设回显:修复 API 字段映射和解析
- 测评内容 JSON 格式:新增 parseAssessmentDataForDisplay 前后端统一
- 保存后跳转列表:修复新建/编辑流程的 router.replace
- 表单校验:导入课、集体课、领域课各必填一条,下一步时校验
- 保存按钮:修复 @click 将 event 误传为 isDraft 导致不跳转
- Lesson API:updateLesson/updateStep 传入正确的 courseId

Made-with: Cursor
2026-03-23 15:15:56 +08:00
En
36b8621060 Merge remote-tracking branch 'origin/master' 2026-03-23 14:47:53 +08:00
zhonghua
029881f09f fix: 成长记录 images 序列化统一 + 租户套餐移除确认流程
- 成长记录: images 统一为 string[],修复 OpenAPI/Java DTO/前端类型
- 租户更新: TenantUpdateRequest 新增 forceRemove,ErrorCode 新增 REMOVE_PACKAGE_HAS_SCHEDULES
- 异常处理: BusinessException 支持附加 data,GlobalExceptionHandler 返回 data 供前端确认弹窗

Made-with: Cursor
2026-03-23 14:47:01 +08:00
En
7882fadf13 fix: 学校端导出接口空数据时显示具体错误消息
- 修改 DashboardView.vue 中三个导出方法的错误处理逻辑
- 导出授课记录/教师绩效/学生统计时,空数据场景下显示后端返回的具体提示
- 错误消息从"导出失败"改为使用后端返回的详细消息内容

影响范围:
- reading-platform-frontend/src/views/school/DashboardView.vue
  - handleExportLessons
  - handleExportTeacherStats
  - handleExportStudentStats

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 14:46:50 +08:00
zhonghua
da415703cf fix: 排课弹窗移除重复套餐选择步骤,统一教师端与学校端
- 合并步骤1与步骤2,直接在选择课程包中展示套餐选择器
- 教师端、学校端均由5步改为4步流程
- 修复ID类型比较问题,使用宽松相等避免选中高亮异常

Made-with: Cursor
2026-03-23 14:31:48 +08:00
zhonghua
275b0da7a0 style: 我的课表课程信息主题色统一为橙色
Made-with: Cursor
2026-03-23 14:18:49 +08:00
zhonghua
80246c9dec feat: 校园端排课、教师端预约排课添加套餐选择
- 多套餐时步骤1展示套餐选择器,支持切换套餐后加载对应课程包
- 单套餐时保持原行为,自动选中并展示课程包
- 管理端数据模型已支持一租户多套餐、一套餐多课程

Made-with: Cursor
2026-03-23 14:18:10 +08:00
En
fb4d63ec99 Merge remote-tracking branch 'origin/master' 2026-03-23 14:13:39 +08:00
En
48c64176e5 feat: 超管端实现租户重置密码功能
后端实现:
- TenantService 添加 resetPasswordAndReturnTemp 方法
- TenantServiceImpl 实现重置密码逻辑,生成 8 位随机临时密码
- AdminTenantController 完善 resetTenantPassword 接口,返回临时密码

前端实现:
- TenantListView 添加重置密码模态框组件
- 采用与教师端一致的 UI 样式
- 使用超管端 Indigo 紫色主题色 (#6366F1)
- 支持密码一键复制功能

API 端点:
- POST /api/v1/admin/tenants/{id}/reset-password

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 14:13:11 +08:00
zhonghua
7d659e87c8 fix: 成长档案 images JSON 格式化、排序与卡片排版
- 后端:GrowthRecordResponse.images 改为 List<String>,Mapper 解析 JSON
- 后端:TeacherGrowthController 返回 GrowthRecordResponse 统一 images 格式
- 后端:分页按 updatedAt、createdAt 倒序排序
- 前端:教师/学校端成长档案卡片封面与排版修复(cover 约束、flex 布局)

Made-with: Cursor
2026-03-23 11:58:10 +08:00
zhonghua
ac8e07c784 feat: 课程中心主题筛选改为课程配置筛选,课程包卡片展示课程配置
Made-with: Cursor
2026-03-23 11:12:09 +08:00
zhonghua
4122bcd240 feat: 课程包年级筛选与适用年级对齐,修复JSON_CONTAINS占位符
Made-with: Cursor
2026-03-23 10:48:09 +08:00
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
2e0e5db06b Merge branch 'retirado' 2026-03-21 21:32:57 +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
c2e4477cdf docs: 更新开发日志 2026-03-21
记录学校端课程中心重构工作:
- 后端 SchoolCourseController 返回完整 CourseResponse
- 新增 CourseCenterView.vue 组件
- 新增 course-center.ts API 层
- 菜单文案修改:课程管理 → 课程中心
- 课程详情页现在展示完整数据

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 18:25:39 +08:00
Claude Opus 4.6
ca56d8556e docs: 添加课程中心重构设计文档
记录教师端和学校端课程中心重构的设计方案:
- 功能对比矩阵
- 架构设计(前端组件、API层、后端接口)
- 页面布局设计
- 关键技术实现
- 文件变更清单
- 测试验证要点

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 18:22:31 +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
Claude Opus 4.6
cf7e6bf94f Merge remote-tracking branch 'origin/master' into retirado 2026-03-21 16:09:38 +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
Claude Opus 4.6
101b0a6a42 docs: 更新 2026-03-20 开发日志和 CHANGELOG
- 完善今日工作总结
- 添加关键文件索引
- 记录遗留问题和后续优化建议
- 更新 CHANGELOG 添加阅读任务模块重写记录

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-20 15:15:03 +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