# Education04 **Repository Path**: gitee-aaron/education04 ## Basic Information - **Project Name**: Education04 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-21 - **Last Updated**: 2025-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SmartEdu 智慧教育平台 [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Python](https://img.shields.io/badge/python-3.11-blue.svg)](https://www.python.org/) [![Vue](https://img.shields.io/badge/vue-3.3-green.svg)](https://vuejs.org/) [![Docker](https://img.shields.io/badge/docker-required-blue.svg)](https://www.docker.com/) 一个基于微服务架构的在线教育平台,提供课程管理、在线学习、智能评分等功能。 ## 📋 目录 - [系统特性](#系统特性) - [技术栈](#技术栈) - [系统架构](#系统架构) - [快速开始](#快速开始) - [详细安装](#详细安装) - [配置说明](#配置说明) - [使用指南](#使用指南) - [API文档](#api文档) - [常见问题](#常见问题) ## ✨ 系统特性 ### 核心功能 - **课程管理** - 课程发布与管理 - 章节与课件管理 - 课程分类与标签 - 支持视频、文档、考试等多种类型 - **在线学习** - 视频播放与进度跟踪 - 文档在线预览与下载 - 在线答题与考试 - 学习进度统计 - **智能评分** - 简答题AI自动评分 - 详细的评价反馈 - 改进建议 - 详细分析报告 - **用户管理** - 角色权限管理(管理员、教师、学生) - 用户信息管理 - 选课管理 - **推荐系统** - 个性化课程推荐 - 多种推荐算法 - 用户行为分析 - **系统管理** - 数据概览与统计 - AI模型配置 - 系统日志 - 基础配置 ## 🛠️ 技术栈 ### 后端 - **语言**: Python 3.11 - **框架**: FastAPI - **数据库**: MySQL 8.0 - **缓存**: Redis 7.2 - **对象存储**: MinIO - **容器化**: Docker & Docker Compose ### 前端 - **框架**: Vue 3 (Composition API) - **UI库**: Ant Design Vue - **状态管理**: Pinia - **路由**: Vue Router - **构建工具**: Vite - **语言**: TypeScript ### 微服务架构 - **Gateway**: API网关 (端口: 8000) - **User Service**: 用户服务 (端口: 8101) - **Course Service**: 课程服务 (端口: 8102) - **Question Service**: 题库服务 (端口: 8103) - **Recommend Service**: 推荐服务 (端口: 8104) - **System Service**: 系统服务 (端口: 8105) ## 🏗️ 系统架构 ``` ┌─────────────────────────────────────────────────────────┐ │ 前端 (Vue 3) │ │ http://localhost:5173 │ └────────────────────┬────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ API Gateway (8000) │ │ 统一入口 / 路由 / 认证 / 限流 │ └──┬────────┬────────┬────────┬────────┬─────────────────┘ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ ┌─────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │User │ │Course│ │Quest.│ │Recom.│ │System│ │8101 │ │8102 │ │8103 │ │8104 │ │8105 │ └──┬──┘ └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ │ │ │ │ │ └───────┴────────┴────────┴────────┘ │ ┌───────────┼───────────┬──────────┐ ▼ ▼ ▼ ▼ ┌──────┐ ┌───────┐ ┌──────┐ ┌──────┐ │MySQL │ │ Redis │ │MinIO │ │ AI │ │ 3306 │ │ 6379 │ │ 9000 │ │ API │ └──────┘ └───────┘ └──────┘ └──────┘ ``` ## 🚀 快速开始 ### 环境要求 - Docker Desktop 4.0+ - Docker Compose 2.0+ - 8GB+ RAM - 20GB+ 磁盘空间 ### 一键启动 ```bash # 1. 克隆项目 cd edu44 # 2. 启动所有服务 docker-compose up -d # 3. 等待服务启动(约30秒) docker-compose logs -f # 4. 访问系统 # 前端: http://localhost:5173 # 后台: http://localhost:5173/admin ``` ### 默认账号 | 角色 | 用户名 | 密码 | |------|--------|------| | 管理员 | admin | admin123 | | 教师 | teacher01 | teacher123 | | 学生 | student01 | student123 | ## 📦 详细安装 ### 步骤1: 环境准备 #### MacOS ```bash # 安装 Docker Desktop brew install --cask docker # 启动 Docker Desktop open /Applications/Docker.app ``` #### Windows 下载并安装 [Docker Desktop for Windows](https://www.docker.com/products/docker-desktop) #### Linux ```bash # 安装 Docker curl -fsSL https://get.docker.com | sh # 安装 Docker Compose sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` ### 步骤2: 配置文件 编辑 `config/config.yaml`(可选): ```yaml # 数据库配置 db: host: mysql port: 3306 user: root password: root # 生产环境请修改 name: smartedu # Redis配置 redis: host: redis port: 6379 password: "" # 生产环境建议设置 # MinIO配置 minio: endpoint: minio:9000 access_key: minioadmin # 生产环境请修改 secret_key: minioadmin # 生产环境请修改 ``` ### 步骤3: 构建和启动 ```bash # 构建所有服务 docker-compose build # 启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f [service-name] ``` ### 步骤4: 初始化数据 ```bash # 导入示例数据(可选) docker exec smartedu-mysql mysql -u root -proot < backups/smartedu_20251021_utf8.sql ``` ### 步骤5: 验证安装 访问以下地址验证: - 前端: http://localhost:5173 - API网关: http://localhost:8000 - MinIO控制台: http://localhost:9001 ## ⚙️ 配置说明 ### AI模型配置 系统需要配置AI模型才能使用简答题自动评分功能。 1. 登录后台: http://localhost:5173/admin 2. 进入"系统设置" > "模型管理" 3. 点击"添加模型" 4. 填写配置: - 模型名称: 任意名称 - API地址: OpenAI兼容的API地址 - API密钥: 对应的API密钥 - 模型: gpt-3.5-turbo 或其他 - Max Tokens: 500-2000 - Temperature: 0.3-0.7 5. 设置为默认模型 6. 点击"测试"验证配置 ### 对象存储配置 MinIO用于存储课件文件: - 访问: http://localhost:9001 - 用户名: minioadmin - 密码: minioadmin - Bucket: smartedu-files (自动创建) ### 邮件配置(可选) 编辑 `config/config.yaml`: ```yaml email: smtp_host: smtp.example.com smtp_port: 587 username: your-email@example.com password: your-password from_addr: no-reply@example.com ``` ## 📚 使用指南 ### 管理员操作 #### 1. 用户管理 - 查看所有用户 - 创建、编辑、删除用户 - 分配角色 - 禁用/启用用户 #### 2. 课程管理 **创建课程:** 1. 进入"课程管理" > "课程列表" 2. 点击"新建课程" 3. 填写课程信息: - 标题、描述 - 封面图片 - 分类、难度 - 选择教师 4. 点击"保存" **管理课件:** 1. 在课程列表点击"课件管理" 2. 创建章节 3. 添加课件(视频、文档、考试等) 4. 设置课件顺序 5. 发布课程 #### 3. 题库管理 **创建题目:** 1. 进入"题库管理" > "题目列表" 2. 点击"添加题目" 3. 选择题目类型: - 单选题 - 多选题 - 判断题 - 简答题 4. 填写题目内容、答案、解析 5. 设置难度和分值 **组织题库:** - 可以将题目添加到考试课件中 - 支持随机抽题 - 自动评分 #### 4. 推荐管理 - 查看用户行为数据 - 配置推荐算法 - 调整推荐权重 #### 5. 系统设置 - 基础配置(网站名称、Logo等) - AI模型管理 - 系统日志查看 ### 教师操作 #### 1. 课程创建 教师可以创建和管理自己的课程: - 上传课程资料 - 组织课程结构 - 发布/下架课程 #### 2. 学生管理 - 查看选课学生 - 分配课程 - 查看学习进度 #### 3. 成绩管理 - 查看答题记录 - 人工评分(简答题) - 成绩统计 ### 学生操作 #### 1. 浏览课程 - 课程中心浏览所有课程 - 搜索和筛选 - 查看课程详情 #### 2. 学习课程 **加入课程:** 1. 在课程详情页点击"加入课程" 2. 在"我的课程"中查看已加入课程 **开始学习:** 1. 点击"开始学习" 2. 观看视频、阅读文档 3. 完成练习和考试 4. 系统自动跟踪进度 #### 3. 在线答题 **参加考试:** 1. 在学习页面点击考试课件 2. 点击"开始答题" 3. 完成所有题目 4. 提交答卷 **查看成绩:** - 选择题、判断题自动评分 - 简答题AI自动评分(含反馈和建议) - 查看答题详情和解析 #### 4. 个人中心 - 修改个人信息 - 修改密码 - 查看学习统计 ## 🔌 API文档 ### 认证接口 #### 登录 ```http POST /api/user/login Content-Type: application/json { "username": "admin", "password": "admin123" } Response: { "token": "eyJhbGc...", "user": { "id": 1, "username": "admin", "role": "admin" } } ``` #### 注册 ```http POST /api/user/register Content-Type: application/json { "username": "newuser", "password": "password123", "email": "user@example.com", "role": "student" } ``` ### 课程接口 #### 获取课程列表 ```http GET /api/course/list/all?skip=0&limit=10&status=published Authorization: Bearer {token} Response: { "total": 32, "items": [...] } ``` #### 加入课程 ```http POST /api/course/enroll Authorization: Bearer {token} Content-Type: application/json { "course_id": 1, "student_id": 1 } ``` ### 题库接口 #### 提交答案 ```http POST /api/question/answer/submit Authorization: Bearer {token} Content-Type: application/json { "question_id": 1, "student_id": 1, "student_answer": "答案内容", "time_spent": 60 } Response: { "id": 1, "score": 8.5, "ai_feedback": "评价反馈", "ai_suggestions": "改进建议" } ``` #### AI评分 ```http POST /api/question/answer/ai-score/{answer_id} Authorization: Bearer {token} Response: { "ai_score": 8.5, "ai_feedback": "答案较好...", "ai_suggestions": "可以补充...", "analysis": "详细分析..." } ``` 完整API文档请查看各服务的 `/docs` 端点(FastAPI自动生成)。 ## 🐛 常见问题 ### 1. 服务启动失败 **问题**: 容器启动后立即退出 **解决方案**: ```bash # 查看错误日志 docker-compose logs [service-name] # 常见原因: # - 端口冲突:修改 docker-compose.yml 中的端口映射 # - 内存不足:增加 Docker 内存限制 # - 依赖未启动:等待 MySQL/Redis 完全启动 ``` ### 2. 数据库连接失败 **问题**: 服务无法连接到MySQL **解决方案**: ```bash # 1. 检查MySQL是否运行 docker-compose ps mysql # 2. 检查MySQL日志 docker-compose logs mysql # 3. 重启MySQL docker-compose restart mysql # 4. 验证连接 docker-compose exec mysql mysql -u root -proot -e "SELECT 1" ``` ### 3. 前端无法访问 **问题**: 访问 http://localhost:5173 无响应 **解决方案**: ```bash # 1. 检查前端容器 docker-compose ps frontend # 2. 重启前端 docker-compose restart frontend # 3. 查看日志 docker-compose logs frontend # 4. 清除缓存 docker-compose down docker-compose up -d --build frontend ``` ### 4. 文件上传失败 **问题**: 上传课件或头像失败 **解决方案**: ```bash # 1. 检查MinIO服务 docker-compose ps minio # 2. 访问MinIO控制台 # http://localhost:9001 # 3. 创建bucket (如果不存在) # Bucket名称: smartedu-files # 4. 设置bucket为public(开发环境) ``` ### 5. AI评分不工作 **问题**: 简答题提交后一直显示"评分中" **解决方案**: 1. 检查是否配置了AI模型 2. 验证API密钥是否有效 3. 测试AI模型连接 4. 查看 system-service 日志 ### 6. 中文显示乱码 **问题**: 课程标题等中文显示为乱码 **解决方案**: ```bash # 运行修复脚本 python3 scripts/fix_course_data.py # 或重启所有服务 docker-compose restart ``` ## 🔧 开发指南 ### 本地开发 #### 后端开发 ```bash # 1. 进入服务目录 cd backend/course-service # 2. 创建虚拟环境 python3 -m venv venv source venv/bin/activate # 3. 安装依赖 pip install -r requirements.txt # 4. 运行服务 python main.py ``` #### 前端开发 ```bash # 1. 进入前端目录 cd frontend # 2. 安装依赖 npm install # 3. 启动开发服务器 npm run dev # 4. 构建生产版本 npm run build ``` ### 添加新服务 1. 在 `backend/` 创建新服务目录 2. 添加 `Dockerfile` 3. 在 `docker-compose.yml` 添加服务配置 4. 在 `gateway` 添加路由规则 ## 📝 维护 ### 备份数据 ```bash # 备份MySQL数据库 docker-compose exec mysql mysqldump -u root -proot smartedu > backup.sql # 备份MinIO数据 docker-compose exec minio mc mirror /data/smartedu-files /backup/ ``` ### 更新系统 ```bash # 1. 拉取最新代码 git pull # 2. 重新构建 docker-compose build # 3. 重启服务 docker-compose up -d # 4. 清理旧镜像 docker image prune -f ``` ### 监控日志 ```bash # 实时查看所有日志 docker-compose logs -f # 查看特定服务日志 docker-compose logs -f course-service # 查看最近100行 docker-compose logs --tail=100 course-service ``` ## 📄 许可证 本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。 ## 🤝 贡献 欢迎贡献代码、报告问题或提出建议! ## 📧 联系方式 - 项目地址: [GitHub](https://github.com/your-repo/smartedu) - 问题反馈: [Issues](https://github.com/your-repo/smartedu/issues) ## 🙏 致谢 感谢所有开源项目和贡献者! --- **最后更新**: 2025年10月19日 **版本**: v1.0.0