guoyu/Test/备份/_已清理文件备份_周六 22512/md/总体计划.md

20 KiB
Raw Blame History

在线学习系统实施计划

项目架构设计

系统架构

┌─────────────────┐         ┌─────────────────┐
│   管理后台      │         │   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
  • 文件存储:本地文件系统(局域网部署)
  • WebSocketSpring 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周

目标:搭建项目基础框架,完成核心功能的基础部分

后端任务

  • 创建Spring Boot项目
  • 配置数据库连接
  • 创建数据库表结构(包含所有核心表)
  • 实现用户认证模块登录、Token、权限验证
  • 实现基于角色的权限控制RBAC
  • 实现基础CRUD接口用户管理、学科分类
  • 配置文件上传功能
  • 配置跨域和WebSocket跨域已配置WebSocket待实现
  • 实现数据权限过滤(教师只能看到自己班级的数据)

前端任务UniApp

  • 创建UniApp项目基础结构
  • 配置项目结构
  • 实现登录页面
  • 封装网络请求包含Token管理
  • 实现基础路由
  • 配置横屏支持
  • 实现权限控制(路由守卫)

管理后台任务

  • 创建Vue项目基础结构
  • 配置路由和状态管理
  • 实现登录页面
  • 实现基础布局(菜单、权限控制)
  • 实现权限控制(路由守卫、菜单权限)
  • 集成图表库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+