# 对于刷题平台的构思使用 **Repository Path**: zaradee/learnmore ## Basic Information - **Project Name**: 对于刷题平台的构思使用 - **Description**: 对于基于mogodb的web端刷题平台的构思使用 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-23 - **Last Updated**: 2026-03-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: Web, Java, MongoDB ## README # 智能刷题与组卷平台 基于 Spring Boot + Vue3 + MongoDB 的在线刷题与智能组卷系统,支持学生自主练习和管理员考试管理。 ## 系统架构 本项目包含两个子系统,共享同一套题库和用户体系: | 子系统 | 定位 | 技术栈 | |--------|------|--------| | 刷题平台 | 面向学生的自主练习工具 | Spring Boot + Vue3 + MongoDB | | 组卷平台 | 面向管理员/教师的考试管理系统 | Spring Boot + Vue3 + MongoDB | ``` ┌─────────────────────────────────────────────┐ │ 客户端层 (Vue3 + Element Plus) │ │ 刷题模块 │ 考试模块 │ 管理后台模块 │ └──────────────────┬──────────────────────────┘ │ HTTP ┌──────────────────▼──────────────────────────┐ │ Spring Boot 后端 (模块化单体) │ │ Auth │ User │ Course │ Question │ Practice │ │ Exam │ ExamGenerator │ Analytics │ └──────────────────┬──────────────────────────┘ │ ┌──────────────────▼──────────────────────────┐ │ MongoDB (主库) │ Redis (缓存/会话) │ └─────────────────────────────────────────────┘ ``` ## 技术栈 ### 后端 - Java 17 + Spring Boot 3.2 - Spring Security 6.x + JWT (jjwt 0.12) - Spring Data MongoDB 4.x - Redis (Lettuce) - Hutool 5.8 + MapStruct 1.5 - SpringDoc OpenAPI 2.x ### 前端 - Vue 3.4 + TypeScript 5.x - Vite 5.x - Pinia 2.x + Vue Router 4.x - Element Plus 2.x - Axios 1.x ## 项目结构 ``` learnmore/ ├── quiz-platform/ # 后端 (Maven 多模块) │ ├── quiz-common/ # 公共模块 (响应体、异常、枚举) │ ├── quiz-auth/ # 认证授权 (JWT + Spring Security) │ ├── quiz-user/ # 用户管理 │ ├── quiz-course/ # 课程管理 │ ├── quiz-question/ # 题库管理 │ ├── quiz-practice/ # 刷题模块 │ ├── quiz-exam/ # 组卷与考试 │ ├── quiz-analytics/ # 成绩分析 │ └── quiz-app/ # 启动聚合模块 │ └── quiz-frontend/ # 前端 (Vue3 + Vite) └── src/ ├── api/ # API 请求封装 ├── layouts/ # 布局组件 (学生/管理员) ├── router/ # 路由 + 权限守卫 ├── stores/ # Pinia 状态管理 ├── utils/ # Axios 封装 + 工具 └── views/ # 页面 (auth/student/admin) ``` ## 环境要求 - JDK 17+ - Maven 3.8+ - Node.js 18+ - MongoDB 7.0+ - Redis 7.x ## 快速启动 ### 1. 启动基础设施 确保 MongoDB 和 Redis 已运行: ```bash # 默认端口 # MongoDB: localhost:27017 # Redis: localhost:6379 ``` ### 2. 启动后端 ```bash cd quiz-platform # 编译 mvn clean install # 运行 mvn spring-boot:run -pl quiz-app ``` 后端默认运行在 `http://localhost:8080`。 ### 3. 启动前端 ```bash cd quiz-frontend # 安装依赖 npm install # 开发模式 npm run dev ``` 前端默认运行在 `http://localhost:5173`,已配置代理转发 `/api` 到后端。 ## API 接口 ### 认证接口 (公开) | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/auth/login` | 用户登录 | | POST | `/api/auth/register` | 学生注册 | | POST | `/api/auth/refresh` | 刷新 Token | ### 刷题接口 (STUDENT) | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/practice/next` | 获取下一题 (顺序模式) | | GET | `/api/practice/random` | 获取随机题 | | POST | `/api/practice/submit` | 提交答案 | | GET | `/api/practice/progress` | 获取刷题进度 | | GET | `/api/practice/wrong-book` | 获取错题本 | ### 题库接口 (ADMIN) | 方法 | 路径 | 说明 | |------|------|------| | GET/POST | `/api/questions` | 查询/创建题目 | | PUT/DELETE | `/api/questions/{id}` | 更新/删除题目 | | POST | `/api/questions/import` | 批量导入 | ### 组卷接口 (ADMIN) | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/exams/generate` | 智能组卷 | | POST | `/api/exams` | 手动创建试卷 | | PUT | `/api/exams/{id}/publish` | 发布试卷 | 完整 API 文档启动后访问:`http://localhost:8080/swagger-ui.html` ## 权限设计 系统采用 RBAC 模型,包含两个角色: | 功能 | 管理员 (ADMIN) | 学生 (STUDENT) | |------|:-:|:-:| | 题库/课程/用户管理 | ✅ | ❌ | | 智能组卷 | ✅ | ❌ | | 成绩分析报表 | ✅ | ❌ | | 刷题 (顺序/随机) | ❌ | ✅ | | 错题本 | ❌ | ✅ | | 参加考试 | ❌ | ✅ | | 个人信息修改 | ✅ | ✅ | ## 开发计划 | Sprint | 周次 | 内容 | 状态 | |--------|------|------|------| | Sprint 1 | 第 1-2 周 | 项目骨架 + JWT 认证 | ✅ 已完成 | | Sprint 2 | 第 3 周 | 题库管理 (CRUD + 导入) | 待开发 | | Sprint 3 | 第 4 周 | 刷题核心 (顺序/随机/错题本) | 待开发 | | Sprint 4 | 第 5 周 | 智能组卷 (贪心算法) | 待开发 | | Sprint 5 | 第 6 周 | 在线考试 | 待开发 | | Sprint 6 | 第 7 周 | 自动阅卷 + 成绩分析 | 待开发 | | Sprint 7-8 | 第 8 周 | 优化 + Docker 部署 | 待开发 | ## 配置说明 后端配置文件 `quiz-app/src/main/resources/application.yml`: ```yaml spring: data: mongodb: uri: mongodb://localhost:27017/quiz_db data.redis: host: localhost port: 6379 jwt: secret: access-token-expiration: 7200000 # 2 小时 refresh-token-expiration: 604800000 # 7 天 ``` 前端环境变量 `quiz-frontend/.env.development`: ``` VITE_API_BASE_URL=http://localhost:8080 ```