# AI课程"可试看"功能实现总结 ## 📋 实施时间 **实施日期**: 2025-01-15 ## ✅ 已完成的工作 ### 1. 数据层配置 (src/data/mockData.js) **修改位置**: `generatePublicCourseLiveList` 函数 **修改内容**: - 在第510-514行添加了可试看配置(有映射的课程) - 在第551-555行添加了可试看配置(没有映射的课程) ```javascript // 第一处:有映射的课程 if (event.title === "为什么要学习 AI" && unitName === "AI 入门与工具环境") { courseData.canPreview = true; courseData.previewUrl = "https://du9uay.github.io/AIcourse-education-web/#/"; } // 第二处:没有映射的课程 if (event.title === "为什么要学习 AI" && defaultUnit === "AI 入门与工具环境") { courseData.canPreview = true; courseData.previewUrl = "https://du9uay.github.io/AIcourse-education-web/#/"; } ``` **备份文件**: `src/data/mockData.js.backup_*_add_ai_preview` ### 2. 组件层配置 (src/components/PublicCourseList/index.jsx) **修改位置1**: 单元标题 (第299-326行) - 添加了单元级别的"可试看"标签 - 当单元包含可试看课程时,在单元标题右侧显示蓝色"可试看"标签 - 为单元添加 `has-preview-unit` 类名 **修改位置2**: 课程项 (第334-362行) - 添加了课程级别的"可试看"标签 - 在课程卡片中央显示蓝色"可试看"标签 - 为课程添加 `has-preview` 类名 **备份文件**: `src/components/PublicCourseList/index.jsx.backup_*_add_preview` ### 3. 样式层配置 (src/components/PublicCourseList/index.css) **修改位置**: 文件末尾 (第446-478行) **添加的样式**: 1. `.course-list-item.has-preview-unit .arco-collapse-item-header` - 单元渐变蓝色背景 2. `.course-list-item .time-line-item.has-preview` - 课程蓝色虚线边框 3. `.course-list-item .time-line-item .preview-badge` - 可试看标签样式 4. `.course-list-item .time-line-item.has-preview.selected .preview-badge` - 选中状态样式 **备份文件**: `src/components/PublicCourseList/index.css.backup_*_add_preview` ### 4. 播放器支持 (src/components/CoursesVideoPlayer/index.jsx) **已确认**: 视频播放器组件已经支持可试看功能 - 第157-224行实现了iframe播放逻辑 - 支持全屏切换功能 - zoom属性自动调整(非全屏0.5,全屏1) ## 🎨 视觉效果 ### 单元样式 ``` ┌─────────────────────────────────┐ │ AI 入门与工具环境 [可试看] │ ← 渐变蓝色背景 #f0f7ff → #e8f3ff └─────────────────────────────────┘ ``` ### 课程样式 ``` ┌─────────────────────────────────┐ │ [可试看] │ ← 蓝色标签居中 #4080ff │ 为什么要学习 AI │ │ 李奇 2025-09-05 │ └─────────────────────────────────┘ ``` ## 🔍 关键技术点 ### 1. 数据筛选逻辑分析 **AI课程的筛选条件**: ```javascript if ((event.type === 'public-course' || event.type === 'ai-course' || event.type === 'marketing-course') && event.title) ``` **结论**: AI课程使用 `type: 'ai-course'`,不会被筛选掉,可以正常显示。 ### 2. 可试看字段 - `canPreview`: Boolean - 是否可试看 - `previewUrl`: String - 试看页面URL ### 3. iframe缩放 - 非全屏: `zoom: 0.5` - 全屏: `zoom: 1` - 通过 `isFullscreen` 状态控制 ## 📝 测试验证清单 ### ✅ 数据层测试 - [x] JavaScript语法检查通过 (`node -c src/data/mockData.js`) - [x] 数据结构正确(包含canPreview和previewUrl字段) - [x] AI课程不会被筛选逻辑过滤 ### ✅ 视觉展示测试(待浏览器验证) - [ ] 单元标题右侧显示"可试看"标签 - [ ] 单元背景使用渐变蓝色 - [ ] 课程中央显示"可试看"标签 - [ ] 课程使用蓝色虚线边框 ### ✅ 功能测试(待浏览器验证) - [ ] 点击"为什么要学习 AI"课程 - [ ] 视频播放器区域显示iframe - [ ] iframe加载 https://du9uay.github.io/AIcourse-education-web/#/ - [ ] 全屏按钮正常工作 - [ ] zoom在全屏/非全屏之间切换 ## 🚀 如何验证 ### 步骤1: 启动开发服务器 ```bash cd /Users/apple/Documents/cursor/教务系统/frontend_智能开发 pnpm run dev ``` ### 步骤2: 打开公共课直播间 1. 浏览器访问 `http://localhost:5151` 2. 导航到"公共课直播间"页面 ### 步骤3: 检查"AI 入门与工具环境"单元 1. 找到"AI 入门与工具环境"单元 2. 检查单元标题是否有蓝色"可试看"标签 3. 检查单元背景是否为渐变蓝色 ### 步骤4: 检查"为什么要学习 AI"课程 1. 展开"AI 入门与工具环境"单元 2. 找到"为什么要学习 AI"课程 3. 检查课程卡片中央是否有蓝色"可试看"标签 4. 检查课程边框是否为蓝色虚线 ### 步骤5: 测试播放功能 1. 点击"为什么要学习 AI"课程 2. 观察右侧视频播放器区域 3. 确认显示iframe而不是锁定图标 4. 确认iframe加载了AI课程网页 5. 测试全屏按钮功能 ## 📊 修改文件清单 | 文件路径 | 修改类型 | 修改行数 | 备份文件 | |---------|---------|---------|----------| | `src/data/mockData.js` | 添加可试看数据配置 | 2处,共10行 | ✅ 已创建 | | `src/components/PublicCourseList/index.jsx` | 添加标签显示逻辑 | 2处,共35行 | ✅ 已创建 | | `src/components/PublicCourseList/index.css` | 添加可试看样式 | 1处,共33行 | ✅ 已创建 | | `src/components/CoursesVideoPlayer/index.jsx` | 无需修改(已支持) | 0行 | - | ## ⚠️ 注意事项 ### 1. AI课程不会被筛选 经过检查,`generatePublicCourseLiveList` 函数的筛选条件包含 `event.type === 'ai-course'`,因此AI课程可以正常显示。 ### 2. 双重配置保障 为了确保可试看功能在任何情况下都能生效,我们在两个地方添加了配置: - 有课程映射时 (第510-514行) - 没有课程映射时 (第551-555行) ### 3. iframe跨域问题 确认目标URL `https://du9uay.github.io/AIcourse-education-web/#/` 允许被iframe嵌套,不会有X-Frame-Options限制。 ### 4. 样式优先级 CSS样式添加在文件末尾,具有较高的优先级,可以覆盖默认样式。 ## 🔄 如何回滚 如果需要回滚更改,可以从备份文件恢复: ```bash # 回滚mockData.js cp src/data/mockData.js.backup_*_add_ai_preview src/data/mockData.js # 回滚PublicCourseList组件 cp src/components/PublicCourseList/index.jsx.backup_*_add_preview src/components/PublicCourseList/index.jsx # 回滚PublicCourseList样式 cp src/components/PublicCourseList/index.css.backup_*_add_preview src/components/PublicCourseList/index.css ``` ## 📚 相关文档 - [可试看功能实现文档](../frontend/可试看功能实现文档.md) - [AI课程添加可试看功能操作文档](../frontend/AI课程添加可试看功能操作文档.md) ## 👥 实施人员 - **AI Assistant**: 配置实施 - **项目**: 教务系统前端(智能开发产业) --- **总结**: 已成功为"为什么要学习 AI"课程添加可试看功能,包括数据配置、组件更新和样式添加。所有修改均已创建备份,可安全回滚。语法验证通过,待浏览器端功能测试。