项目介绍

This commit is contained in:
xiao12feng8 2026-01-30 15:08:32 +08:00
parent e7c4b27c17
commit 30bcc9b0ef
19 changed files with 2449 additions and 0 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,510 @@
# 国语教育平台 - 架构文档
## 📐 整体架构
### 系统架构图
```
┌─────────────────────────────────────────────────────────────┐
│ 客户端层 │
├──────────────────┬──────────────────┬──────────────────────┤
│ Web管理端 │ 移动端App │ 微信小程序(规划) │
│ (Vue.js) │ (uni-app) │ │
└──────────────────┴──────────────────┴──────────────────────┘
↓ HTTP/HTTPS
┌─────────────────────────────────────────────────────────────┐
│ 网关层 │
│ Nginx (反向代理) │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 应用服务层 │
│ Spring Boot (端口: 30091) │
├──────────────────┬──────────────────┬──────────────────────┤
│ 系统管理模块 │ 学习管理模块 │ 语音评测模块 │
│ - 用户管理 │ - 课程管理 │ - 语音识别 │
│ - 权限管理 │ - 考试管理 │ - 发音评测 │
│ - 角色管理 │ - 题库管理 │ - 评测记录 │
│ - 菜单管理 │ - 学习记录 │ │
└──────────────────┴──────────────────┴──────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 数据访问层 │
│ MyBatis + Druid │
└─────────────────────────────────────────────────────────────┘
┌──────────────────┬──────────────────┬──────────────────────┐
│ MySQL数据库 │ Redis缓存 │ 文件存储 │
│ (业务数据) │ (会话/缓存) │ (课件/录音) │
└──────────────────┴──────────────────┴──────────────────────┘
```
---
## 🏗️ 技术架构
### 后端技术栈
#### 核心框架
- **Spring Boot 2.5.15**: 应用框架
- **Spring Security 5.7.14**: 安全框架
- **Spring Framework 5.3.39**: 基础框架
- **MyBatis**: ORM框架
- **Druid 1.2.23**: 数据库连接池
#### 中间件
- **Redis**: 缓存、会话管理
- **MySQL**: 关系型数据库
- **Nginx**: 反向代理、负载均衡
#### 工具库
- **JWT (jjwt 0.9.1)**: Token认证
- **FastJSON 2.0.58**: JSON处理
- **Apache POI 4.1.2**: Excel导入导出
- **PageHelper 1.4.7**: 分页插件
- **Swagger 3.0.0**: API文档
- **Kaptcha 2.3.3**: 验证码生成
- **Velocity 2.3**: 代码生成模板
### 前端技术栈
#### Web管理端
- **Vue.js 2.x**: 前端框架
- **Element UI**: UI组件库
- **Axios**: HTTP客户端
- **Vuex**: 状态管理
- **Vue Router**: 路由管理
- **Webpack**: 构建工具
#### 移动端App
- **uni-app**: 跨平台开发框架
- **Vue.js 3.2.47**: 前端框架
- **uView Plus 3.6.15**: UI组件库
- **Vuex 4.1.0**: 状态管理
- **Vite 5.2.8**: 构建工具
---
## 📦 模块架构
### 后端模块结构
```
ry-study (父工程)
├── ry-study-admin # 主应用模块(启动入口)
│ ├── controller # 控制器层
│ │ ├── system # 系统管理控制器
│ │ ├── study # 学习管理控制器
│ │ └── voice # 语音评测控制器
│ └── RyStudyApplication # 启动类
├── ry-study-framework # 框架核心模块
│ ├── config # 配置类
│ ├── security # 安全配置
│ ├── interceptor # 拦截器
│ └── aspectj # AOP切面
├── ry-study-system # 系统业务模块
│ ├── domain # 实体类
│ │ ├── study # 学习相关实体
│ │ └── vo # 视图对象
│ ├── mapper # 数据访问层
│ │ └── study # 学习相关Mapper
│ └── service # 业务逻辑层
│ ├── impl # 业务实现
│ ├── study # 学习业务
│ └── voice # 语音业务
├── ry-study-common # 通用工具模块
│ ├── annotation # 自定义注解
│ ├── constant # 常量定义
│ ├── core # 核心工具
│ ├── enums # 枚举类
│ ├── exception # 异常处理
│ └── utils # 工具类
├── ry-study-quartz # 定时任务模块
│ ├── domain # 任务实体
│ ├── service # 任务服务
│ └── util # 任务工具
└── ry-study-generator # 代码生成模块
├── domain # 生成配置
├── service # 生成服务
└── util # 生成工具
```
### 前端模块结构
#### Web管理端 (ry-study-ui)
```
ry-study-ui
├── public # 静态资源
├── src
│ ├── api # API接口
│ │ ├── system # 系统接口
│ │ ├── study # 学习接口
│ │ └── monitor # 监控接口
│ ├── assets # 资源文件
│ ├── components # 公共组件
│ ├── directive # 自定义指令
│ ├── layout # 布局组件
│ ├── router # 路由配置
│ ├── store # Vuex状态
│ ├── utils # 工具函数
│ └── views # 页面视图
│ ├── system # 系统管理页面
│ ├── study # 学习管理页面
│ └── monitor # 监控页面
└── vue.config.js # Vue配置
```
#### 移动端App (fronted_uniapp)
```
fronted_uniapp
├── api # API接口
│ └── study # 学习相关接口
├── components # 公共组件
│ ├── custom-navbar # 自定义导航栏
│ └── custom-tabbar # 自定义标签栏
├── config # 配置文件
├── pages # 页面
│ ├── login # 登录页
│ ├── index # 首页
│ ├── course # 课程页面
│ ├── exam # 考试页面
│ ├── voice # 语音评测页面
│ ├── learning # 学习记录页面
│ ├── score # 成绩页面
│ └── profile # 个人中心
├── static # 静态资源
├── store # Vuex状态
│ └── modules # 状态模块
├── utils # 工具函数
├── App.vue # 应用入口
├── main.js # 主入口文件
├── manifest.json # 应用配置
└── pages.json # 页面配置
```
---
## 🔄 数据流架构
### 请求处理流程
```
客户端请求
Nginx (反向代理)
Spring Security (认证/授权)
Controller (控制器)
Service (业务逻辑)
Mapper (数据访问)
MySQL/Redis (数据存储)
返回响应
```
### 认证授权流程
```
1. 用户登录
2. 验证用户名密码
3. 生成JWT Token
4. 返回Token给客户端
5. 客户端携带Token请求
6. 验证Token有效性
7. 解析用户权限
8. 执行业务逻辑
```
---
## 💾 数据库设计
### 核心数据表
#### 系统管理
- `sys_user`: 用户表
- `sys_role`: 角色表
- `sys_menu`: 菜单表
- `sys_dept`: 部门表
- `sys_dict_type`: 字典类型表
- `sys_dict_data`: 字典数据表
- `sys_config`: 系统配置表
- `sys_oper_log`: 操作日志表
- `sys_logininfor`: 登录日志表
#### 学习管理
- `study_class`: 班级表
- `study_class_user`: 班级学生关联表
- `study_course`: 课程表
- `study_courseware`: 课件表
- `study_course_assignment`: 课程分配表
- `study_learning_record`: 学习记录表
- `study_subject`: 学科表
#### 考试管理
- `study_question_bank`: 题库表
- `study_question_bank_item`: 题目表
- `study_exam`: 考试表
- `study_question`: 试题表
- `study_student_answer`: 学生答题表
- `study_score`: 成绩表
#### 语音评测
- `study_voice_evaluation`: 语音评测表
- `study_voice_evaluation_content`: 评测内容表
#### 监控管理
- `study_screen_monitor`: 屏幕监控表
- `study_student_change_log`: 学生变更日志表
---
## 🔌 接口设计
### RESTful API规范
#### 请求格式
```
GET /api/resource # 查询列表
GET /api/resource/{id} # 查询详情
POST /api/resource # 新增
PUT /api/resource # 修改
DELETE /api/resource/{id} # 删除
```
#### 响应格式
```json
{
"code": 200,
"msg": "操作成功",
"data": {}
}
```
### 主要接口模块
#### 系统管理接口
- `/system/user/*`: 用户管理
- `/system/role/*`: 角色管理
- `/system/menu/*`: 菜单管理
- `/system/dept/*`: 部门管理
- `/system/dict/*`: 字典管理
#### 学习管理接口
- `/study/class/*`: 班级管理
- `/study/course/*`: 课程管理
- `/study/courseware/*`: 课件管理
- `/study/learning/*`: 学习记录
- `/study/subject/*`: 学科管理
#### 考试管理接口
- `/study/questionBank/*`: 题库管理
- `/study/exam/*`: 考试管理
- `/study/score/*`: 成绩管理
#### 语音评测接口
- `/voice/evaluate`: 语音评测
- `/voice/record/*`: 评测记录
---
## 🔒 安全架构
### 安全机制
1. **认证机制**
- JWT Token认证
- Token自动刷新
- 单点登录支持
2. **授权机制**
- RBAC权限模型
- 数据权限控制
- 接口权限控制
3. **数据安全**
- 密码加密存储BCrypt
- 敏感数据加密
- SQL注入防护
4. **传输安全**
- HTTPS加密传输
- Token签名验证
- 请求防重放
5. **日志审计**
- 操作日志记录
- 登录日志记录
- 异常日志记录
---
## 🚀 部署架构
### 单机部署
```
┌─────────────────────────────┐
│ 服务器 (192.168.0.106) │
├─────────────────────────────┤
│ Nginx (80/443) │
│ Spring Boot (30091) │
│ MySQL (3306) │
│ Redis (6379) │
│ 文件存储 (/profile/upload) │
└─────────────────────────────┘
```
### 集群部署(推荐)
```
┌──────────────┐
│ 负载均衡器 │
│ (Nginx) │
└──────────────┘
┌──────────────┬──────────────┬──────────────┐
│ 应用服务器1 │ 应用服务器2 │ 应用服务器3 │
│ Spring Boot │ Spring Boot │ Spring Boot │
└──────────────┴──────────────┴──────────────┘
↓ ↓ ↓
┌──────────────┬──────────────┬──────────────┐
│ MySQL主库 │ MySQL从库 │ Redis集群 │
└──────────────┴──────────────┴──────────────┘
┌──────────────┐
│ 文件存储 │
│ (NFS/OSS) │
└──────────────┘
```
---
## 📊 性能优化
### 缓存策略
- **Redis缓存**: 用户信息、权限数据、字典数据
- **本地缓存**: 配置信息、静态数据
- **浏览器缓存**: 静态资源、图片
### 数据库优化
- **索引优化**: 关键字段建立索引
- **查询优化**: 避免全表扫描
- **连接池**: Druid连接池配置
- **读写分离**: 主从复制
### 前端优化
- **代码分割**: 按需加载
- **资源压缩**: Gzip压缩
- **图片优化**: 懒加载、WebP格式
- **CDN加速**: 静态资源CDN
---
## 🔧 扩展性设计
### 模块化设计
- 各模块独立开发
- 低耦合高内聚
- 易于维护和扩展
### 插件化架构
- 语音识别引擎可替换
- 支持自定义插件
- 灵活的配置机制
### 微服务演进
- 当前为单体应用
- 可按模块拆分为微服务
- 支持Spring Cloud改造
---
## 📈 监控运维
### 系统监控
- **应用监控**: Spring Boot Actuator
- **性能监控**: JVM监控、线程监控
- **日志监控**: 日志收集、分析
- **告警机制**: 异常告警、性能告警
### 运维工具
- **部署工具**: Shell脚本、Docker
- **备份工具**: 数据库备份、文件备份
- **监控工具**: Prometheus、Grafana可选
---
## 🎯 技术选型理由
### 为什么选择Spring Boot
- 快速开发、约定优于配置
- 生态完善、社区活跃
- 易于部署、运维简单
### 为什么选择uni-app
- 一次开发、多端运行
- Vue语法、学习成本低
- 性能优秀、生态丰富
### 为什么选择MySQL
- 开源免费、成熟稳定
- 性能优秀、易于维护
- 支持事务、数据安全
### 为什么选择Redis
- 高性能、低延迟
- 数据结构丰富
- 支持持久化
---
## 📝 开发规范
### 代码规范
- 遵循阿里巴巴Java开发手册
- 统一的命名规范
- 完善的注释文档
### Git规范
- 分支管理策略
- 提交信息规范
- Code Review流程
### 接口规范
- RESTful API设计
- 统一的响应格式
- 完善的接口文档
---
## 🔮 技术演进路线
### 短期3-6个月
- 性能优化
- 功能完善
- Bug修复
### 中期6-12个月
- 微服务改造
- 容器化部署
- 自动化运维
### 长期1-2年
- AI智能化
- 大数据分析
- 云原生架构

