# answer-question **Repository Path**: chenlanqing/answer-question ## Basic Information - **Project Name**: answer-question - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-06 - **Last Updated**: 2026-02-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 在线答题系统 基于 FastAPI + React + MySQL 的在线答题系统,支持多种题型和自动评分。 ## 功能特性 - **用户系统**:注册、登录、JWT 认证 - **管理后台**:用户管理、题目管理、试卷管理、答题记录查看与编程题批改 - **题目管理**:支持选择题、判断题、填空题、编程题四种类型 - **试卷管理**:从题库选题组卷,自动计算总分 - **在线答题**:逐题作答,即时反馈正确答案与解析 - **自动评分**:选择题、判断题、填空题自动评分;编程题支持管理员人工批改 - **答题记录**:查看历史答题记录与详情 ## 技术栈 | 层级 | 技术 | |------|------| | 后端 | Python 3.11+ / FastAPI / SQLAlchemy 2.0 | | 数据库 | MySQL 8.0 | | 认证 | JWT (python-jose + passlib) | | 前端 | React 18 + TypeScript + Vite | | UI 组件 | Ant Design 5 | | 状态管理 | Zustand | ## 快速开始 ### 1. 环境准备 - Python 3.11+ - Node.js 18+ - MySQL 8.0 ### 2. 创建数据库 ```sql CREATE DATABASE IF NOT EXISTS answer_question DEFAULT CHARACTER SET utf8mb4; ``` ### 3. 启动后端 ```bash cd backend # 创建虚拟环境 python -m venv venv source venv/bin/activate # macOS/Linux # venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt # 启动服务 (默认端口 8000) uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` 启动后自动创建数据库表和默认管理员账号: - 用户名:`admin` - 密码:`admin123` ### 4. 启动前端 ```bash cd frontend # 安装依赖 npm install # 启动开发服务器 (默认端口 5173) npm run dev ``` 访问 http://localhost:5173 即可使用。 ### 5. API 文档 后端启动后访问 http://localhost:8000/docs 查看 Swagger API 文档。 ## 项目结构 ``` answer-question/ ├── backend/ │ ├── app/ │ │ ├── main.py # FastAPI 入口 │ │ ├── config.py # 配置 │ │ ├── database.py # 数据库连接 │ │ ├── deps.py # 依赖注入 │ │ ├── models/ # ORM 模型 │ │ ├── schemas/ # Pydantic 模型 │ │ ├── routers/ # API 路由 │ │ └── services/ # 业务逻辑 │ └── requirements.txt ├── frontend/ │ ├── src/ │ │ ├── api/ # API 调用 │ │ ├── stores/ # 状态管理 │ │ ├── pages/ # 页面组件 │ │ ├── components/ # 通用组件 │ │ └── App.tsx # 路由配置 │ └── package.json └── README.md ``` ## Docker 一键部署 适用于云服务器上的生产环境部署,仅需安装 Docker 和 Docker Compose。 ### 1. 修改配置 复制环境变量文件并修改密码和密钥: ```bash cp .env.production .env ``` 编辑 `.env`,**务必修改以下配置**: ``` MYSQL_ROOT_PASSWORD=your_strong_password DB_PASSWORD=your_strong_password # 与上面保持一致 JWT_SECRET_KEY=your_random_secret_string # 至少32位随机字符串 ``` ### 2. 构建并启动 ```bash docker compose up -d --build ``` 启动后访问 `http://服务器IP` 即可使用(前端监听 80 端口)。 ### 3. 常用命令 ```bash # 查看日志 docker compose logs -f # 仅查看后端日志 docker compose logs -f backend # 停止所有服务 docker compose down # 停止并删除数据卷(会清空数据库!) docker compose down -v # 重新构建并启动 docker compose up -d --build ``` ### 架构说明 ``` 浏览器 --> Nginx (前端:80) --> /api/* --> Backend (FastAPI:8000) --> MySQL:3306 --> /* --> React SPA (静态文件) ``` - **frontend** 容器:Nginx 托管 React 构建产物,同时反向代理 `/api/*` 到后端 - **backend** 容器:FastAPI 应用,仅在 Docker 内部网络暴露 8000 端口 - **mysql** 容器:MySQL 8.0,数据持久化到 Docker Volume ## 数据库配置 默认连接配置(可通过环境变量覆盖): | 配置项 | 默认值 | |--------|--------| | DB_HOST | localhost | | DB_PORT | 3306 | | DB_USER | root | | DB_PASSWORD | root | | DB_NAME | answer_question | ## 默认账号 | 角色 | 用户名 | 密码 | |------|--------|------| | 管理员 | admin | admin123 |