zhonghua
|
68b95b9776
|
fix:隐藏授权文案
|
2026-03-27 11:07:45 +08:00 |
|
|
|
071b19e42e
|
fix(后端): 完善 JWT 过滤器和 SecurityConfig 配置
|
2026-03-26 16:58:30 +08:00 |
|
|
|
3a6cc4db9c
|
fix(后端): 修复 JWT 认证和日志链路追踪功能
- 新增 TraceIdAspect 切面,在 Controller 执行前生成 traceId 并放入 MDC
- 删除 TraceIdFilter 过滤器,改用 AOP 切面实现 traceId 功能
- 移除 JwtAuthenticationFilter 的@Order 注解,避免与 SecurityConfig 冲突
- 修复 SecurityConfig 中过滤器链配置,确保 JWT 过滤器正确执行
- 添加请求日志脱敏功能,对 password、token 等敏感字段进行掩码处理
技术细节:
- TraceId 使用 UUID 前 8 位大写 (如 [520D8A78])
- 过滤器执行顺序:JwtAuthenticationFilter -> Controller -> TraceIdAspect
- 所有日志文件统一输出 traceId,支持跨文件链路追踪
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-26 16:56:51 +08:00 |
|
zhonghua
|
840cf849e6
|
fix:调整命令
|
2026-03-26 15:11:00 +08:00 |
|
|
|
a003cccbeb
|
Merge remote-tracking branch 'origin/master'
|
2026-03-26 15:07:44 +08:00 |
|
|
|
c73bae7104
|
fix(后端): 请求日志敏感信息脱敏
- 添加请求参数脱敏功能,对 password、token 等敏感字段进行掩码处理
- 响应结果中的敏感信息同样脱敏
- 敏感字段列表:password, pwd, secret, token, accessToken, refreshToken, oldPassword, newPassword, confirmPassword
- 脱敏掩码:***
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-26 15:03:27 +08:00 |
|
zhonghua
|
f5c5feaff5
|
fix:UI布局错位排版优化
|
2026-03-26 15:00:45 +08:00 |
|
|
|
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 |
|
zhonghua
|
ad5963be79
|
fix(前端): 兼容 blob 错误体并优化课程草稿保存
- 解析 responseType=blob 的错误响应,正确透传后端 message
- 课程包创建保存草稿仅校验基本信息,并保存后回填 ID/实体切换到编辑态
- 主题编辑弹窗回填颜色字段,修复颜色输入框不回显
Made-with: Cursor
|
2026-03-26 14:32:45 +08:00 |
|
zhonghua
|
a8931c8708
|
前端配置调整
|
2026-03-26 14:02:08 +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 |
|
|
|
40589f59e7
|
chore: 重命名项目目录
前后端目录重命名:
- reading-platform-java/ → lesingle-edu-reading-platform-backend/
- reading-platform-frontend/ → lesingle-edu-reading-platform-frontend/
更新相关文件:
- 所有 shell 脚本中的目录引用
- pom.xml 和 application.yml 中的项目名称
- package.json 中的项目名称
- .claude/CLAUDE.md 中的路径引用
- README 文档中的路径引用
|
2026-03-26 11:31:47 +08:00 |
|
|
|
af5b050651
|
chore: 保存当前状态 before 重命名
|
2026-03-26 11:25:20 +08:00 |
|
zhonghua
|
5f55aadb75
|
fix(前端): 表单提交前去除首尾空格并统一校验
Made-with: Cursor
|
2026-03-26 10:21:34 +08:00 |
|
|
|
9d76e178de
|
chore: 更新应用配置和数据库迁移脚本
- 更新 application-dev/test/prod.yml 环境配置
- 更新 V35 清理旧套餐表的迁移脚本
- 添加部署相关文档和脚本
- 移除 CLEAN_V10_FAILED.sql 临时文件
|
2026-03-25 18:05:02 +08:00 |
|
zhonghua
|
abfbe35d3a
|
状态调整
|
2026-03-25 17:32:18 +08:00 |
|
|
|
e3cac3a005
|
删除nodeJS后端
|
2026-03-25 13:57:36 +08:00 |
|
zhonghua
|
14fd97f6a5
|
feat(course): 导入课教学环节改为可选;集体课/领域课保持必填
Made-with: Cursor
|
2026-03-25 10:50:38 +08:00 |
|
|
|
55343ead0b
|
fix(前端): 修复 ID 类型和分页 total 类型不匹配问题
- 将 Props 中 ID 字段从 number 改为 number | string,兼容后端 Long 序列化为 String
- 修复分页组件 total 字段类型,使用 Number() 转换避免 Vue warn
- 影响组件: PrepareNavigation, LessonCard, SelectLessonsModal 等
- 影响视图: StudentListView, TeacherListView, ParentListView 等
|
2026-03-25 10:47:19 +08:00 |
|
zhonghua
|
5c9be63347
|
fix(teacher): 课程资源为空时禁用展播模式按钮
Made-with: Cursor
|
2026-03-25 09:59:34 +08:00 |
|
|
|
3bd5cdfef5
|
fix(teacher): 修复 CourseBasicInfo.vue 缺少 getThemeTagStyle 导入的错误
- 添加 getThemeTagStyle 函数从 @/utils/tagMaps 的导入
- 修复主题标签样式计算时函数未定义的错误
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-25 09:52:14 +08:00 |
|
zhonghua
|
607b0896bd
|
feat(course): 导入课/集体课/领域课核心资源改为可选,取消必填校验
Made-with: Cursor
|
2026-03-25 09:40:02 +08:00 |
|
|
|
4d97e1cbf9
|
Merge remote-tracking branch 'origin/master'
|
2026-03-24 18:09:27 +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 |
|
zhonghua
|
c1ee18ca97
|
fix(admin): 课程编辑加载与表单告警;FileUploader 预览 watch 顺序;教学环节 Form.ItemRest
Made-with: Cursor
|
2026-03-24 18:05:34 +08:00 |
|
zhonghua
|
94ea219f2f
|
feat(school): 家长绑定孩子支持多选并修复表格勾选回显
Made-with: Cursor
|
2026-03-24 17:07:09 +08:00 |
|
zhonghua
|
c8f97c45d4
|
fix(admin): 核心发展目标下拉按中文子项与领域名搜索
Made-with: Cursor
|
2026-03-24 16:58:27 +08:00 |
|
zhonghua
|
a9725caf04
|
style(school): 统一列表页标题图标与 header-content 高度
Made-with: Cursor
|
2026-03-24 16:49:37 +08:00 |
|
zhonghua
|
51b94cf5cb
|
feat(teacher): 退出上课放弃课时记录; 课时列表按创建/更新时间倒序
Made-with: Cursor
|
2026-03-24 16:43:25 +08:00 |
|
|
|
1038a70d92
|
refactor(租户管理): 调整配额模态框移除套餐选择器
- 移除调整配额模态框中的套餐选择功能
- quotaForm 数据定义移除 collectionIds 字段
- 简化 handleQuota 函数,仅保留配额相关逻辑
- 使前端与后端 UpdateTenantQuotaDto 接口保持一致
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-24 16:26:53 +08:00 |
|
zhonghua
|
de448a3e64
|
feat(学校端): 教师/家长登录账号校验与租户一致,抽取 loginAccount 常量
Made-with: Cursor
|
2026-03-24 16:07:27 +08:00 |
|
zhonghua
|
1751d0e355
|
chore(课程包编辑): 隐藏完成度进度条
Made-with: Cursor
|
2026-03-24 15:59:47 +08:00 |
|
zhonghua
|
aa44f6262b
|
fix(阅读任务): 前后端字段对齐与列表时间展示;教师端时间筛选与 dateRange 修复
Made-with: Cursor
|
2026-03-24 15:56:53 +08:00 |
|
zhonghua
|
b551af1355
|
feat(课程包): 未提交状态与草稿分流,草稿不可发布审核;保存草稿跳过校验
Made-with: Cursor
|
2026-03-24 15:30:31 +08:00 |
|
zhonghua
|
40782a8905
|
feat(theme): 主题字典颜色、课程主题 Tag 展示与列表数据规范化
- 后端:theme 表增加 color 字段;主题创建/更新/课程响应返回 themeColor
- 前端:主题管理页颜色选择器与列表;管理端课程列表与详情主题 Tag
- 课程中心/课程包卡片展示主题 Tag,course-center 规范化接口字段
- 隐藏管理端课程配置列与筛选;课程详情关联主题使用 themeName/color
Made-with: Cursor
|
2026-03-24 15:11:40 +08:00 |
|
|
|
4376a4c238
|
refactor: 班级列表 UI 优化
- 移除本月授课进度条
- 简化操作按钮:"学生"改为"详情",移除"记录"按钮
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-03-24 14:50:57 +08:00 |
|
zhonghua
|
37d821990f
|
feat(展播): 退出时先跳转谢谢观看页再关闭窗口
- 新增 BroadcastThanksView 谢谢观看页
- 展播退出时先跳转谢谢观看页
- 谢谢观看页尝试关闭窗口,无法关闭则停留该页
Made-with: Cursor
|
2026-03-24 14:35:18 +08:00 |
|
|
|
67af92ddfd
|
refactor: 代码优化与错误处理增强
前端:
- mutator.ts: 响应拦截器增加业务错误码处理
- 多个 ListView/DetailView: 导入语句格式化(按字母排序)
- CollectionListView/CollectionDetailView/CourseListView: 优化下架错误处理,显示具体错误信息
后端:
- CourseCollectionServiceImpl: 下架套餐前检查是否有租户正在使用
- TeacherServiceImpl: 添加教师状态变更日志
- CoursePackageServiceImpl: 导入语句格式化
|
2026-03-24 14:11:16 +08:00 |
|
|
|
e2547daa63
|
fix: 学校端家长管理选择孩子列表优化
- 学生列表分页参数修复:page 改为 pageNum
- StudentResponse 添加 className 字段,显示班级名称
- 性别显示逻辑简化,兼容空值
- 修复 TeacherListView 中 Modal 导入错误
feat: 排课管理支持删除已取消的排课
- 新增 ScheduleRepeatType 和 ScheduleStatus 枚举
- 添加物理删除接口 /force,仅允许删除已取消的排课
- ScheduleList 和 TimetableView 增加删除按钮
|
2026-03-24 14:06:09 +08:00 |
|
zhonghua
|
342456347e
|
feat: 实现课程包数据统计前后端对齐
- 新增 CoursePackageStatsService 及 GET /packages/{id}/stats 接口
- 数据统计页:总授课次数、教师数、学生数、平均评分、趋势、反馈、最近授课、学生表现
- 课程包列表数据统计列:实时计算 usageCount、teacherCount、avgRating
- 前端 getCourseStats 调用真实 API
Made-with: Cursor
|
2026-03-24 13:57:06 +08:00 |
|
zhonghua
|
7f0ea0daa4
|
fix(LessonRecordsView): 从 LessonDetailResponse 嵌套结构正确解析 classId
Made-with: Cursor
|
2026-03-24 11:39:28 +08:00 |
|
|
|
030bbba3bb
|
Merge remote-tracking branch 'origin/master'
|
2026-03-24 11:35:16 +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 |
|
zhonghua
|
f288155c8c
|
feat(KidsMode): 添加播放按钮到主内容区,使用大号播放图标
Made-with: Cursor
|
2026-03-24 11:33:43 +08:00 |
|
zhonghua
|
5cc99d232a
|
fix: 班级学生搜索与平均得分一致性问题
- 前端: 搜索改为调用接口查询,移除 Math.random() 模拟数据
- 前端: 修复搜索图标点击、清空后重新请求
- 后端: StudentResponse 新增 readingCount/lessonCount/avgScore
- 后端: StudentRecordMapper 添加批量统计学生阅读与得分
- 后端: getClassStudents 返回真实统计数据
Made-with: Cursor
|
2026-03-24 11:22:11 +08:00 |
|
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 |
|
|
|
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 |
|
|
|
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 |
|