Skip to content

Iisazen/Zeam

Repository files navigation

AI 智能出题系统 (AI Quiz Master)

一个"带文档进,带题目出"的 SaaS 工具,用户上传 PDF/Word 文档,系统利用大模型自动提取知识点并生成结构化试题。

⚠️ 开发项目: 本项目为开发中的演示项目,包含示例配置和默认凭据。部署到生产环境前,请务必修改所有默认密码和密钥。

🔒 安全提示

重要: 本项目包含开发环境的默认配置,部署前必须修改:

  1. 默认管理员账号 (admin/admin123) - 仅用于开发测试
  2. 数据库凭据 (postgres/postgres) - 请使用强密码
  3. JWT 密钥 - 请使用随机生成的强密钥
  4. 服务间认证密钥 - 请使用随机生成的强密钥
  5. 加密密钥 - 请使用 32+ 字符的随机密钥

生产环境部署清单

  • 修改所有默认密码
  • 使用强随机密钥替换示例密钥
  • 配置适当的 CORS 策略
  • 启用 HTTPS
  • 配置防火墙规则
  • 定期更新依赖包

🎯 项目简介

AI 智能出题系统是一个基于大语言模型的智能试题生成平台,支持:

  • 出题者:上传文档 → AI 解析 → 生成题目 → 发布试卷
  • 答题者:分享链接 → 在线答题 → 查看成绩 → 错题解析
  • BYOK 模式:用户自带 API Key,费用由自己的账号承担

📋 功能清单

出题者功能

功能 状态 说明
文档上传 支持 PDF/Word/TXT,最大 10MB
智能解析 自动提取内容为 Markdown
内容预览 编辑清洗后的内容
AI 生成 调用 DeepSeek/OpenAI 生成题目
题目查看 查看所有题目+答案+解析
试卷发布 生成分享链接供考生答题
用户注册 邮箱/用户名注册
API Key 配置 配置自己的 DeepSeek/OpenAI Key

答题者功能

功能 状态 说明
匿名访问 通过分享链接无需登录
在线答题 一道题一道题答题
答题导航 答题卡、跳转
倒计时 考试倒计时、时间警告
成绩展示 圆形进度、正确率
答案解析 提交后查看错题解析

🏗️ 技术架构

┌─────────────────────────────────────────────────────────────────┐
│                        前端层 (Vue 3)                           │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐          │
│  │ Home     │ │ Upload   │ │ Preview  │ │ Generate │          │
│  │ Tasks    │ │ Settings │ │ Login    │ │ Register │          │
│  └──────────┘ └──────────┘ └──────────┘ └──────────┘          │
│                         TakeExam (匿名)                        │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                   业务后端 (Spring Boot 3 + Java 17)            │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐              │
│  │ Auth        │ │ Task        │ │ Exam        │              │
│  │ Controller  │ │ Controller  │ │ Controller  │              │
│  └─────────────┘ └─────────────┘ └─────────────┘              │
│  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐              │
│  │ User        │ │ Exam        │ │ Python AI   │              │
│  │ Service     │ │ Publish     │ │ Service     │              │
│  └─────────────┘ └─────────────┘ └─────────────┘              │
└─────────────────────────────────────────────────────────────────┘
                              │
            ┌─────────────────┼─────────────────┐
            ▼                 ▼                 ▼
┌───────────────────┐ ┌──────────────┐ ┌───────────────────┐
│   PostgreSQL 15+  │ │ Python AI    │ │   DeepSeek/OpenAI │
│   - 用户配置       │ │ Service      │ │   API 外部服务    │
│   - 任务记录       │ │ - 文档解析   │ │                   │
│   - 题目存储       │ │ - LLM 调用   │ │                   │
│   - 试卷数据       │ │ - Prompt     │ │                   │
└───────────────────┘ └──────────────┘ └───────────────────┘

📁 项目结构

ai_exam_system/
├── backend/
│   ├── java-service/          # Spring Boot 业务后端 (端口: 8080)
│   │   ├── src/main/java/com/aiexam/
│   │   │   ├── controller/     # REST 控制器
│   │   │   ├── service/        # 业务逻辑层
│   │   │   ├── repository/     # 数据访问层
│   │   │   ├── entity/         # JPA 实体
│   │   │   ├── dto/            # 请求/响应对象
│   │   │   └── util/           # 工具类
│   │   └── src/main/resources/
│   │       ├── application.yml # 配置文件
│   │       └── static/         # 静态资源
│   └── python-service/         # FastAPI AI 服务 (端口: 8000)
│       ├── app/
│       │   ├── main.py         # FastAPI 应用入口
│       │   ├── api/            # API 路由
│       │   ├── services/       # 业务逻辑
│       │   └── models/         # 数据模型
│       └── .env                # 环境变量
├── frontend/                   # Vue 3 前端 (端口: 5175)
│   ├── src/
│   │   ├── views/              # 页面组件
│   │   ├── components/         # 公共组件
│   │   ├── stores/             # Pinia 状态管理
│   │   ├── api/                # API 请求模块
│   │   └── router/             # 路由配置
│   └── package.json
├── database/                   # 数据库脚本
│   └── init.sql                # 初始化 SQL
├── docs/                       # 项目文档
│   ├── architecture.md         # 架构设计
│   ├── api.md                  # API 文档
│   └── development.md          # 开发指南
└── docker-compose.yml          # Docker 编排

