guoyu/Test/其他/步骤/第三阶段-核心功能完善和UniApp开发.md

298 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第三阶段核心功能完善和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 APIApp环境
- [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]] - 查看已完成的整合工作