622 lines
20 KiB
Markdown
622 lines
20 KiB
Markdown
|
|
# 在线学习系统实施计划
|
|||
|
|
|
|||
|
|
## 项目架构设计
|
|||
|
|
|
|||
|
|
### 系统架构
|
|||
|
|
```
|
|||
|
|
┌─────────────────┐ ┌─────────────────┐
|
|||
|
|
│ 管理后台 │ │ UniApp客户端 │
|
|||
|
|
│ (Vue Web) │ │ (Vue) │
|
|||
|
|
└────────┬────────┘ └────────┬────────┘
|
|||
|
|
│ │
|
|||
|
|
│ HTTP/WebSocket │
|
|||
|
|
└───────────┬───────────────┘
|
|||
|
|
│
|
|||
|
|
┌───────────▼───────────┐
|
|||
|
|
│ Java后端服务 │
|
|||
|
|
│ (Spring Boot) │
|
|||
|
|
└───────────┬───────────┘
|
|||
|
|
│
|
|||
|
|
┌───────────▼───────────┐
|
|||
|
|
│ MySQL数据库 │
|
|||
|
|
└───────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 技术选型
|
|||
|
|
|
|||
|
|
#### 前端(UniApp)
|
|||
|
|
- **框架**:UniApp + Vue 3
|
|||
|
|
- **UI组件库**:uView UI 或 uni-ui
|
|||
|
|
- **状态管理**:Vuex 或 Pinia
|
|||
|
|
- **网络请求**:uni.request 封装
|
|||
|
|
- **文件上传**:uni.uploadFile
|
|||
|
|
- **屏幕截图**:使用canvas或plus API实现
|
|||
|
|
- **视频播放**:video组件,支持进度跟踪
|
|||
|
|
- **图表库**:echarts-for-uniapp(用于成绩统计图表)
|
|||
|
|
- **平台支持**:iOS 12+、Android 8.0+
|
|||
|
|
- **横屏支持**:强制横屏或横竖屏自适应
|
|||
|
|
|
|||
|
|
#### 后端(Java)
|
|||
|
|
- **框架**:Spring Boot 2.7+ 或 3.x
|
|||
|
|
- **安全框架**:Spring Security(简化版,仅账号密码)
|
|||
|
|
- **ORM框架**:MyBatis-Plus
|
|||
|
|
- **文件存储**:本地文件系统(局域网部署)
|
|||
|
|
- **WebSocket**:Spring WebSocket(用于实时监控)
|
|||
|
|
- **权限控制**:基于角色的权限控制(RBAC)
|
|||
|
|
- **文件处理**:
|
|||
|
|
- PDF处理:Apache PDFBox(用于PDF生成和打印)
|
|||
|
|
- Excel处理:EasyExcel(用于数据导入导出)
|
|||
|
|
- 视频处理:FFmpeg(视频转码,在保证清晰度的情况下压缩文件大小)
|
|||
|
|
- **图表生成**:JFreeChart 或 ECharts Java(用于后端图表生成
|
|||
|
|
|
|||
|
|
#### 数据库
|
|||
|
|
- **版本**:MySQL 5.7+ 或 8.0+
|
|||
|
|
- **字符集**:utf8mb4
|
|||
|
|
|
|||
|
|
#### 语音评测服务
|
|||
|
|
- **候选方案**:
|
|||
|
|
1. 科大讯飞语音评测(价格中等,准确率高)
|
|||
|
|
2. 百度语音识别(价格较低)
|
|||
|
|
3. 腾讯云语音识别(价格中等)
|
|||
|
|
4. 阿里云语音识别(价格中等)
|
|||
|
|
- **选择原则**:根据实际使用量和价格选择
|
|||
|
|
|
|||
|
|
## 功能模块划分
|
|||
|
|
|
|||
|
|
### 后端模块
|
|||
|
|
1. **用户认证模块**(auth)
|
|||
|
|
- 登录、登出
|
|||
|
|
- 权限验证
|
|||
|
|
- Token管理
|
|||
|
|
|
|||
|
|
2. **用户管理模块**(user)
|
|||
|
|
- 管理员管理
|
|||
|
|
- 学员管理
|
|||
|
|
- 角色权限管理
|
|||
|
|
|
|||
|
|
3. **班级管理模块**(class)
|
|||
|
|
- 班级CRUD
|
|||
|
|
- 学员分配
|
|||
|
|
- 班级查询
|
|||
|
|
|
|||
|
|
4. **课件管理模块**(courseware)
|
|||
|
|
- 课件上传
|
|||
|
|
- 课件分类
|
|||
|
|
- 课件查询
|
|||
|
|
- 文件存储管理
|
|||
|
|
|
|||
|
|
5. **课程管理模块**(course)
|
|||
|
|
- 课程创建
|
|||
|
|
- 课程发布
|
|||
|
|
- 课程分配
|
|||
|
|
- 学习进度跟踪
|
|||
|
|
|
|||
|
|
6. **学习监控模块**(monitor)
|
|||
|
|
- 屏幕截图接收
|
|||
|
|
- 实时监控
|
|||
|
|
- 历史记录查询
|
|||
|
|
|
|||
|
|
7. **语音评测模块**(voice)
|
|||
|
|
- 语音上传
|
|||
|
|
- 语音评测接口调用
|
|||
|
|
- 评测结果存储
|
|||
|
|
|
|||
|
|
8. **考试模块**(exam)
|
|||
|
|
- 题库管理
|
|||
|
|
- 试卷生成
|
|||
|
|
- 考试发布
|
|||
|
|
- 自动评分
|
|||
|
|
- 成绩统计
|
|||
|
|
|
|||
|
|
9. **成绩管理模块**(score)
|
|||
|
|
- 成绩查询
|
|||
|
|
- 成绩统计
|
|||
|
|
- 成绩单生成(PDF)
|
|||
|
|
|
|||
|
|
10. **数据导入导出模块**(import-export)
|
|||
|
|
- Excel导入
|
|||
|
|
- 数据导出
|
|||
|
|
- 模板下载
|
|||
|
|
|
|||
|
|
### 前端模块(UniApp)
|
|||
|
|
1. **登录模块**
|
|||
|
|
- 学员登录
|
|||
|
|
- 自动登录(Token保存)
|
|||
|
|
|
|||
|
|
2. **课程学习模块**
|
|||
|
|
- 课程列表(显示分配的课程)
|
|||
|
|
- 课件查看:
|
|||
|
|
- 图文课件:PDF、图片、文档在线查看
|
|||
|
|
- 视频课件:视频播放,支持横屏全屏
|
|||
|
|
- **学习进度跟踪**:
|
|||
|
|
- 视频播放进度实时上报(每5-10秒)
|
|||
|
|
- 记录学习开始和结束时间
|
|||
|
|
- 记录视频播放位置
|
|||
|
|
- 累计学习时长和次数
|
|||
|
|
- 学习记录本地缓存
|
|||
|
|
|
|||
|
|
3. **语音练习模块**
|
|||
|
|
- 课文显示
|
|||
|
|
- 语音录制(使用uni.getRecorderManager)
|
|||
|
|
- 语音上传
|
|||
|
|
- 评测结果展示
|
|||
|
|
- 评测历史记录
|
|||
|
|
|
|||
|
|
4. **考试模块**
|
|||
|
|
- 考试列表(显示分配的考试)
|
|||
|
|
- 答题界面:
|
|||
|
|
- 单选题、多选题、判断题、填空题
|
|||
|
|
- 答题进度显示
|
|||
|
|
- 考试倒计时
|
|||
|
|
- 考试提交
|
|||
|
|
- 成绩查看
|
|||
|
|
- 重考功能(如果允许)
|
|||
|
|
|
|||
|
|
5. **个人中心模块**
|
|||
|
|
- 个人信息
|
|||
|
|
- 学习记录查看
|
|||
|
|
- 学习进度查看(视频播放进度、学习次数、观看时长)
|
|||
|
|
- 成绩查询
|
|||
|
|
- 语音评测记录
|
|||
|
|
|
|||
|
|
6. **屏幕监控模块**
|
|||
|
|
- 定时截图(每30秒或可配置)
|
|||
|
|
- 截图上传到服务器
|
|||
|
|
- 后台运行(保活机制)
|
|||
|
|
|
|||
|
|
### 管理后台模块(Vue Web)
|
|||
|
|
1. **仪表盘**
|
|||
|
|
- 数据统计(管理员和教师分别显示)
|
|||
|
|
- 快捷操作
|
|||
|
|
- 权限控制显示
|
|||
|
|
|
|||
|
|
2. **用户管理**(仅管理员)
|
|||
|
|
- 学员管理
|
|||
|
|
- 教师管理
|
|||
|
|
- 管理员管理
|
|||
|
|
- 角色权限分配
|
|||
|
|
|
|||
|
|
3. **班级管理**
|
|||
|
|
- 班级列表(教师只能看到自己管理的班级)
|
|||
|
|
- 学员分配
|
|||
|
|
- 教师分配(仅管理员)
|
|||
|
|
|
|||
|
|
4. **课件管理**
|
|||
|
|
- 课件上传(需选择学科分类)
|
|||
|
|
- 课件列表
|
|||
|
|
- **学科分类管理**(仅管理员)
|
|||
|
|
- 课件删除和编辑
|
|||
|
|
|
|||
|
|
5. **课程管理**
|
|||
|
|
- 课程创建
|
|||
|
|
- 课程发布(分配给学员/班级)
|
|||
|
|
- **学习进度查看**(视频播放进度、学习次数、观看时长)
|
|||
|
|
- 学习监控(实时画面和历史记录)
|
|||
|
|
|
|||
|
|
6. **考试管理**
|
|||
|
|
- 题库管理
|
|||
|
|
- 试卷管理
|
|||
|
|
- 考试发布
|
|||
|
|
- **考试规则设置**(教师可设置,管理员可限制重考)
|
|||
|
|
- 重考限制设置(仅管理员)
|
|||
|
|
|
|||
|
|
7. **成绩管理**
|
|||
|
|
- 成绩查询(教师只能查看自己班级)
|
|||
|
|
- **成绩统计图表**(柱状图、折线图、饼图等)
|
|||
|
|
- 成绩单打印(PDF导出)
|
|||
|
|
- 成绩分析
|
|||
|
|
|
|||
|
|
## 数据库设计(初步规划)
|
|||
|
|
|
|||
|
|
### 核心表结构
|
|||
|
|
|
|||
|
|
#### 1. 用户表(sys_user)
|
|||
|
|
- id: 主键
|
|||
|
|
- username: 用户名(唯一)
|
|||
|
|
- password: 密码(加密存储)
|
|||
|
|
- real_name: 真实姓名
|
|||
|
|
- role: 角色(admin/teacher/student)
|
|||
|
|
- status: 状态(0:禁用 1:启用)
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
- update_time: 更新时间
|
|||
|
|
|
|||
|
|
#### 2. 学科分类表(subject)
|
|||
|
|
- id: 主键
|
|||
|
|
- subject_name: 学科名称(如:语文、数学、英语等)
|
|||
|
|
- subject_code: 学科编码
|
|||
|
|
- sort_order: 排序
|
|||
|
|
- status: 状态
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
|
|||
|
|
#### 3. 班级表(class)
|
|||
|
|
- id: 主键
|
|||
|
|
- class_name: 班级名称
|
|||
|
|
- class_code: 班级编号
|
|||
|
|
- teacher_id: 班主任ID(教师用户ID)
|
|||
|
|
- description: 班级描述
|
|||
|
|
- status: 状态
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
- update_time: 更新时间
|
|||
|
|
|
|||
|
|
#### 4. 学员班级关联表(student_class)
|
|||
|
|
- id: 主键
|
|||
|
|
- student_id: 学员ID
|
|||
|
|
- class_id: 班级ID
|
|||
|
|
- join_time: 加入时间
|
|||
|
|
- status: 状态
|
|||
|
|
|
|||
|
|
#### 5. 课件表(courseware)
|
|||
|
|
- id: 主键
|
|||
|
|
- title: 课件标题
|
|||
|
|
- type: 课件类型(text/video/image/document)
|
|||
|
|
- file_path: 文件路径
|
|||
|
|
- file_size: 文件大小(字节)
|
|||
|
|
- file_name: 原始文件名
|
|||
|
|
- subject_id: 学科分类ID(外键关联subject表)
|
|||
|
|
- upload_user_id: 上传人ID
|
|||
|
|
- description: 课件描述
|
|||
|
|
- duration: 视频时长(秒,仅视频类型)
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
- update_time: 更新时间
|
|||
|
|
|
|||
|
|
#### 6. 课程表(course)
|
|||
|
|
- id: 主键
|
|||
|
|
- course_name: 课程名称
|
|||
|
|
- courseware_id: 课件ID(外键关联courseware表)
|
|||
|
|
- description: 课程描述
|
|||
|
|
- start_time: 开始时间
|
|||
|
|
- end_time: 结束时间
|
|||
|
|
- create_user_id: 创建人ID
|
|||
|
|
- status: 状态
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
- update_time: 更新时间
|
|||
|
|
|
|||
|
|
#### 7. 课程分配表(course_assignment)
|
|||
|
|
- id: 主键
|
|||
|
|
- course_id: 课程ID(外键关联course表)
|
|||
|
|
- student_id: 学员ID(可为空,表示分配给班级)
|
|||
|
|
- class_id: 班级ID(可为空,表示分配给个人)
|
|||
|
|
- assign_time: 分配时间
|
|||
|
|
- assign_user_id: 分配人ID
|
|||
|
|
- status: 状态(0:未开始 1:进行中 2:已结束)
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
|
|||
|
|
#### 8. 学习记录表(learning_record)
|
|||
|
|
- id: 主键
|
|||
|
|
- student_id: 学员ID(外键关联sys_user表)
|
|||
|
|
- course_id: 课程ID(外键关联course表)
|
|||
|
|
- progress: 学习进度(百分比,0-100)
|
|||
|
|
- total_duration: 总学习时长(秒,累计)
|
|||
|
|
- learn_count: 学习次数(累计)
|
|||
|
|
- video_progress: 视频播放进度(秒,仅视频类型)
|
|||
|
|
- video_total_duration: 视频总时长(秒,仅视频类型)
|
|||
|
|
- last_learn_time: 最后学习时间
|
|||
|
|
- last_video_position: 最后视频播放位置(秒)
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
- update_time: 更新时间
|
|||
|
|
|
|||
|
|
#### 8.1 学习详情记录表(learning_detail)
|
|||
|
|
- id: 主键
|
|||
|
|
- learning_record_id: 学习记录ID(外键关联learning_record表)
|
|||
|
|
- student_id: 学员ID
|
|||
|
|
- course_id: 课程ID
|
|||
|
|
- start_time: 本次学习开始时间
|
|||
|
|
- end_time: 本次学习结束时间
|
|||
|
|
- duration: 本次学习时长(秒)
|
|||
|
|
- video_start_position: 视频开始位置(秒)
|
|||
|
|
- video_end_position: 视频结束位置(秒)
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
|
|||
|
|
#### 9. 学习监控表(monitor_record)
|
|||
|
|
- id: 主键
|
|||
|
|
- student_id: 学员ID(外键关联sys_user表)
|
|||
|
|
- course_id: 课程ID(外键关联course表,可为空)
|
|||
|
|
- screenshot_path: 截图路径
|
|||
|
|
- monitor_time: 监控时间
|
|||
|
|
- device_info: 设备信息(JSON格式)
|
|||
|
|
- ip_address: IP地址
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
|
|||
|
|
#### 10. 语音评测表(voice_evaluation)
|
|||
|
|
- id: 主键
|
|||
|
|
- student_id: 学员ID(外键关联sys_user表)
|
|||
|
|
- course_id: 课程ID(外键关联course表)
|
|||
|
|
- content: 评测内容(课文或文字)
|
|||
|
|
- audio_path: 音频文件路径
|
|||
|
|
- score: 评分(总分)
|
|||
|
|
- accuracy: 准确度(0-100)
|
|||
|
|
- fluency: 流畅度(0-100)
|
|||
|
|
- completeness: 完整度(0-100)
|
|||
|
|
- result_detail: 评测详情(JSON格式,包含详细评测结果)
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
|
|||
|
|
#### 11. 题库表(question_bank)
|
|||
|
|
- id: 主键
|
|||
|
|
- question_type: 题型(single:单选题 multiple:多选题 judge:判断题 fill:填空题)
|
|||
|
|
- question_content: 题目内容
|
|||
|
|
- options: 选项(JSON格式,如:["选项A","选项B","选项C","选项D"])
|
|||
|
|
- correct_answer: 正确答案(JSON格式,多选题和填空题为数组)
|
|||
|
|
- score: 分值
|
|||
|
|
- difficulty: 难度(1:简单 2:中等 3:困难)
|
|||
|
|
- subject_id: 学科分类ID(外键关联subject表)
|
|||
|
|
- category: 分类标签
|
|||
|
|
- create_user_id: 创建人ID
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
- update_time: 更新时间
|
|||
|
|
|
|||
|
|
#### 12. 试卷表(exam_paper)
|
|||
|
|
- id: 主键
|
|||
|
|
- paper_name: 试卷名称
|
|||
|
|
- question_ids: 题目ID列表(JSON格式数组)
|
|||
|
|
- total_score: 总分
|
|||
|
|
- duration: 考试时长(分钟)
|
|||
|
|
- create_user_id: 创建人ID
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
- update_time: 更新时间
|
|||
|
|
|
|||
|
|
#### 13. 考试表(exam)
|
|||
|
|
- id: 主键
|
|||
|
|
- exam_name: 考试名称
|
|||
|
|
- paper_id: 试卷ID(外键关联exam_paper表)
|
|||
|
|
- start_time: 开始时间
|
|||
|
|
- end_time: 结束时间
|
|||
|
|
- duration: 考试时长(分钟,可为空,表示不限制)
|
|||
|
|
- class_id: 班级ID(可为空,表示分配给个人)
|
|||
|
|
- student_id: 学员ID(可为空,表示分配给班级)
|
|||
|
|
- allow_retake: 是否允许重考(0:不允许 1:允许,管理员可设置)
|
|||
|
|
- max_retake_times: 最大重考次数(如果允许重考)
|
|||
|
|
- create_user_id: 创建人ID
|
|||
|
|
- status: 状态(0:未开始 1:进行中 2:已结束)
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
- update_time: 更新时间
|
|||
|
|
|
|||
|
|
#### 14. 考试记录表(exam_record)
|
|||
|
|
- id: 主键
|
|||
|
|
- exam_id: 考试ID(外键关联exam表)
|
|||
|
|
- student_id: 学员ID(外键关联sys_user表)
|
|||
|
|
- paper_id: 试卷ID(外键关联exam_paper表)
|
|||
|
|
- answers: 答案(JSON格式,存储题目ID和答案的映射)
|
|||
|
|
- score: 得分
|
|||
|
|
- start_time: 开始时间
|
|||
|
|
- submit_time: 提交时间
|
|||
|
|
- duration: 考试用时(秒)
|
|||
|
|
- status: 状态(doing:进行中 completed:已完成)
|
|||
|
|
- retake_count: 重考次数(第几次参加该考试)
|
|||
|
|
- create_time: 创建时间
|
|||
|
|
- update_time: 更新时间
|
|||
|
|
|
|||
|
|
## 开发阶段规划
|
|||
|
|
|
|||
|
|
### 第一阶段:基础架构搭建(预计1-2周)
|
|||
|
|
**目标**:搭建项目基础框架,完成核心功能的基础部分
|
|||
|
|
|
|||
|
|
#### 后端任务
|
|||
|
|
- [x] 创建Spring Boot项目
|
|||
|
|
- [x] 配置数据库连接
|
|||
|
|
- [x] 创建数据库表结构(包含所有核心表)
|
|||
|
|
- [x] 实现用户认证模块(登录、Token、权限验证)
|
|||
|
|
- [x] 实现基于角色的权限控制(RBAC)
|
|||
|
|
- [x] 实现基础CRUD接口(用户管理、学科分类)
|
|||
|
|
- [x] 配置文件上传功能
|
|||
|
|
- [x] 配置跨域和WebSocket(跨域已配置,WebSocket待实现)
|
|||
|
|
- [x] 实现数据权限过滤(教师只能看到自己班级的数据)
|
|||
|
|
|
|||
|
|
#### 前端任务(UniApp)
|
|||
|
|
- [x] 创建UniApp项目基础结构
|
|||
|
|
- [x] 配置项目结构
|
|||
|
|
- [x] 实现登录页面
|
|||
|
|
- [x] 封装网络请求(包含Token管理)
|
|||
|
|
- [x] 实现基础路由
|
|||
|
|
- [x] 配置横屏支持
|
|||
|
|
- [x] 实现权限控制(路由守卫)
|
|||
|
|
|
|||
|
|
#### 管理后台任务
|
|||
|
|
- [x] 创建Vue项目基础结构
|
|||
|
|
- [x] 配置路由和状态管理
|
|||
|
|
- [x] 实现登录页面
|
|||
|
|
- [x] 实现基础布局(菜单、权限控制)
|
|||
|
|
- [x] 实现权限控制(路由守卫、菜单权限)
|
|||
|
|
- [x] 集成图表库(ECharts)
|
|||
|
|
|
|||
|
|
### 第二阶段:核心功能开发(预计3-4周)
|
|||
|
|
**目标**:完成核心业务功能
|
|||
|
|
|
|||
|
|
#### 2.1 用户和班级管理
|
|||
|
|
- [ ] 用户管理(管理员、教师、学员)
|
|||
|
|
- [ ] 学员信息管理(CRUD)
|
|||
|
|
- [ ] 学员信息批量导入(Excel/CSV)
|
|||
|
|
- [ ] 班级管理(CRUD)
|
|||
|
|
- [ ] 学员班级分配
|
|||
|
|
- [ ] 教师班级分配(管理员分配教师管理班级)
|
|||
|
|
- [ ] 权限控制实现(教师只能管理自己的班级)
|
|||
|
|
|
|||
|
|
#### 2.2 课件管理
|
|||
|
|
- [ ] 学科分类管理(管理员)
|
|||
|
|
- [ ] 课件上传功能(需选择学科分类)
|
|||
|
|
- [ ] 课件列表查询(按学科分类、权限过滤)
|
|||
|
|
- [ ] 课件删除功能
|
|||
|
|
- [ ] 视频文件处理(FFmpeg转码,压缩文件大小)
|
|||
|
|
|
|||
|
|
#### 2.3 课程管理
|
|||
|
|
- [ ] 课程创建
|
|||
|
|
- [ ] 课程发布(分配给学员/班级)
|
|||
|
|
- [ ] App端课程列表
|
|||
|
|
- [ ] 课件查看(图文/视频播放)
|
|||
|
|
- [ ] **学习进度跟踪**:
|
|||
|
|
- 视频播放进度上报接口
|
|||
|
|
- 学习记录存储(学习次数、观看时长)
|
|||
|
|
- 学习详情记录
|
|||
|
|
- 学习进度查询接口
|
|||
|
|
- [ ] 后台学习进度查看(管理员和教师)
|
|||
|
|
|
|||
|
|
#### 2.4 学习监控
|
|||
|
|
- [ ] App端截图功能
|
|||
|
|
- [ ] 截图上传接口
|
|||
|
|
- [ ] 后台监控查看
|
|||
|
|
- [ ] 历史记录查询
|
|||
|
|
|
|||
|
|
### 第三阶段:语音和考试功能(预计2-3周)
|
|||
|
|
**目标**:完成语音评测和考试模块
|
|||
|
|
|
|||
|
|
#### 3.1 语音评测
|
|||
|
|
- [ ] 调研并选择语音服务商
|
|||
|
|
- [ ] 集成语音评测API
|
|||
|
|
- [ ] 实现语音录制功能
|
|||
|
|
- [ ] 实现评测结果展示
|
|||
|
|
- [ ] 评测记录存储
|
|||
|
|
|
|||
|
|
#### 3.2 考试模块
|
|||
|
|
- [ ] 题库管理(题目CRUD,按学科分类)
|
|||
|
|
- [ ] 试卷生成功能
|
|||
|
|
- [ ] 考试发布功能(分配给学员/班级)
|
|||
|
|
- [ ] 考试规则设置(教师可设置时长、时间等)
|
|||
|
|
- [ ] 重考限制设置(管理员可设置是否允许重考)
|
|||
|
|
- [ ] App端考试界面
|
|||
|
|
- [ ] 自动评分功能
|
|||
|
|
- [ ] 成绩统计(按班级、按学员等)
|
|||
|
|
|
|||
|
|
### 第四阶段:成绩管理和优化(预计1-2周)
|
|||
|
|
**目标**:完成成绩管理和系统优化
|
|||
|
|
|
|||
|
|
#### 4.1 成绩管理
|
|||
|
|
- [ ] 成绩查询功能(权限控制:教师只能查看自己班级)
|
|||
|
|
- [ ] 成绩统计功能
|
|||
|
|
- [ ] **成绩统计图表**(柱状图、折线图、饼图等)
|
|||
|
|
- [ ] 成绩单生成(PDF)
|
|||
|
|
- [ ] 成绩打印功能
|
|||
|
|
- [ ] 成绩导出功能
|
|||
|
|
|
|||
|
|
#### 4.2 系统优化
|
|||
|
|
- [ ] 性能优化
|
|||
|
|
- [ ] 界面优化
|
|||
|
|
- [ ] 错误处理完善
|
|||
|
|
- [ ] 日志记录
|
|||
|
|
|
|||
|
|
### 第五阶段:测试和部署(预计1周)
|
|||
|
|
**目标**:系统测试和部署准备
|
|||
|
|
|
|||
|
|
#### 5.1 测试
|
|||
|
|
- [ ] 功能测试
|
|||
|
|
- [ ] 兼容性测试
|
|||
|
|
- [ ] 性能测试
|
|||
|
|
- [ ] 安全测试
|
|||
|
|
|
|||
|
|
#### 5.2 部署
|
|||
|
|
- [ ] 部署文档编写
|
|||
|
|
- [ ] 数据库初始化脚本
|
|||
|
|
- [ ] 部署环境配置
|
|||
|
|
- [ ] 上线准备
|
|||
|
|
|
|||
|
|
## 技术难点和解决方案
|
|||
|
|
|
|||
|
|
### 1. 屏幕截图上传
|
|||
|
|
**难点**:UniApp如何实现屏幕截图并上传
|
|||
|
|
**解决方案**:
|
|||
|
|
- 使用uni.canvasToTempFilePath将页面转为图片
|
|||
|
|
- 或使用plus.screen.capture(需5+App环境)
|
|||
|
|
- 定时上传截图到服务器
|
|||
|
|
|
|||
|
|
### 2. 视频播放
|
|||
|
|
**难点**:UniApp视频播放兼容性
|
|||
|
|
**解决方案**:
|
|||
|
|
- 使用video组件
|
|||
|
|
- 支持多种视频格式
|
|||
|
|
- 处理横屏播放
|
|||
|
|
|
|||
|
|
### 3. 语音评测
|
|||
|
|
**难点**:选择合适的语音服务并集成
|
|||
|
|
**解决方案**:
|
|||
|
|
- 对比各服务商价格和功能
|
|||
|
|
- 封装统一的语音评测接口
|
|||
|
|
- 支持后续切换服务商
|
|||
|
|
|
|||
|
|
### 4. 文件存储
|
|||
|
|
**难点**:局域网部署的文件存储
|
|||
|
|
**解决方案**:
|
|||
|
|
- 使用本地文件系统存储
|
|||
|
|
- 配置静态资源访问
|
|||
|
|
- 考虑文件大小限制
|
|||
|
|
|
|||
|
|
### 5. 实时监控
|
|||
|
|
**难点**:实时查看学生学习画面
|
|||
|
|
**解决方案**:
|
|||
|
|
- 使用WebSocket推送最新截图
|
|||
|
|
- 或使用轮询方式获取最新截图
|
|||
|
|
- 考虑性能优化
|
|||
|
|
|
|||
|
|
## 下一步行动
|
|||
|
|
|
|||
|
|
1. **确认需求**:与用户确认需求文档是否完整准确
|
|||
|
|
2. **技术选型确认**:确认技术栈选择
|
|||
|
|
3. **数据库设计**:详细设计数据库表结构
|
|||
|
|
4. **接口设计**:设计前后端接口规范
|
|||
|
|
5. **开始开发**:按照开发阶段逐步实施
|
|||
|
|
|
|||
|
|
## 权限控制设计
|
|||
|
|
|
|||
|
|
### 角色权限矩阵
|
|||
|
|
|
|||
|
|
| 功能模块 | 管理员 | 教师 | 学员 |
|
|||
|
|
|---------|--------|------|------|
|
|||
|
|
| 用户管理 | ✅ 全部 | ❌ | ❌ |
|
|||
|
|
| 教师管理 | ✅ 全部 | ❌ | ❌ |
|
|||
|
|
| 学科分类管理 | ✅ 全部 | ❌ | ❌ |
|
|||
|
|
| 班级管理 | ✅ 全部 | ✅ 仅自己管理的班级 | ❌ |
|
|||
|
|
| 学员管理 | ✅ 全部 | ✅ 仅自己班级的学员 | ❌ |
|
|||
|
|
| 课件管理 | ✅ 全部 | ✅ 上传和管理 | ❌ |
|
|||
|
|
| 课程管理 | ✅ 全部 | ✅ 创建和发布 | ✅ 查看和学习 |
|
|||
|
|
| 学习监控 | ✅ 全部 | ✅ 仅自己班级 | ❌ |
|
|||
|
|
| 学习进度查看 | ✅ 全部 | ✅ 仅自己班级 | ✅ 仅自己 |
|
|||
|
|
| 考试管理 | ✅ 全部 | ✅ 创建和发布 | ✅ 参加考试 |
|
|||
|
|
| 考试规则设置 | ✅ 全部(可限制重考) | ✅ 设置规则 | ❌ |
|
|||
|
|
| 成绩查看 | ✅ 全部 | ✅ 仅自己班级 | ✅ 仅自己 |
|
|||
|
|
| 成绩统计 | ✅ 全部 | ✅ 仅自己班级 | ❌ |
|
|||
|
|
|
|||
|
|
### 数据权限控制
|
|||
|
|
- **教师数据隔离**:教师只能查看和管理自己负责的班级相关数据
|
|||
|
|
- **学员数据隔离**:学员只能查看自己的学习记录和成绩
|
|||
|
|
- **管理员全局权限**:管理员可以查看和管理所有数据
|
|||
|
|
|
|||
|
|
## 视频处理策略
|
|||
|
|
|
|||
|
|
### 视频压缩和优化
|
|||
|
|
- **目标**:在保证清晰度的情况下,文件大小尽量最小
|
|||
|
|
- **方案**:
|
|||
|
|
1. 使用FFmpeg进行视频转码
|
|||
|
|
2. 视频编码:H.264(兼容性好)
|
|||
|
|
3. 音频编码:AAC
|
|||
|
|
4. 分辨率:根据原始视频自动适配,最大不超过1080p
|
|||
|
|
5. 码率:动态码率,平衡清晰度和文件大小
|
|||
|
|
6. 格式:统一转换为MP4格式
|
|||
|
|
|
|||
|
|
### 视频播放进度跟踪
|
|||
|
|
- **跟踪方式**:
|
|||
|
|
1. 前端定时上报播放进度(每5-10秒)
|
|||
|
|
2. 视频暂停/播放/结束事件上报
|
|||
|
|
3. 后端记录每次学习的详细记录
|
|||
|
|
4. 计算总学习时长和播放进度百分比
|
|||
|
|
|
|||
|
|
## 图表展示需求
|
|||
|
|
|
|||
|
|
### 成绩统计图表类型
|
|||
|
|
1. **柱状图**:各班级/学员成绩对比
|
|||
|
|
2. **折线图**:成绩趋势分析(时间维度)
|
|||
|
|
3. **饼图**:成绩分布(优秀、良好、及格、不及格)
|
|||
|
|
4. **雷达图**:多维度成绩分析
|
|||
|
|
5. **表格**:详细成绩数据表格
|
|||
|
|
|
|||
|
|
### 图表展示位置
|
|||
|
|
- **管理后台**:成绩管理页面、仪表盘
|
|||
|
|
- **图表库**:前端使用ECharts,后端生成使用JFreeChart或ECharts Java
|
|||
|
|
|
|||
|
|
## 已确认事项
|
|||
|
|
|
|||
|
|
✅ **用户角色**:区分管理员和教师,教师只能管理自己的班级,管理员管理所有
|
|||
|
|
✅ **课程分类**:按学科分类,学科分类由管理员管理
|
|||
|
|
✅ **学习进度**:视频播放进度实时跟踪,记录学习次数和观看时间,管理员和教师都可查看
|
|||
|
|
✅ **考试规则**:教师可以自定义,管理员可以限制是否重考
|
|||
|
|
✅ **成绩统计**:需要图表展示(柱状图、折线图、饼图等)
|
|||
|
|
✅ **文件大小**:暂无限制,在保证清晰度的情况下文件大小尽量最小
|
|||
|
|
✅ **设备兼容性**:同时兼容iOS和Android,兼容主流系统(iOS 12+、Android 8.0+)
|
|||
|
|
|