一个专为408计算机考研设计的真题与模拟题在线学习平台,支持知识点分类、Markdown文档渲染、随机出题练习等功能。
本项目是一个全栈Web应用,旨在帮助408计算机考研学子高效学习和复习。平台提供:
- 真题资源:收录历年考研真题,支持按年份、科目、章节分类浏览
- 模拟题练习:提供模拟题目练习,包含来源机构标注
- 知识点管理:支持树形章节结构,方便知识点梳理
- Markdown支持:题目和答案支持完整的Markdown渲染,包含LaTeX数学公式
- 用户系统:注册登录功能,记录学习进度
- Vue 3 - 渐进式JavaScript框架
- Vite 6 - 现代化构建工具
- Pinia - 状态管理
- Vue Router 4 - 路由管理
- Element Plus - Vue 3 UI组件库
- Axios - HTTP客户端
- @kangc/v-md-editor - Markdown编辑器
- KaTeX - 数学公式渲染
- Sass - CSS预处理器
- FastAPI - 现代化Python异步Web框架
- SQLModel - SQLAlchemy + Pydantic组合
- AioSQLite - 异步SQLite数据库
- JWT - JSON Web Token认证
- Python-Jose - JWT加密/解密
- Passlib - 密码加密
408web/
├── frontend/ # Vue 3前端项目
│ ├── src/
│ │ ├── api/ # API接口封装
│ │ ├── components/ # 组件
│ │ │ ├── basic/ # 基础组件
│ │ │ └── business/ # 业务组件
│ │ ├── views/ # 页面视图
│ │ │ ├── user/ # 用户相关页面
│ │ │ └── admin/ # 管理页面
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # Pinia状态管理
│ │ ├── composables/ # 组合式函数
│ │ └── styles/ # 样式文件
│ └── package.json
│
├── backend-fastapi/ # FastAPI后端项目
│ ├── app/
│ │ ├── config/ # 配置文件
│ │ ├── database/ # 数据库连接
│ │ ├── models/ # 数据模型
│ │ ├── schemas/ # Pydantic模式定义
│ │ ├── api/v1/ # API路由
│ │ ├── services/ # 业务逻辑层
│ │ ├── middleware/ # 中间件
│ │ └── utils/ # 工具函数
│ └── requirements.txt
│
├── backend/ # Spring Boot后端(备用)
├── data/ # 数据库文件目录
├── uploads/ # 上传文件目录
├── logs/ # 日志目录
└── 规范文档/ # 项目开发规范文档
- 用户注册与登录
- 个人中心
- 收藏管理
- 历年真题浏览(按年份)
- 按科目/章节筛选
- Markdown格式题目和答案展示
- 数学公式支持(LaTeX)
- 模拟题列表
- 按机构分类
- 出题练习
- 科目管理
- 章节管理
- 分类标签管理
- 题目管理(真题/模拟题)
- 图片资源管理
- 数据统计
- Node.js >= 16
- Python >= 3.8
- Git
git clone https://github.com/yourusername/408web.git
cd 408webcd backend-fastapi
# 创建虚拟环境(可选)
python -m venv venv
# Windows
.\venv\Scripts\activate
# Linux/Mac
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 启动服务
python -m uvicorn app.main:app --host 0.0.0.0 --port 8081 --reload后端服务将在 http://localhost:8081 启动
cd frontend
# 安装依赖
npm install
# 启动开发服务器
npm run dev前端服务将在 http://localhost:5173 启动
打开浏览器访问 http://localhost:5173
| 接口 | 方法 | 说明 |
|---|---|---|
/api/auth/register |
POST | 用户注册 |
/api/auth/login |
POST | 用户登录 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/subject |
GET | 获取所有科目 |
/api/subject/{id} |
GET | 获取单个科目 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/chapter |
GET | 获取章节树 |
/api/chapter |
POST | 创建章节 |
/api/chapter/{id} |
PUT | 更新章节 |
/api/chapter/{id} |
DELETE | 删除章节 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/exam |
GET | 获取真题列表 |
/api/exam |
POST | 创建真题 |
/api/exam/{id} |
GET | 获取真题详情 |
| 接口 | 方法 | 说明 |
|---|---|---|
/api/mock |
GET | 获取模拟题列表 |
/api/mock |
POST | 创建模拟题 |
/api/mock/{id} |
GET | 获取模拟题详情 |
详细API文档请参考 规范文档/API接口文档.md
在 backend-fastapi/app/config/settings.py 中配置:
# 数据库配置
DATABASE_URL = "sqlite+aiosqlite:///./data/web408.db"
# JWT配置
JWT_SECRET = "your-secret-key" # 建议使用环境变量
JWT_ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 60 * 24 # 24小时
# 服务器配置
HOST = "0.0.0.0"
PORT = 8081
# CORS配置
CORS_ORIGINS = [
"http://localhost:5173",
"http://localhost:5174"
]可在 .env 文件中配置:
JWT_SECRET=your-super-secret-key项目使用 SQLite 数据库,数据库文件位于 data/web408.db。
主要数据表:
user- 用户表subject- 科目表(数据结构、操作系统、计算机网络、计算机组成原理)chapter- 章节表exam_category- 分类标签表exam_question- 真题表mock_question- 模拟题表resource_file- 资源文件表
本项目遵循以下开发规范:
本项目仅供学习交流使用。
欢迎提交 Issue 和 Pull Request!