View File

@ -0,0 +1,224 @@
# 国语教育平台 - 项目介绍
## 📋 项目概述
**国语教育平台**是一个面向国语普通话教学的综合性在线教育系统集成了课程学习、在线考试、语音评测、学习监控等功能。系统采用前后端分离架构支持Web管理端和移动端Android/iOS应用。
- **项目名称**: 国语教育平台 (ry-study)
- **版本**: v2.1.1
- **开发单位**: DDNAI
- **适用场景**: 学校、培训机构的国语教学与管理
---
## 🎯 核心功能
### 1. 用户管理
- **多角色支持**: 管理员、教师、学生
- **用户注册/登录**: 支持账号密码登录JWT Token认证
- **权限管理**: 基于RBAC的细粒度权限控制
- **学生审核**: 新注册学生需要管理员审核
- **班级管理**: 支持按教育阶段、年级、班级组织学生
### 2. 课程学习
- **课程管理**:
- 课程创建、编辑、发布
- 课程分类(按学科、年级)
- 课程封面、简介、详情
- **课件管理**:
- 支持视频、音频、文档等多种格式
- 课件章节组织
- 在线播放/预览
- **学习记录**:
- 自动记录学习进度
- 学习时长统计
- 学习轨迹追踪
- **课程分配**:
- 教师可将课程分配给指定班级
- 学生查看已分配课程
### 3. 在线考试
- **题库管理**:
- 支持单选题、多选题、判断题、填空题、简答题
- 题库分类管理
- 题目导入/导出Excel
- **试卷管理**:
- 手动组卷
- 随机抽题组卷
- 试卷预览
- **考试功能**:
- 在线答题
- 自动计时
- 自动提交
- 防作弊(屏幕监控)
- **成绩管理**:
- 自动阅卷(客观题)
- 手动阅卷(主观题)
- 成绩统计分析
- 错题回顾
### 4. 语音评测 ⭐
- **语音识别**:
- 实时录音
- 语音转文字ASR
- 支持离线识别Vosk引擎
- **发音评测**:
- 与标准文本对比
- 发音准确度评分
- 详细评测报告
- **评测记录**:
- 历史评测记录查询
- 评测内容回放
- 进步趋势分析
### 5. 学习监控
- **屏幕录制**:
- 考试过程屏幕录制
- WebRTC实时传输
- 录制文件存储
- **学习行为分析**:
- 学习时长统计
- 学习频率分析
- 学习效果评估
### 6. 数据统计
- **学生数据**:
- 学习进度统计
- 考试成绩统计
- 语音评测统计
- **教师数据**:
- 班级学习情况
- 课程完成率
- 考试通过率
- **管理员数据**:
- 平台整体数据
- 用户活跃度
- 系统使用情况
---
## 💡 技术特色
### 1. 内网部署支持
- 完全支持局域网环境部署
- 无需公网访问
- 数据安全可控
### 2. 离线语音识别
- 集成Vosk离线语音识别引擎
- 不依赖第三方云服务
- 保护学生隐私
### 3. 横屏优化
- 移动端强制横屏显示
- 适配平板设备
- 更好的视频学习体验
### 4. 实时监控
- WebRTC实时屏幕共享
- 考试过程监控
- 防作弊机制
### 5. 响应式设计
- 支持多种屏幕尺寸
- 自适应布局
- 统一的用户体验
---
## 📱 支持平台
### 管理端Web
- Chrome、Firefox、Edge等现代浏览器
- 响应式设计支持PC和平板
### 移动端App
- Android 5.0+API Level 21+
- iOS 10.0+
- 支持手机和平板
---
## 🎓 适用场景
### 1. 学校教学
- 普通话课程教学
- 学生发音训练
- 在线考试测评
### 2. 培训机构
- 国语培训课程
- 学员管理
- 学习效果评估
### 3. 企业培训
- 员工普通话培训
- 培训效果考核
- 学习进度跟踪
### 4. 自主学习
- 个人发音练习
- 在线课程学习
- 自我测评
---
## 🔐 安全特性
- **数据加密**: 敏感数据加密存储
- **JWT认证**: 安全的Token认证机制
- **权限控制**: 细粒度的权限管理
- **SQL防注入**: MyBatis参数化查询
- **XSS防护**: 前端输入过滤
- **日志审计**: 完整的操作日志记录
---
## 📊 系统优势
### 1. 功能完整
- 涵盖教学全流程
- 从课程学习到考试评测
- 一站式解决方案
### 2. 易于部署
- 支持内网部署
- Docker容器化部署
- 详细的部署文档
### 3. 性能优良
- Redis缓存优化
- 数据库连接池
- 静态资源CDN
### 4. 扩展性强
- 模块化设计
- 插件化架构
- 易于二次开发
### 5. 用户体验好
- 简洁的界面设计
- 流畅的交互体验
- 完善的错误提示
---
## 📈 未来规划
- [ ] AI智能评测发音细节分析
- [ ] 多语言支持(方言识别)
- [ ] 直播课堂功能
- [ ] 社交学习功能(学习圈)
- [ ] 移动端教师管理功能
- [ ] 数据可视化大屏
- [ ] 微信小程序版本
---
## 📞 技术支持
如有问题或建议,请联系技术支持团队。
**项目地址**: http://www.ddnai.com
**技术栈**: Spring Boot + Vue.js + uni-app
**开发团队**: DDNAI