kindergarten_java/docs/dev-logs/2026-02-27.md
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

9.8 KiB
Raw Permalink Blame History

开发日志 - 2026-02-27

一、课程包与套餐重构(上午)

完成内容

Phase 1: 数据库迁移

  • 备份数据库 dev.db.backup
  • 使用 schema-v2.prisma 执行 prisma db push
  • 新增 10 个表themes, course_packages, course_package_courses, tenant_packages, course_lessons, lesson_steps, lesson_step_resources, school_courses, school_course_lessons, school_course_reservations

Phase 2: 数据迁移脚本

  • 创建 prisma/migrate-v1-to-v2.ts
  • 迁移结果:
    • 主题6 个
    • 课程包6 个
    • 课程CourseLesson10 个
    • 教学环节17 个
    • 套餐3 个(小班、中班、大班各一个)
    • 租户套餐授权4 个

Phase 3: 后端 API 重构

  • 创建 4 个新模块:
    • src/modules/theme/ - 主题字典模块
    • src/modules/course-package/ - 套餐模块(含学校端)
    • src/modules/course-lesson/ - 课程模块(含教师端)
    • src/modules/school-course/ - 校本课程包模块(含学校端和教师端)
  • 更新 app.module.ts 注册新模块
  • 后端构建验证通过

Phase 4: 前端开发

  • 创建 API 模块:
    • src/api/package.ts - 套餐 API
    • src/api/theme.ts - 主题 API
    • src/api/lesson.ts - 课程 API
    • src/api/school-course.ts - 校本课程包 API
  • 创建超管端页面:
    • src/views/admin/packages/PackageListView.vue - 套餐列表
    • src/views/admin/packages/PackageEditView.vue - 套餐编辑
    • src/views/admin/packages/PackageDetailView.vue - 套餐详情
    • src/views/admin/themes/ThemeListView.vue - 主题管理
  • 创建学校端页面:
    • src/views/school/school-courses/SchoolCourseListView.vue
    • src/views/school/school-courses/SchoolCourseEditView.vue
    • src/views/school/school-courses/SchoolCourseDetailView.vue
  • 创建教师端页面:
    • src/views/teacher/school-courses/SchoolCourseListView.vue
    • src/views/teacher/school-courses/SchoolCourseEditView.vue
    • src/views/teacher/school-courses/SchoolCourseDetailView.vue
  • 更新路由配置

二、课程包创建/编辑6步流程重构下午

背景

原有3步流程功能不完整需按照设计文档18-超管端设计-重构版.md重构为6步流程。

完成内容

新增组件

组件 路径 说明
FileUploader src/components/course/FileUploader.vue 文件上传组件(支持预览、替换、删除)
LessonStepsEditor src/components/course/LessonStepsEditor.vue 教学环节编辑器含4环节模板
LessonConfigPanel src/components/course/LessonConfigPanel.vue 统一的课程配置面板
Step1BasicInfo src/views/admin/courses/components/Step1BasicInfo.vue 步骤1基本信息
Step2CourseIntro src/views/admin/courses/components/Step2CourseIntro.vue 步骤2课程介绍8个Tab
Step3ScheduleRef src/views/admin/courses/components/Step3ScheduleRef.vue 步骤3排课参考表格
Step4IntroLesson src/views/admin/courses/components/Step4IntroLesson.vue 步骤4导入课配置
Step5CollectiveLesson src/views/admin/courses/components/Step5CollectiveLesson.vue 步骤5集体课配置
Step6DomainLessons src/views/admin/courses/components/Step6DomainLessons.vue 步骤6五大领域课配置

重构主页面

  • src/views/admin/courses/CourseEditView.vue - 从3步改为6步流程
  • 添加完成度进度条
  • 添加草稿保存功能

后端数据模型更新

  • 更新 prisma/schema.prisma 添加课程介绍字段:
    • introSummary, introHighlights, introGoals, introSchedule
    • introKeyPoints, introMethods, introEvaluation, introNotes
    • coreContent, scheduleRefData

三、Bug 修复(下午)

用户测试发现的7个问题及修复

# 问题描述 修复方案 修复文件
1 上传的课程封面没有正确回显 优化URL构建逻辑处理已包含/uploads/的路径 Step1BasicInfo.vue, FileUploader.vue
2 富文本输入框500字限制太少 增加到1500字添加字数统计 Step2CourseIntro.vue, LessonConfigPanel.vue
3 导入课不允许关联核心资源 启用资源上传视频、PPT、PDF Step4IntroLesson.vue
4 导入课缺少教学反思字段 启用教学延伸和反思字段 Step4IntroLesson.vue
5 教学课件只允许PPT格式 PPT字段同时支持PPT和PDF FileUploader.vue, file-upload.service.ts
6 保存课程有概率服务器失败 优化错误处理、添加日志、非阻塞保存 CourseEditView.vue
7 文件URL路径重复 统一处理URL前缀逻辑 FileUploader.vue, Step1BasicInfo.vue