🚀 快速开始

环境要求

组件 版本要求
Java 17+
Python 3.10+
Node.js 18+
PostgreSQL 15+

1. 启动数据库

# 安装 PostgreSQL
sudo apt-get install postgresql postgresql-contrib

# 启动服务
sudo service postgresql start

# 创建数据库
sudo -u postgres psql -c "CREATE DATABASE ai_exam;"

# 初始化数据库(创建表结构)
sudo -u postgres psql -d ai_exam -f database/init.sql

2. 配置环境变量(重要!)

项目使用环境变量存储敏感配置,必须先配置才能启动

Java 后端配置

cd backend/java-service

# 复制配置模板
cp .env.development.template .env

# 生成随机密钥(Linux/Mac)
JWT_SECRET=$(openssl rand -base64 64)
PYTHON_SERVICE_API_KEY=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 32)

# 编辑 .env 文件,填入上述生成的值和你的 DeepSeek API Key
# DEEPSEEK_API_KEY 获取地址:https://platform.deepseek.com/api_keys

Python AI 服务配置

cd backend/python-service

# 复制配置模板
cp .env.development.template .env

# 编辑 .env 文件,填入你的 API Key
# DEEPSEEK_API_KEY 获取地址:https://platform.deepseek.com/api_keys

3. 启动 Python AI 服务

cd backend/python-service

# 安装依赖
pip3 install -r requirements.txt

# 启动服务
PYTHONPATH=$(pwd) python3 -m uvicorn app.main:app --host 0.0.0.0 --port 8000

4. 启动 Java 后端

cd backend/java-service

# 确保已配置 .env 文件(见步骤 2)

# 启动服务
mvn spring-boot:run

# 访问 API 文档: http://localhost:8080/api/swagger-ui.html

4. 启动前端

cd frontend

# 安装依赖
npm install

# 启动开发服务器
npm run dev

# 访问: http://localhost:5173

📊 开发进度

✅ v0.3.0 - 账户与权限 (已完成)

  • 用户注册登录 (JWT 认证)
  • 试卷发布与分享
  • API Key 配置管理 (BYOK - 用户自带 API Key)
  • API Key AES-256-GCM 加密存储
  • 角色权限系统 (admin/teacher/user)
  • 服务间认证 (Python AI 服务)

✅ v0.2.0 - 答题界面 (已完成)

  • 在线答题界面 (TakeExam.vue)
  • 单题显示 + 导航
  • 倒计时功能
  • 成绩展示与解析

✅ v0.1.0 - MVP (已完成)

  • 数据库设计与初始化
  • Python AI 服务(文档解析 + AI 生成)
  • Java 业务后端
  • Vue 前端基础界面

📅 计划中

  • v0.4.0 - 组织与团队功能
    • 组织管理 (创建/编辑/删除)
    • 成员管理 (邀请/移除/角色)
    • 数据隔离 (按组织隔离试卷和任务)
    • 组织级权限控制
  • v0.5.0 - 高级功能
    • 题目编辑/删除
    • 题目标签系统
    • 错题本
    • 批量操作
  • v0.6.0 - 数据统计分析
    • 成绩分析图表
    • 知识点统计
    • 数据导出

📖 文档

文档 说明
架构设计 系统架构详解
API 文档 接口文档
开发指南 本地开发指南
Java 后端 后端服务说明
Python AI 服务 AI 服务说明
前端应用 前端应用说明

🧪 测试账号

用户名 密码 说明
admin admin123 默认管理员

🔗 访问地址

服务 地址 说明
前端 http://localhost:5173 Vue 前端应用
Java API http://localhost:8080/api Spring Boot API
Swagger UI http://localhost:8080/api/swagger-ui.html API 文档
Python API http://localhost:8000/docs FastAPI 文档

📄 许可证

MIT License

📝 更新日志

版本 日期 说明
v0.3.0 2026-01-30 用户认证、试卷发布、API Key 配置
v0.2.0 2026-01-30 答题界面完成
v0.1.0 2026-01-29 MVP 版本完成

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors