mirror of
https://github.com/handsomezhuzhu/QQuiz.git
synced 2026-02-20 12:00:14 +00:00
## 新增功能 ### 📝 Windows 部署文档 - WINDOWS_DEPLOYMENT.md: 完整的 Windows 部署指南 - Docker Desktop 部署方式 - 本地源码部署方式 - 详细的问题排查指南 - QUICK_START.md: 5 分钟快速上手指南 - 简化的部署步骤 - 测试功能清单 - 常见问题解答 ### 🚀 Windows 启动脚本 - start_windows.bat: 一键启动服务 - stop_windows.bat: 停止服务 - logs_windows.bat: 查看日志 ### 📚 测试数据 - test_data/sample_questions.txt: 10 道基础题目 - 单选题、多选题、判断题 - 适合快速功能测试 - test_data/sample_questions_advanced.txt: 8 道简答题 - 测试 AI 评分功能 - 高级概念题目 ## 改进 - 优化 Windows 用户体验 - 提供一键启动方案 - 包含完整测试数据 🚀 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
10 KiB
10 KiB
QQuiz Windows 部署指南
🚀 方式一:Docker Desktop(推荐)
这是 Windows 上最简单的部署方式。
前置要求
-
安装 Docker Desktop
- 下载地址:https://www.docker.com/products/docker-desktop/
- 系统要求:Windows 10/11 64-bit (Pro/Enterprise/Education)
- 需要启用 WSL 2
-
启用 WSL 2(如果未启用)
# 以管理员身份运行 PowerShell wsl --install # 重启计算机
部署步骤
1. 配置环境变量
# 在项目根目录(E:\QQuiz)打开 PowerShell
cd E:\QQuiz
# 复制环境变量模板
copy .env.example .env
# 使用记事本编辑 .env
notepad .env
必须修改的配置:
# JWT 密钥(必须修改!至少 32 字符)
SECRET_KEY=your-very-long-secret-key-change-this-to-something-secure
# 选择一个 AI 提供商并配置 API Key
# 方案 1: 使用 OpenAI
AI_PROVIDER=openai
OPENAI_API_KEY=sk-your-openai-api-key
OPENAI_MODEL=gpt-4o-mini
# 方案 2: 使用通义千问(国内推荐)
# AI_PROVIDER=qwen
# QWEN_API_KEY=sk-your-qwen-api-key
# QWEN_MODEL=qwen-plus
# 方案 3: 使用 Claude
# AI_PROVIDER=anthropic
# ANTHROPIC_API_KEY=sk-ant-your-key
# ANTHROPIC_MODEL=claude-3-haiku-20240307
2. 启动 Docker Desktop
- 打开 Docker Desktop 应用
- 等待 Docker Engine 启动(底部状态显示 "Running")
3. 启动服务
# 在项目根目录
cd E:\QQuiz
# 启动所有服务(第一次会比较慢,需要下载镜像)
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
4. 访问应用
- 前端: http://localhost:3000
- 后端 API: http://localhost:8000
- API 文档: http://localhost:8000/docs
5. 默认账户登录
- 用户名:
admin - 密码:
admin123
⚠️ 首次登录后请立即修改密码!
常用 Docker 命令
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs -f backend
docker-compose logs -f frontend
# 停止服务
docker-compose stop
# 重启服务
docker-compose restart
# 停止并删除容器
docker-compose down
# 重新构建并启动
docker-compose up -d --build
# 进入容器内部
docker-compose exec backend bash
docker-compose exec postgres psql -U qquiz qquiz_db
问题排查
问题 1: Docker Desktop 无法启动
解决方案:
# 确保 WSL 2 已安装
wsl --list --verbose
# 如果版本是 1,升级到 2
wsl --set-version Ubuntu 2
# 设置默认版本为 2
wsl --set-default-version 2
问题 2: 端口被占用
# 查看端口占用
netstat -ano | findstr :3000
netstat -ano | findstr :8000
netstat -ano | findstr :5432
# 结束占用进程(替换 PID)
taskkill /F /PID <进程ID>
问题 3: 容器启动失败
# 查看详细错误日志
docker-compose logs backend
# 重新构建
docker-compose down
docker-compose build --no-cache
docker-compose up -d
🛠️ 方式二:本地源码部署
适合开发调试,需要手动安装各种依赖。
前置要求
-
Python 3.11+
- 下载:https://www.python.org/downloads/
- 安装时勾选 "Add Python to PATH"
-
Node.js 18+
- 下载:https://nodejs.org/
- 推荐安装 LTS 版本
-
PostgreSQL 15+
部署步骤
1. 安装 PostgreSQL
-
下载并安装 PostgreSQL 15
-
安装完成后,打开 pgAdmin 4 或 SQL Shell (psql)
-
创建数据库:
-- 使用 psql 或 pgAdmin 执行
CREATE DATABASE qquiz_db;
CREATE USER qquiz WITH PASSWORD 'qquiz_password';
GRANT ALL PRIVILEGES ON DATABASE qquiz_db TO qquiz;
2. 配置环境变量
cd E:\QQuiz
copy .env.example .env
notepad .env
修改数据库连接为本地:
# 数据库(本地部署)
DATABASE_URL=postgresql+asyncpg://qquiz:qquiz_password@localhost:5432/qquiz_db
# JWT 密钥
SECRET_KEY=your-super-secret-key-at-least-32-characters-long
# AI 配置(选择一个)
AI_PROVIDER=openai
OPENAI_API_KEY=sk-your-openai-api-key
OPENAI_MODEL=gpt-4o-mini
3. 启动后端
打开第一个 PowerShell 窗口:
cd E:\QQuiz\backend
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
.\venv\Scripts\Activate.ps1
# 如果遇到执行策略错误,运行:
# Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 安装依赖
pip install -r requirements.txt
# 运行数据库迁移
alembic upgrade head
# 启动后端服务
uvicorn main:app --reload
成功后会看到:
INFO: Uvicorn running on http://127.0.0.1:8000
INFO: Application startup complete.
4. 启动前端
打开第二个 PowerShell 窗口:
cd E:\QQuiz\frontend
# 安装依赖(第一次需要)
npm install
# 启动开发服务器
npm start
成功后会自动打开浏览器:
VITE v5.0.11 ready in 1234 ms
➜ Local: http://localhost:3000/
➜ Network: use --host to expose
5. 访问应用
- 前端: http://localhost:3000
- 后端: http://localhost:8000
- API 文档: http://localhost:8000/docs
问题排查
问题 1: PowerShell 执行策略错误
# 错误信息:无法加载文件 xxx.ps1,因为在此系统上禁止运行脚本
# 解决方案:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 然后重新激活虚拟环境
.\venv\Scripts\Activate.ps1
问题 2: pip 安装依赖失败
# 使用国内镜像加速
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
问题 3: PostgreSQL 连接失败
# 确认 PostgreSQL 服务正在运行
# 打开 "服务" (services.msc)
# 找到 "postgresql-x64-15",确保状态为 "正在运行"
# 或使用命令行
sc query postgresql-x64-15
问题 4: npm 安装慢
# 使用淘宝镜像
npm config set registry https://registry.npmmirror.com
# 然后重新安装
npm install
🧪 测试部署是否成功
1. 检查后端健康状态
浏览器访问:http://localhost:8000/health
预期返回:
{"status": "healthy"}
2. 查看 API 文档
应该能看到 Swagger UI 界面,显示所有 API 接口。
3. 测试登录
- 访问 http://localhost:3000
- 使用默认账户登录:
- 用户名:
admin - 密码:
admin123
- 用户名:
- 成功后应该进入 Dashboard
4. 测试创建题库
- 点击「题库管理」
- 点击「创建题库」
- 输入题库名称
- 上传测试文档(可以创建一个简单的 TXT 文件)
测试文档示例 (test_questions.txt):
1. Python 是一种什么类型的语言?
A. 编译型语言
B. 解释型语言
C. 汇编语言
D. 机器语言
答案:B
解析:Python 是一种解释型、面向对象的高级编程语言。
2. 以下哪个不是 Python 的数据类型?
A. list
B. tuple
C. array
D. dict
答案:C
解析:Python 内置的数据类型包括 list、tuple、dict 等,array 需要导入 array 模块。
- 上传后等待解析完成(状态会从「处理中」变为「就绪」)
- 点击「开始刷题」测试刷题功能
📝 Windows 特定配置
1. 设置环境变量(可选)
通过 GUI 设置:
- 右键「此电脑」→「属性」
- 「高级系统设置」→「环境变量」
- 在「用户变量」中添加:
OPENAI_API_KEY: 你的 API KeySECRET_KEY: 你的密钥
2. 配置防火墙(如果需要局域网访问)
# 允许端口访问(以管理员身份运行)
netsh advfirewall firewall add rule name="QQuiz Frontend" dir=in action=allow protocol=TCP localport=3000
netsh advfirewall firewall add rule name="QQuiz Backend" dir=in action=allow protocol=TCP localport=8000
3. 创建启动脚本
创建 start.bat 文件:
@echo off
echo Starting QQuiz...
REM 检查 Docker Desktop 是否运行
docker info >nul 2>&1
if %errorlevel% neq 0 (
echo Starting Docker Desktop...
start "" "C:\Program Files\Docker\Docker\Docker Desktop.exe"
timeout /t 10
)
REM 启动服务
cd /d "%~dp0"
docker-compose up -d
echo.
echo QQuiz is starting...
echo Frontend: http://localhost:3000
echo Backend: http://localhost:8000
echo.
pause
使用方法:
- 双击
start.bat即可启动服务
🎯 性能优化建议
1. Docker Desktop 配置
- 打开 Docker Desktop
- 设置 → Resources
- 调整资源分配:
- CPUs: 4 核(推荐)
- Memory: 4 GB(推荐)
- Swap: 1 GB
- Disk image size: 60 GB
2. WSL 2 优化
限制 WSL 2 内存占用(可选):
创建 %USERPROFILE%\.wslconfig 文件:
[wsl2]
memory=4GB
processors=4
swap=1GB
重启 WSL:
wsl --shutdown
3. 开发工具推荐
- 代码编辑器: VS Code(安装 Python、ESLint、Prettier 插件)
- API 测试: Postman 或 Insomnia
- 数据库管理: pgAdmin 4 或 DBeaver
- 终端: Windows Terminal(更好的 PowerShell 体验)
🔧 常见问题汇总
Q: 如何完全重置项目?
# Docker 方式
docker-compose down -v # 删除容器和数据卷
docker-compose up -d # 重新启动
# 本地方式
# 1. 删除数据库
DROP DATABASE qquiz_db;
CREATE DATABASE qquiz_db;
# 2. 重新运行迁移
cd E:\QQuiz\backend
alembic upgrade head
Q: 如何查看日志?
# Docker 方式
docker-compose logs -f backend
docker-compose logs -f frontend
# 本地方式
# 直接在运行的 PowerShell 窗口中查看
Q: 如何停止服务?
# Docker 方式
docker-compose stop
# 本地方式
# 在运行的 PowerShell 窗口中按 Ctrl+C
Q: 如何更新代码后重启?
# Docker 方式
docker-compose restart
# 本地方式(uvicorn 和 vite 会自动重载)
# 无需操作,保存文件后自动刷新
📞 获取帮助
如果遇到问题:
- 查看日志:
docker-compose logs -f - 检查文档: 阅读
DEPLOYMENT.md - 查看 API 文档: http://localhost:8000/docs
- GitHub Issues: 提交问题报告
祝你部署顺利!🎉