额外优化

  • 新增 audiodocument 文件类型支持
  • 后端文件服务支持更多MIME类型
  • 文本域添加 show-count 属性显示字数

四、文件变更统计

后端

  • 新增14 个文件(新模块)
  • 修改3 个文件
    • app.module.ts - 注册新模块
    • prisma/schema.prisma - 添加课程介绍字段
    • file-upload.service.ts - 扩展文件类型支持

前端

  • 新增16 个文件(新页面和组件)
  • 修改5 个文件
    • router/index.ts - 添加路由
    • api/course.ts - 添加新字段类型
    • api/file.ts - 添加新文件类型
    • CourseEditView.vue - 重构为6步流程
    • FileUploader.vue - 扩展文件类型支持

五、测试验证

功能测试结果

功能 状态
课程包创建6步流程 通过
课程包编辑(数据回显) 通过
封面图片上传和显示 通过
课程介绍8个Tab 通过
导入课资源配置 通过
集体课资源配置 通过
领域课启用/配置 通过
保存草稿 通过
PDF上传到课件字段 通过

测试账号

角色 账号 密码
超管 admin 123456

六、学校端新功能开发(晚上)

背景

根据设计文档分析,学校端需要适配新的课程包结构,完善套餐管理和校本课程包功能。

完成内容

1. 学校端课程详情页适配(任务#19

文件: src/views/school/courses/CourseDetailView.vue

重构课程详情页以适配新的6步流程结构

  • 信息卡片网格布局(基本信息、使用统计、版本记录)
  • 课程介绍8个Tab切换
  • 排课计划参考表格
  • 课程配置卡片(导入课/集体课/领域课)
  • 数字资源汇总(支持文件预览)
  • 教师反馈展示

2. 学校端套餐管理重构(任务#20

文件:

  • src/api/school.ts - 添加套餐API
  • src/views/school/PackageView.vue - 完全重写

功能:

  • 已授权套餐列表展示(卡片布局)
  • 套餐详情弹窗(显示套餐信息和包含的课程包)
  • 续订功能选择6/12/24个月
  • 到期状态提醒(即将到期/已过期标签)
  • 申请套餐入口
  • 统计概览(套餐数、课程包数、即将到期数)

3. 学校端校本课程包功能完善(任务#21

文件:

  • src/views/school/school-courses/SchoolCourseListView.vue - 重写
  • src/views/school/school-courses/SchoolCourseDetailView.vue - 重写

功能:

  • 列表页统计概览(总数/使用次数/待上课预约)
  • 预约功能弹窗(选择教师/班级/时间)
  • 排课管理弹窗(即将上课/历史记录Tab
  • 详情页预约/排课记录展示
  • 课程配置卡片展示
  • 修改备注高亮显示

七、Bug修复晚上

测试发现的问题及修复

# 问题描述 修复方案 修复文件
8 学校端课程详情不显示课程配置 更新 findCourse 方法包含 courseLessons 关联 school.service.ts
9 超管端排课参考表格列名不匹配 列定义从 time/areaActivity 改为 dayOfWeek/activity CourseDetailView.vue (超管端)
10 学校端排课参考表格不显示 添加数组类型判断,避免 JSON.parse 失败 CourseDetailView.vue (学校端)

八、文件变更统计(晚上)

后端

  • 修改1 个文件
    • src/modules/school/school.service.ts - findCourse 方法添加 courseLessons 关联

前端

  • 新增1 个文件
    • src/views/school/PackageView.vue - 套餐管理页面(完全重写)
  • 修改4 个文件
    • src/api/school.ts - 添加套餐API
    • src/views/school/courses/CourseDetailView.vue - 重构课程详情页
    • src/views/school/school-courses/SchoolCourseListView.vue - 重构校本课程包列表
    • src/views/school/school-courses/SchoolCourseDetailView.vue - 重构校本课程包详情

九、测试验证(晚上)

学校端新功能测试结果

功能 状态
套餐管理列表 通过
套餐详情弹窗 通过
续订功能 通过
到期状态提醒 通过
课程详情页-基本信息 通过
课程详情页-课程介绍 通过
课程详情页-课程配置 通过
课程详情页-排课参考 通过
校本课程包列表 通过
预约功能 通过

测试账号

角色 账号 密码
超管 admin 123456
学校 school 123456

十、启动服务

cd /Users/retirado/ccProgram
./start-all.sh

十一、今日总结

完成任务

  1. 课程包与套餐重构数据迁移、后端API、前端页面
  2. 课程包创建/编辑6步流程重构
  3. 7个Bug修复
  4. 学校端课程详情页适配
  5. 学校端套餐管理重构
  6. 学校端校本课程包功能完善
  7. 3个Bug修复晚上测试发现

明日待办

  1. 继续学校端功能测试
  2. 教师端功能适配
  3. 性能优化
  4. TypeScript 编译警告修复

最后更新: 2026-02-27 23:00