Commit Graph

148 Commits

Author SHA1 Message Date
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
zhonghua
3918ccc9af 字段读取优化 2026-03-16 13:53:44 +08:00
zhonghua
87899886d1 feat: 套餐审核管理 - 审核页面、驳回可重新编辑提交、审核页已驳回不允许审核
Made-with: Cursor
2026-03-16 13:43:14 +08:00
zhonghua
f5de4e613d fix: 课程套餐管理详情修复 - Long 序列化为 String 避免 JS 精度丢失,修复 PUT 课程列表 JSON 格式
Made-with: Cursor
2026-03-16 11:53:27 +08:00
zhonghua
691e0248a2 fix: 课程包管理审核页面优化
- 修复 list/items 数据格式转换,解决暂无数据问题
- 新增课程驳回接口 POST /api/v1/admin/courses/{id}/reject
- 审核页仅返回待审核和已驳回(reviewOnly),排除已通过
- 修复状态筛选、自动检查列逻辑
- 后端支持 status 和 reviewOnly 参数

Made-with: Cursor
2026-03-16 11:08:27 +08:00
zhonghua
a461f58d3a fix: orval API 生成优化 - 修复 oneOf schema 验证错误
- 新增 scripts/fetch-openapi.js:拉取并修复 OpenAPI 文档
- 内联 ResultObject[] 的 \,移除非法 schema 名
- orval 使用本地 openapi.json,api:update 自动执行 api:fetch
- AdminStatsController: Result<Object[]> 改为 Result<List<Map<String, Object>>>
- .gitignore: 忽略 openapi.json

Made-with: Cursor
2026-03-16 10:45:15 +08:00
En
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
En
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
En
1aec778dd6 fix: 修复教师端成长档案列表 loading 问题
- 删除 teacher.ts 中重复的 getTeacherCourseUsage 导出
- 修复 GrowthRecordView.vue 中字段名不匹配:items -> list

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 16:36:57 +08:00
En
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
066b1f2257 refactor: 代码合规性审查修复 - 三层架构、API路径、文档规范
## P0 三层架构违规修复 (4项)
- 创建 SchoolStatsService/TeacherStatsService,移除Controller直接调用Mapper
- 修复 AdminCourseController 使用 Service 层方法
- 修复 TeacherCourseController 使用 ClassService 获取班级
- 新增 ClassService.getActiveClassesByTenantId()
- 新增 CourseService.createSystemCourse()

