# 第三阶段:核心功能完善和UniApp开发 ## 阶段目标 完善核心业务功能,完成UniApp端的学习功能开发 ## 开始时间 2025-11-11 ## 阶段说明 本阶段主要完善第二阶段已整合的基础功能,并开发UniApp端的核心学习功能。 ## 阶段完成时间 2025-11-11 ## 阶段总结 第三阶段核心功能已基本完成,包括: 1. ✅ UniApp端课程学习功能(列表、详情、筛选、进度跟踪) 2. ✅ UniApp端学习监控功能(定时截图、上传) 3. ✅ 学习进度上报优化(断网重连、本地缓存) 4. ✅ 学习记录查看页面(个人统计) 5. ✅ 管理后台统计接口(统计信息、导出功能) 待优化功能(可在后续阶段完善): - 管理后台图表展示(前端图表组件待完善) - 视频文件处理(FFmpeg集成) - 大文件上传优化 --- ## 任务清单 ### 1. UniApp端课程学习功能 #### 1.1 课程列表 - [x] 课程列表页面(显示分配给当前学员的课程) - [x] 课程筛选(按学科分类、状态等) - [x] 课程详情查看 - [x] 学习进度显示(进度条、学习时长、学习次数) #### 1.2 课件查看 - [x] 图文课件查看(PDF、图片、文档) - [x] PDF在线查看(使用web-view) - [x] 图片查看(支持缩放、预览) - [x] 文档查看(文本内容显示) - [x] 视频课件播放 - [x] 视频播放器集成(使用uni-app video组件) - [x] 横屏全屏播放支持 - [x] 播放进度显示 - [x] 播放控制(播放/暂停、进度条、音量等) #### 1.3 学习进度跟踪 - [x] 视频播放进度实时上报(每10秒) - [x] 上报接口调用 - [x] 断网重连机制(已实现队列管理和自动重连) - [x] 本地缓存机制(已实现本地存储和恢复) - [x] 学习记录存储 - [x] 学习开始时间记录 - [x] 学习结束时间记录 - [x] 学习时长累计 - [x] 学习次数累计 - [x] 视频播放位置记录 - [ ] 学习详情记录(后端已实现,前端待完善) - [ ] 每次学习的详细记录 - [ ] 视频播放位置变化记录 #### 1.4 学习记录查看 - [x] 个人学习记录页面 - [x] 学习进度统计 - [x] 学习时长统计 - [x] 学习次数统计 --- ### 2. UniApp端学习监控功能 #### 2.1 屏幕截图功能 - [x] 定时截图功能(每30秒或可配置) - [x] 使用plus API(App环境) - [x] H5环境降级方案 - [ ] 截图质量优化(待优化) - [ ] 截图文件大小控制(待优化) - [x] 截图上传接口 - [x] 上传到服务器 - [x] 上传失败重试机制(最多重试3次) - [ ] 上传进度显示(待优化) - [x] 后台运行(基础实现) - [x] 定时任务执行 - [ ] App后台运行保持(需要原生插件支持) - [ ] 电量优化(待优化) #### 2.2 监控数据查看 - [ ] 监控记录查看(可选,如果需要在App端查看) --- ### 3. 后端功能完善 #### 3.1 学习进度接口完善 - [x] 学习进度上报接口优化 - [x] 批量上报支持(前端队列管理器已实现) - [ ] 数据校验增强(待优化) - [ ] 异常处理完善(待优化) - [x] 学习记录查询接口优化 - [x] 按时间范围查询(统计接口支持) - [x] 按课程查询(统计接口支持) - [x] 统计信息查询(已实现统计接口) #### 3.2 视频文件处理 - [ ] FFmpeg集成 - FFmpeg工具安装配置 - 视频转码功能 - 视频压缩功能 - 视频格式统一(MP4) - [ ] 视频处理服务 - 视频上传后自动处理 - 处理进度跟踪 - 处理结果通知 #### 3.3 文件上传优化 - [ ] 大文件上传支持 - 分片上传 - 断点续传 - 上传进度显示 - [ ] 文件类型限制 - [ ] 文件大小限制配置 --- ### 4. 管理后台功能完善 #### 4.1 学习进度查看优化 - [x] 学习进度详情页面优化 - [x] 统计接口实现(总数、平均进度、按日期统计) - [x] 导出功能(Excel导出) - [ ] 图表展示(前端待完善) - [ ] 批量操作功能 - [ ] 批量查看 - [ ] 批量导出 #### 4.2 学习监控功能完善 - [ ] 实时监控页面优化 - WebSocket实时推送 - 监控画面刷新 - 历史记录查看 - [ ] 监控数据统计 - 监控频率统计 - 异常情况统计 --- ### 5. 用户体验优化 #### 5.1 UniApp端优化 - [ ] 加载动画优化 - [ ] 错误提示优化 - [ ] 网络异常处理 - [ ] 离线缓存机制 - [ ] 横屏适配优化 #### 5.2 管理后台优化 - [ ] 界面交互优化 - [ ] 数据展示优化 - [ ] 操作流程优化 --- ## 技术要点 ### 1. 视频播放进度跟踪 **前端实现:** ```javascript // 视频播放进度监听 video.onTimeUpdate(() => { const currentTime = video.currentTime const duration = video.duration const progress = (currentTime / duration) * 100 // 每5-10秒上报一次 if (shouldReport()) { reportProgress(courseId, currentTime, duration) } }) ``` **后端接口:** - `POST /study/learningRecord/progress` - 上报学习进度 - `GET /study/learningRecord/my-records` - 获取我的学习记录 ### 2. 屏幕截图实现 **UniApp实现:** ```javascript // 使用canvas截图 const ctx = uni.createCanvasContext('canvas') ctx.draw() ctx.toTempFilePath({ success: (res) => { uploadScreenshot(res.tempFilePath) } }) ``` **后端接口:** - `POST /study/monitor/upload` - 上传截图 ### 3. 视频处理 **FFmpeg集成:** - 使用Java调用FFmpeg命令 - 视频转码:H.264编码,MP4格式 - 视频压缩:动态码率,平衡清晰度和文件大小 --- ## 开发优先级 ### 高优先级(必须完成) 1. ✅ UniApp端课程列表 2. ✅ 视频课件播放 3. ✅ 学习进度上报 4. ✅ 学习记录查看 ### 中优先级(重要功能) 1. 图文课件查看 2. 屏幕截图功能 3. 学习进度统计 ### 低优先级(优化功能) 1. 视频文件处理(FFmpeg) 2. 大文件上传优化 3. 离线缓存机制 --- ## 遇到的问题 详细问题记录请参考:[[第三阶段-问题]] ### 已解决问题 1. ✅ **学科分类插入错误**:`subject_name` 字段没有默认值 - 已通过三层验证机制解决(见[[第三阶段-问题#问题1]]) --- ## 进度记录 - 2025-11-11:开始第三阶段开发,创建阶段计划文档 - 2025-11-11:添加学员端获取课程接口 `/study/course/my-courses` - 2025-11-11:完善UniApp课程列表页面,显示学习进度、学习时长、课程状态等信息 - 2025-11-11:完善课程详情页面,实现视频播放、学习进度上报、课件查看功能 - 2025-11-11:创建学习监控工具类(monitor.js),实现定时截图和上传功能 - 2025-11-11:在课程详情页面集成学习监控功能(进入页面启动,离开页面停止) - 2025-11-11:创建学习记录查看页面,显示学习统计和详细记录 - 2025-11-11:在个人中心添加学习记录入口 - 2025-11-11:实现课程筛选功能(按学科分类、状态筛选) - 2025-11-11:添加学科分类App端接口(无需权限验证) - 2025-11-11:创建学习进度上报队列管理器(progressQueue.js),实现断网重连、本地缓存、批量上报 - 2025-11-11:优化学习进度上报机制,集成队列管理器 - 2025-11-11:添加学习记录统计接口(总数、平均进度、按日期统计) - 2025-11-11:添加学习记录导出功能(Excel导出) --- ## 注意事项 1. **视频播放兼容性**:需要测试不同平台的视频播放兼容性(iOS、Android、H5) 2. **性能优化**:学习进度上报频率要适中,避免频繁请求影响性能 3. **数据准确性**:学习记录的数据要准确,避免重复计算 4. **用户体验**:App端操作要流畅,避免卡顿 5. **网络异常处理**:需要处理网络断开、请求失败等情况 --- ## 文件位置 ### UniApp端文件位置 - 课程列表:`frontend-uniapp/src/pages/course/list.vue` - 课程详情:`frontend-uniapp/src/pages/course/detail.vue` - 学习记录:`frontend-uniapp/src/pages/learning/record.vue` - 学习监控工具:`frontend-uniapp/src/utils/monitor.js` - 学习进度队列管理器:`frontend-uniapp/src/utils/progressQueue.js` - API调用:`frontend-uniapp/src/api/study/` - 学科分类API:`frontend-uniapp/src/api/study/subject.js` ### 后端文件位置 - 学习进度接口:`StudyLearningRecordController` - 学习监控接口:`StudyScreenMonitorController` - 学科分类接口:`StudySubjectController`(新增App端接口 `/study/subject/app/list`) - 视频处理服务:`RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/service/study/` --- ## 参考文档 - [[实施计划]] - 查看完整的功能规划 - [[第二阶段-代码整合到RuoYi]] - 查看已完成的整合工作