# 开发日志 - 2026年2月13日 ## 今日工作概要 完成课程包编辑页面数据持久化修复,UI优化,以及提交审核验证逻辑修复。 ## 详细工作内容 ### 1. 数据持久化问题修复 (重要) **问题描述**: 课程编辑页面的课堂计划、延伸活动、测评工具三个步骤的数据无法正确保存,刷新页面后数据丢失。 **根本原因**: - 前端 `saveDraft` 函数没有将这些复杂数据序列化后存储到数据库 - 后端数据库 schema 缺少对应的 JSON 存储字段 **解决方案**: | 模块 | 数据库字段 | 存储内容 | |-----|-----------|---------| | 课堂计划 | `lessonPlanData` | phases[] + scriptPages[] | | 延伸活动 | `activitiesData` | activities[] | | 测评工具 | `assessmentData` | assessment object | **代码变更**: 1. `prisma/schema.prisma` - 添加三个新字段: ```prisma lessonPlanData String? @map("lesson_plan_data") activitiesData String? @map("activities_data") assessmentData String? @map("assessment_data") ``` ### 2. 逐页脚本自动展开功能 **需求**: 如果脚本页中有内容(教师话术、预期回答、注意事项任一填写),则该页默认展开。 ### 3. 延伸活动 UI 重新设计 **优化内容**: - 采用卡片式布局替代列表式 - 活动编号使用蓝色圆形徽章 - 活动类型使用彩色标签区分 - 双列布局显示类型和时长 - 删除按钮改为图标样式 ### 4. "保存课程"按钮状态修复 **问题**: 点击"保存课程"后课程状态变成"已发布" **原因**: `saveCourse` 函数硬编码 `status: 'PUBLISHED'` **解决**: 改为 `status: 'DRAFT'`,发布应通过审核流程 ### 5. 提交审核验证逻辑修复 **问题**: 已配置教学环节但仍提示"请至少配置一个教学环节" **原因**: 验证逻辑检查 `scripts` 字段,但数据存储在 `lessonPlanData.phases` **解决**: 更新 `course-validation.service.ts` ### 6. 其他修复 - 其他素材不回显问题修复 - 修复字段名 `otherPaths` → `otherResources` - 文件大小限制调整 - 从 50MB 更新到 300MB - 电子绘本格式支持 - 添加 ppt/pptx 格式支持 - 认证守卫配置 - 课程包控制器添加 JWT 认证守卫和角色守卫