# 开发日志 - 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 认证守卫和角色守卫