## P1 API 路径统一 (8项)
后端路径统一为 /api/v1/admin/*:
- AdminCourseController: /api/admin/courses → /api/v1/admin/courses
- AdminTenantController: /api/admin/tenants → /api/v1/admin/tenants

前端配置调整:
- vite.config.ts: 移除代理重写规则
- src/api/index.ts: baseURL /api/v1 → /api
- 更新 admin.ts, lesson.ts, package.ts, theme.ts 使用 /v1/admin/* 路径

## P2 文档规范更新 (5项)
- 更新 CLAUDE.md 前端 API 调用文档
- 新增三种调用方式说明(http/适配层/Orval客户端)
- 新增 API 路径规范表格
- 更新前端目录结构说明

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:13:46 +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
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
e07e21f430 Merge design branch - 代码重构规范化完成
合并内容:
- 后端 Swagger/OpenAPI 配置
- 后端 DTO 规范化
- 前端 Orval API 客户端自动生成
- 前端文件路由配置
- 所有测试文件和配置

冲突解决:
- main.ts: 保留 Swagger 和 TransformInterceptor
- package.json: 合并 orval 相关脚本和依赖
- playwright.config.ts: 使用 design 分支配置
- .env: 保留 design 分支配置
- 启动脚本: 保留 design 分支版本

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 17:27: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
4e13f186f3 fix: 统一修改错误处理逻辑
- 将所有 error.response?.data?.message 改为 error.message
- 影响所有教师端组件的错误处理
- 适配新的响应拦截器返回的错误对象结构

修改的文件:
- CourseListView.vue
- CourseDetailView.vue
- PrepareModeView.vue
- LessonListView.vue
- LessonView.vue
- LessonRecordsView.vue
- SchoolCourseEditView.vue
- ClassListView.vue
- ClassStudentsView.vue
- TaskListView.vue

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:33:44 +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
Claude Opus 4.6
5b1c6f590b fix: 删除 teacher.ts 中重复的函数声明
删除了重复的 dashboard 相关函数:
- getTeacherDashboard
- getTeacherLessonTrend
- getTeacherCourseUsage
- getTeacherTodayLessons
- getTeacherRecommendedCourses
- getTeacherWeeklyStats

这些函数在文件中已经存在,之前的编辑造成了重复。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:23:42 +08:00
Claude Opus 4.6
3e779856bb fix: 恢复路由配置并添加缺失的 API 函数
- 从 git 历史恢复完整的嵌套路由配置(100+ 路由)
- 恢复 LayoutView 作为父路由的布局结构
- 添加教师控制台相关 API 函数到 teacher.ts
- 修复语法错误(移除多余的分号)

修复的问题:
1. 页面无法加载 - 路由配置缺失
2. 侧边栏/导航栏不显示 - LayoutView 未使用
3. 教师控制台报错 - API 函数缺失

测试结果:
- 管理员端: 登录、控制台、租户管理、课程管理 ✓
- 教师端: 登录、课程列表、校本课程、授课记录 ✓

注意: 部分页面可能需要浏览器刷新 (Cmd+R) 来加载最新代码

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:20:52 +08:00
Claude Opus 4.6
7e625f31e3 fix: 修复前端路由配置和响应拦截器问题
- 修复路由配置:移除 top-level await,改用手动路由配置
- 修复响应拦截器:正确解包 { code, message, data } 格式的 API 响应
- 更新开发日志和变更日志,记录浏览器功能测试结果
- 添加教师端重构设计文档

修复的问题:
1. 登录功能无法正常工作(响应数据解包问题)
2. 页面无法加载(路由配置问题)

测试结果:
- 管理员登录: ✓ 成功
- 教师登录: ✓ 成功
- 主要页面导航: ✓ 正常

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:09:56 +08:00
Claude Opus 4.6
2f5ad32820 refactor: 代码重构 - API规范化和文件路由配置
## 后端重构

### 新增基础设施
- src/common/dto/ - 统一响应格式和分页查询DTO基类
- src/common/interceptors/ - 响应转换拦截器
- src/common/utils/ - JSON解析和分页计算工具函数

### DTO规范化
- Course、Lesson、TeacherCourse、SchoolCourse、Tenant控制器添加Swagger装饰器
- 添加@ApiQuery、@ApiBody、@ApiOperation完善API文档
- 修复CourseLesson控制器路径参数问题

## 前端重构

### Orval API客户端生成
- 添加orval配置和生成脚本
- 生成完整的类型安全API客户端 (src/api/generated/)
- 导入56个参数类型文件

### API模块迁移
- src/api/course.ts - 迁移使用Orval生成API
- src/api/school-course.ts - 修复类型错误(number vs string)
- src/api/teacher.ts - 完整迁移教师端API
- src/api/client.ts - 重构API客户端统一入口
- src/api/lesson.ts - 修复未使用参数

### 文件路由配置
- 配置unplugin-vue-router插件
- 创建动态路由配置支持自动路由和传统路由切换
- 添加路由守卫保留原有权限逻辑

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 13:05:20 +08:00
张逸遥
ad0204a59a 提交说明 2026-02-28 16:41:39 +08:00
zhonghua
0d4d9f5768 菜单顶部栏优化 2026-02-28 06:44:56 +08:00
zhonghua
05b5ee9117 数据库优化 2026-02-28 02:11:48 +08:00
zhonghua
39b49bd808 系统完善 2026-02-28 01:48:21 +08:00
lesingle
54f6daea62 Initialize the Kindergarten platform source code. 2026-02-26 15:22:26 +08:00