79d98be366
feat(后端): 添加日志链路追踪功能,支持生产环境快速错误定位
...
- 新增 TraceIdFilter 过滤器,为每个请求生成唯一链路追踪 ID
- 修改 logback-spring.xml,所有日志输出包含 traceId
- 修改 RequestLogAspect,记录用户上下文信息(userId, role)
- 修改 GlobalExceptionHandler,异常日志包含用户信息和请求 URI
- 修改 application-test.yml,添加 SQL 日志全量输出配置
- 修改 JwtAuthenticationFilter,添加 Order 注解确保过滤器顺序
- 新增文档:日志优化方案 - 生产环境错误定位.md
技术细节:
- TraceId 使用 UUID 前 8 位(大写),如 [8DFC19D9]
- 过滤器执行顺序:TraceIdFilter → JwtAuthenticationFilter
- 所有日志文件(主日志、错误日志、请求日志、SQL 日志)统一输出 traceId
- 支持通过 grep "traceId" logs/*.log 快速定位请求完整链路
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 14:40:16 +08:00
de264d3298
refactor(后端): 重构包名从 com.reading.platform 到 com.lesingle.edu
...
- 修改 pom.xml 中的 groupId
- 移动所有 Java 文件到新包路径 com/lesingle/edu
- 更新所有 Java 文件的 package 和 import 语句 (438 个文件)
- 更新配置文件中的日志包名引用 (application-*.yml, logback-spring.xml)
- 更新 @MapperScan 注解路径
- 更新 CLAUDE.md 文档中的目录结构说明
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 12:02:20 +08:00
af5b050651
chore: 保存当前状态 before 重命名
2026-03-26 11:25:20 +08:00
6f47a07401
docs(开发日志): 补充 RSA 加密功能文档和细节调整
...
- 追加 RSA 密码加密传输的完整实现文档
- 操作日志相关细节调整
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 18:08:29 +08:00
c935988188
feat(登录安全): 实现 RSA 密码加密传输
...
后端:
- 新增 RsaEncryptionUtil 工具类,支持 RSA 2048 位加解密
- 新增 RsaKeyRotationTask 定时任务,每月 1 日凌晨 2 点自动更换密钥
- 新增 EncryptedLoginRequest 和 PublicKeyResponse DTO
- AuthController 添加 /public-key 和 /login/encrypted 接口
前端:
- 添加 jsencrypt 依赖用于 RSA 加密
- 新增 encryption.ts 工具函数
- auth.ts 添加 getPublicKey 和 loginEncrypted API
- user.ts 修改 login 函数使用 RSA 加密流程
feat(操作日志): 添加请求参数和请求接口字段
- 数据库迁移 V50 添加 request_uri 字段
- LogAspect 记录请求 URI
- OperationLogResponse 新增 requestParams 和 requestUri 字段
- 前端 OperationLogView 详情弹窗展示新字段
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 18:06:19 +08:00
53273ab6e0
feat: 租户详情优化 - 添加统计字段,移除最近列表查询
...
后端变更:
- TenantResponse 添加 classCount、lessonCount 字段用于统计显示
- TenantServiceImpl 添加 getTenantDetail() 和 buildTenantResponse() 方法
- 移除最近教师/学生/班级列表查询逻辑(性能优化)
- 新增 StudentClassStatus 枚举类
前端变更:
- TenantListView.vue 更新详情展示,使用统计数字替代列表
- admin.ts 更新 TenantDetail 类型定义
优化:
- ClassServiceImpl 和 StudentServiceImpl 代码优化
Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-24 11:34:25 +08:00
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
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
e8219e5aab
Merge branch 'retirado'
...
# Conflicts:
# docs/dev-logs/2026-03-21.md
2026-03-21 21:37:17 +08:00
2e0e5db06b
Merge branch 'retirado'
2026-03-21 21:32:57 +08:00
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
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
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
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
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
a054c410c2
refactor: 学校端课程响应重构
...
- 将 toSchoolCourseResponse 转换逻辑从 Controller 移到 Response 类
- 使用静态方法引用简化 Controller 代码
- 删除已弃用的文档文件
2026-03-20 09:42:04 +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
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
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
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
279fa79b56
merge: 合并远程更新并解决冲突
...
- 合并学校课程管理搜索与年级筛选功能
- 修复教学资源区域间距问题
- 删除已忽略的自动生成文件
- 新增排课弹窗优化(移除课程选择,自动选择第一门课程)
- 新增 lessonType 从 schedule_ref_data 解析功能
- 修复前端代理配置(端口 8480)
2026-03-18 14:46:32 +08:00
Claude Opus 4.6
6b5d0e171b
feat: 添加排课计划参考示例数据
...
- 创建 Flyway 迁移脚本 V29__add_schedule_ref_data.sql
- 为小猪佩奇绘本阅读、好饿的毛毛虫、三只小猪添加排课计划参考
- 包含导入课、集体课、五大领域课的排课建议
- 更新开发日志和变更日志
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 09:39:27 +08:00
Claude Opus 4.6
d3cf4fd43b
feat: 添加课程包课程列表查询API
...
- 新增 GET /api/v1/school/packages/{packageId}/courses 接口
- 返回课程包详情,包含课程列表和排课计划参考数据
- 更新开发日志和变更日志
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 09:39:27 +08:00
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
7f8a077f58
docs: 清理测试结果文件,保留排课功能测试记录
...
- 删除 playwright-report/index.html(测试报告目录已清理)
- 保留排课功能完整测试报告文档
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 19:36:26 +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
Claude Opus 4.6
d2a9dbd0f8
Merge remote-tracking branch 'origin/master'
2026-03-17 16:56:41 +08:00
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
dfbf89e8fe
feat: 实现多地点登录支持
...
主要变更:
- 修改 JwtTokenRedisService.validateToken() 方法,移除 token 一致性检查
- 在 JwtAuthenticationFilter 中新增 isAccountActive() 方法,每次请求验证账户状态
- 所有状态判断改为忽略大小写 (equalsIgnoreCase)
- 保留黑名单机制用于主动踢人、登出等场景
功能特性:
- 同一账号可以在多个设备/浏览器同时登录
- 各个登录状态的 token 都有效,不会互踢下线
- 支持所有角色:admin, school, teacher, parent
- JWT token 过期时间(默认 24 小时)保证安全性
修改文件:
- JwtTokenRedisService.java
- JwtAuthenticationFilter.java
- AuthServiceImpl.java
文档更新:
- docs/CHANGELOG.md
- docs/dev-logs/2026-03-17.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 12:13:21 +08:00
Claude Opus 4.6
1a79fef30f
Merge remote-tracking branch 'origin/master'
2026-03-17 10:22:02 +08:00
05d075eefc
refactor: 代码优化和资源表修复
...
- 修复 CourseStatus 枚举
- 优化 CourseServiceImpl 和 TeacherStatsServiceImpl
- 修复资源表迁移脚本
- 更新开发日志
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 15:36:09 +08:00
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
938503f2b8
chore: 更新启动脚本使用 Java (Spring Boot) 后端
...
- 修改后端目录从 reading-platform-backend 改为 reading-platform-java
- 修改后端端口从 3000 改为 8080
- 修改启动命令从 npm run start:dev 改为 mvn spring-boot:run
- 添加 JAVA_HOME 自动检测和设置(默认使用 /f/Java/jdk-17)
- 修改日志文件从 reading-platform-backend.log 改为 reading-platform-java.log
- 修改健康检查接口为 /actuator/health
- 增加启动等待超时时间到 60 秒(Java 启动较慢)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 10:35:30 +08:00
6e11c874d2
chore: 忽略 target 目录和 .class 文件
...
- 添加 target/ 到 .gitignore
- 从 git 暂存区移除已追踪的 target 目录
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 16:50:54 +08:00
1fb6488468
test: 学校端 E2E 测试全部通过 - 修复菜单点击和退出登录问题
...
修复的问题:
- 二级菜单点击问题:使用 page.evaluate() 绕过 Playwright 可见性检查
- 页面标题断言严格模式冲突:使用 getByRole('heading').first()
- 退出登录功能:增强 logout() 函数,支持多种退出方式
测试结果:
- 69 个测试全部通过
- 1 个测试跳过(通知管理 - 学校端无此菜单)
- 执行时间:8.3 分钟
修改的文件:
- tests/e2e/school/helpers.ts - 修复 clickSubMenu 和 logout 函数
- tests/e2e/school/04-students.spec.ts - 修复页面标题断言
- tests/e2e/school/05-teachers.spec.ts - 修复页面标题断言
- tests/e2e/school/99-logout.spec.ts - 使用增强的 logout 函数
文档更新:
- docs/dev-logs/2026-03-14.md - 更新测试结果
- docs/CHANGELOG.md - 添加学校端测试记录
- docs/test-logs/school/2026-03-14-school-e2e-full-pass.md - 详细测试报告
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 11:25:38 +08:00
Claude Opus 4.6
56e839f99a
docs: 更新今日开发日志和测试记录
...
- 新增第4节:代码合规性审查与重构(P0/P1/P2修复)
- 新增第5节:Playwright自动化测试
- 新增自动化测试记录文档
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 15:36:18 +08:00
Claude Opus 4.6
c0b465dcea
docs: 更新CHANGELOG - 记录代码合规性审查修复
...
- P0 三层架构违规修复(4项)
- P1 API 路径统一(8项)
- P2 文档规范更新(5项)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:14:51 +08:00
Claude Opus 4.6
56508eb066
feat: 三端全链路测试完成 - 学校端、教师端、课程包业务
...
## 后端修复
- 修复教师端课程查询 - 包含系统课程和租户课程
- 修复系统课程创建 - isSystem 标志正确保存到数据库
- 新增套餐授权接口 POST /api/v1/admin/packages/{id}/grant
## 新增 Controller
- SchoolStatsController - 学校端统计数据
- SchoolCourseController - 学校端课程管理
- TeacherStatsController - 教师端统计数据
## 前端修复
- 修复 API 客户端导入 - getApi → getReadingPlatformAPI
- 修复三端 API 调用方法名
- 更新 Orval 生成配置和 API 类型
- 修复学校端视图 - result.items → result.list
## 测试结果
- ✅ 超管端:课程创建/发布、套餐完整流程、授权
- ✅ 学校端:登录、统计、课程、套餐查看
- ✅ 教师端:登录、Dashboard、班级、课程查看
## 文档更新
- 新增测试记录:/docs/test-logs/
- 更新 CHANGELOG.md
- 更新今日开发日志
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 13:48:28 +08:00
Claude Opus 4.6
d6884667a4
docs: 更新今日开发日志 - 记录晚间测试与修复工作
...
- 添加Java后端测试与问题修复章节
- 记录3个主要问题及修复方案
- 更新测试结果为全部通过
- 添加今日完成工作总结
- 明确明日计划:基于Java后端进行重构
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 20:05:13 +08:00
Claude Opus 4.6
57a86a3bd0
docs: 更新CHANGELOG - 记录登录问题修复
...
- 添加登录问题修复章节
- 记录所有实体类表名修正
- 记录AuthServiceImpl增强内容
- 更新测试结果
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 20:03:15 +08:00
Claude Opus 4.6
eb6724adf7
fix: 修复登录问题 - 所有角色登录功能正常
...
修复学校/教师/家长用户登录失败和课程套餐创建的问题。
**问题修复:**
- 修正实体类表名映射(去除 t_ 前缀)
- 添加Tenant登录支持到AuthServiceImpl
- 为Tenant实体添加username和password字段
- 添加school角色的getCurrentUserInfo和changePassword支持
**实体类表名修正:**
- Teacher.java: t_teacher → teachers
- Parent.java: t_parent → parents
- Student.java: t_student → students
- AdminUser.java: t_admin_user → admin_users
- Tenant.java: t_tenant → tenants
**AuthServiceImpl增强:**
- 添加TenantMapper依赖
- 添加school角色枚举支持
- login方法添加tenant自动检测
- getCurrentUserInfo添加school case
- changePassword添加school case
**新增文件:**
- init-users.sql - 用户数据初始化脚本
- V20260312__fix_login_issues.sql - 数据库迁移脚本
- 2026-03-12-full-test.md - 功能测试记录
**测试结果:**
✅ 超管登录 (admin/123456)
✅ 学校登录 (school1/123456)
✅ 教师登录 (teacher1/123456)
✅ 家长登录 (parent1/123456)
✅ 课程套餐创建
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 20:02:48 +08:00
Claude Opus 4.6
081fac9d97
feat: Java后端迁移完成 - 资源管理API修复与文档更新
...
完成从Node.js/NestJS到Java Spring Boot的后端迁移,修复资源管理API错误。
**核心修复:**
- 修复资源库API 500错误 - ResourceLibrary/ResourceItem实体与数据库表结构对齐
- 更新ID类型从Long改为String,匹配数据库varchar(32)
- 修正字段映射(libraryType → type)
**新增Java实体(7个):**
- CoursePackage, CoursePackageCourse, TenantPackage
- CourseLesson, LessonStep, LessonStepResource
- Theme
**新增API控制器(5个):**
- AdminResourceController - 资源库管理
- AdminPackageController - 课程套餐管理
- AdminCourseLessonController - 课程环节管理
- AdminThemeController - 主题字典管理
- SchoolPackageController - 学校套餐管理
**新增服务层(5个):**
- ResourceLibraryService, CoursePackageService, CourseLessonService
- ThemeService, FileStorageService
**文档更新:**
- 新增 Java环境配置与启动指南.md
- 新增 Java后端启动完整指南.md
- 新增 数据库迁移指南.md
- 更新 CHANGELOG.md 和开发日志
**前端修复:**
- 解决package.json合并冲突
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 19:49:48 +08:00
Claude Opus 4.6
e87e2dde00
refactor: 完成代码重构规范化 - 2026-03-12
...
后端重构:
- 添加统一响应格式 ResultDto<T> 和 PageResultDto<T>
- 添加分页查询 DTO 基类 PageQueryDto
- 添加响应转换拦截器 TransformInterceptor
- 添加公共工具函数(JSON 解析、分页计算)
- 配置 Swagger/OpenAPI 文档(访问路径:/api-docs)
- Tenant 模块 DTO 规范化示例(添加 @ApiProperty 装饰器)
- CourseLesson 控制器重构 - 移除类级路径参数,修复 Orval 验证错误
- 后端 DTO 规范化 - 为 Course、Lesson、TeacherCourse、SchoolCourse 控制器添加完整的 Swagger 装饰器
前端重构:
- 配置 Orval 从后端 OpenAPI 自动生成 API 客户端
- 生成 API 客户端代码(带完整参数定义)
- 创建 API 客户端统一入口 (src/api/client.ts)
- 创建 API 适配层 (src/api/teacher.adapter.ts)
- 配置文件路由 (unplugin-vue-router)
- 课程模块迁移到新 API 客户端
- 修复 PrepareModeView.vue API 调用错误
- 教师模块迁移到新 API 客户端
- 修复 school-course.ts 类型错误
- 清理 teacher.adapter.ts 未使用导入
- 修复 client.ts API 客户端结构
- 创建文件路由目录结构
Bug 修复:
- 修复路由配置问题 - 移除 top-level await,改用手动路由配置
- 修复响应拦截器 - 正确解包 { code, message, data } 格式的响应
- 清理 teacher.adapter.ts 未使用导入
- 修复 client.ts API 客户端结构
- 创建文件路由目录结构
系统测试:
- 后端 API 测试通过 (7/7)
- 前端路由测试通过 (4/4)
- 数据库完整性验证通过
- Orval API 客户端验证通过
- 超管端功能测试通过 (97.8% 通过率)
新增文件:
- reading-platform-backend/src/common/dto/result.dto.ts
- reading-platform-backend/src/common/dto/page-query.dto.ts
- reading-platform-backend/src/common/interceptors/transform.interceptor.ts
- reading-platform-backend/src/common/utils/json.util.ts
- reading-platform-backend/src/common/utils/pagination.util.ts
- reading-platform-frontend/orval.config.ts
- reading-platform-frontend/src/api/generated/mutator.ts
- reading-platform-frontend/src/api/client.ts
- reading-platform-frontend/src/api/teacher.adapter.ts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 17:27:13 +08:00
Claude Opus 4.6
c52e185ed0
docs: 更新 CHANGELOG - 记录下午的问题修复工作
...
新增内容:
- 问题修复与功能测试部分 (2026-03-12 下午)
- 详细的修复内容和测试结果
- 6个提交记录
- 待解决问题列表
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:37:01 +08:00
Claude Opus 4.6
cfb3549c1f
docs: 更新开发日志 - 记录下午的功能测试和问题修复工作
...
新增内容:
- 功能测试计划
- 问题诊断报告
- 测试总结文档
- 5个问题修复记录
- 完整的测试结果
修复成果:
- 教师端核心功能基本可用
- 登录、控制台、课程中心、校本课程 ✓
- 错误处理逻辑统一
- API 调用参数修复
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:36:34 +08:00
Claude Opus 4.6
6da26fa256
docs: 添加功能测试总结和问题诊断报告
...
测试结果:
- 教师端核心功能基本可用
- 登录、控制台、课程中心、校本课程 ✓
- 授课记录部分可用
已修复的问题:
1. 路由配置缺失 - 恢复完整嵌套路由
2. API 参数不兼容 - 移除不被后端接受的参数
3. 错误处理逻辑 - 统一使用 error.message
4. 重复函数声明 - 删除重复代码
文档:
- docs/test-logs/teacher/2026-03-12-final-summary.md
- docs/test-logs/teacher/2026-03-12-issue-diagnosis.md
- docs/test-logs/teacher/2026-03-12-functional-test-plan.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:36:12 +08:00
Claude Opus 4.6
de54ed112c
fix: 修复教师课程 API 参数问题
...
- 移除 getTeacherCourses 中的 page 和 pageSize 参数
- 后端 API 验证导致这些参数被拒绝
- 添加功能测试计划和问题诊断文档
测试结果:
- 后端 API 不接受 page/pageSize 参数
- 需要统一错误处理逻辑 (error.response?.data?.message → error.message)
- Dashboard 组件有渲染错误需要修复
相关文档:
- docs/test-logs/teacher/2026-03-12-functional-test-plan.md
- docs/test-logs/teacher/2026-03-12-issue-diagnosis.md
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:32:58 +08:00