# ExamForge **Repository Path**: chazzorg/ExamForge ## Basic Information - **Project Name**: ExamForge - **Description**: 智能考试系统 - 题库管理、自动组卷、在线答题、智能评分一体化平台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-03-10 - **Last Updated**: 2026-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ExamForge - 智能试卷生成与阅卷系统 ## 项目介绍 ExamForge 是一款轻量级智能考试系统,专为教育机构和企业培训场景设计。系统支持 Markdown 格式试卷导入、在线答题、AI 智能阅卷等核心功能,提供完整的考试全流程管理。 ### 核心特性 - **试卷智能导入**:支持 Markdown 格式一键导入,自动识别题型结构 - **AI 辅助解析**:智能生成答案解析与得分点,提升试题质量 - **在线考试管理**:断点续答、自动保存、倒计时、标记复查 - **智能阅卷引擎**:客观题秒级评分,主观题智能评判 - **知识点学习**:AI 生成知识点学习内容,包含概念、要点、代码示例和学习建议 - **学习数据追踪**:错题管理、知识图谱、学习历史分析 - **双端适配**:Web 端管理 + 移动端答题,灵活部署 --- ## 系统设计 ### 架构概览 ``` ┌─────────────────────────────────────────────────────────┐ │ 前端层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Web 端 │ │ 移动端 │ │ API 接口 │ │ │ │ (Vue3) │ │ (Vue3) │ │ (RESTful) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 服务层 │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 试卷解析 │ │ 智能阅卷 │ │ AI 服务 │ │ │ │ Parser │ │ Review │ │ Provider │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 知识图谱 │ │ 错题管理 │ │ 任务调度 │ │ │ │ Knowledge │ │ WrongQ │ │ Task │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 存储层 │ │ ┌─────────────────────────────────────────────────┐ │ │ │ SQLite 数据库 │ │ │ │ papers | questions | sessions | reviews | ... │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ ``` ### 模块说明 | 模块 | 功能 | 说明 | |------|------|------| | `parser` | 试卷解析 | Markdown 结构识别与题目提取 | | `service/ai` | AI 服务 | 多模型适配,智能解析与阅卷 | | `service/review` | 阅卷引擎 | 答案比对、得分计算、AI 评分 | | `store` | 数据存储 | SQLite ORM,CRUD 操作封装 | | `api` | RESTful API | HTTP 接口,前后端通信桥梁 | ### 数据流程 ``` 试卷导入 → 结构解析 → AI 增强 → 存储入库 ↓ 创建考试 → 在线答题 → 实时保存 → 答卷提交 ↓ 阅卷引擎 → 客观评分 → AI 主观评分 → 成绩生成 ↓ 错题归档 → 知识图谱 → 学习建议 → 数据分析 ``` --- ## 快速开始 ### 环境要求 - Go 1.21+ - Node.js 18+ (前端开发时需要) - SQLite3 ### 安装步骤 **1. 克隆项目** ```bash git clone https://gitee.com/chazzorg/ExamForge.git cd ExamForge ``` **2. 安装依赖** ```bash # 安装所有依赖(Go + 前端) make deps # 或单独安装 go mod tidy && go mod download # Go 依赖 cd web && npm install # Web 前端 cd mobile && npm install # 移动端前端 ``` **3. 配置环境** ```bash cp .env.example .env # 编辑 .env 配置 AI 服务参数 ``` **4. 启动服务** ```bash make dev ``` 访问 http://localhost:5173 开始使用。 ### 目录结构 ``` ExamForge/ ├── api/ # HTTP 接口层 ├── config/ # 配置管理 ├── domain/ # 业务实体定义 ├── parser/ # 试卷解析引擎 ├── service/ # 业务逻辑层 │ └── ai/ # AI 服务适配 ├── store/ # 数据存储层 ├── web/ # Web 前端 ├── mobile/ # 移动端前端 ├── data/ # 数据目录 │ └── papers/ # 试卷存放 ├── docs/ # 文档 ├── Makefile # 构建脚本 └── main.go # 入口文件 ``` --- ## 使用说明 ### 试卷导入 将 Markdown 格式试卷放入 `data/papers/` 目录: ```markdown # Go 语言基础考试 ## 单项选择题 每题 2 分,共 10 分。 ### 1. Go语言中,以下哪个关键字用于定义常量? A. var B. const C. let D. define 答案:B ### 2. Go语言的并发单元称为? A. thread B. process C. goroutine D. coroutine 答案:C ## 多项选择题 每题 4 分,共 8 分。 ### 3. 以下哪些是Go语言的基本数据类型? A. int B. string C. bool D. slice 答案:ABC ## 判断题 每题 1 分,共 2 分。 ### 4. Go语言支持泛型。(正确选A,错误选B) A. 正确 B. 错误 答案:A ### 5. Go语言的map是线程安全的。(正确选A,错误选B) A. 正确 B. 错误 答案:B ## 简答题 每题 10 分,共 10 分。 ### 6. 请简述defer语句的执行特性。 答案:defer按后进先出(LIFO)顺序执行,在函数返回前执行。常用于资源清理、解锁等操作。 ``` **格式要点:** | 元素 | 格式要求 | |------|----------| | 试卷名称 | `# 标题`(一级标题) | | 题型分类 | `## 题型名称`(二级标题) | | 题目编号 | `### N. 题目内容`(三级标题,带序号) | | 分值说明 | 二级标题后单独一行:`每题 X 分` | | 选项 | `A. 选项内容`(字母加点) | | 答案 | `答案:X` 或 `正确答案:X`(行首无星号) | | 判断题 | 使用 A/B 选项表示正确/错误 | | 多选题答案 | 连写字母:`答案:ABC` | ### AI 配置 系统支持多种 AI 模型接入: **DeepSeek 配置** ```bash AI_PROVIDER=openai OPENAI_BASE_URL=https://api.deepseek.com/v1 OPENAI_API_KEY=your-api-key OPENAI_MODEL=deepseek-chat ``` **本地模型配置** ```bash AI_PROVIDER=openai OPENAI_BASE_URL=http://localhost:11434/v1 OPENAI_API_KEY=ollama OPENAI_MODEL=qwen2.5:7b ``` ### 阅卷机制 **客观题评分** - 单选题:精确匹配答案 - 多选题:完全匹配或部分得分 - 判断题:正确/错误比对 **主观题评分** 1. 关键词匹配优先(基于得分点) 2. 匹配率低于30%时启用AI评分 3. 取最优结果避免误判 **得分点格式示例** ``` [1.5分] 概念准确: 正确描述defer的LIFO特性 [1.5分] 时机正确: 说明在函数返回前执行 [1分] 举例说明: 提供代码示例佐证 ``` ### 知识点学习 系统支持为每个知识点生成 AI 学习内容,帮助考生深入理解知识点。 **功能入口** - 知识点管理页面 → 点击知识点的「学习」按钮 **学习内容包含** - 概念定义:简洁明了地定义知识点 - 核心要点:列出 3-5 个关键要点 - 代码示例:提供实用的代码示例(如适用) - 常见误区:列出学生容易犯的错误 - 学习建议:给出针对性的学习建议 **工作流程** 1. 首次点击学习按钮,AI 自动生成学习内容 2. 生成后内容会被缓存,下次直接展示 3. 支持重新生成,更新学习内容 ### API 接口 主要接口一览: | 接口 | 方法 | 说明 | |------|------|------| | `/api/papers` | GET | 试卷列表 | | `/api/papers/{id}` | GET | 试卷详情 | | `/api/papers/import` | POST | 导入试卷 | | `/api/exams/start` | POST | 开始考试 | | `/api/exams/{id}/answer` | PUT | 提交答案 | | `/api/exams/{id}/submit` | POST | 完成考试 | | `/api/reviews/{id}` | GET | 阅卷结果 | | `/api/knowledge` | GET | 知识图谱 | | `/api/knowledge/{id}/learning` | GET | 获取知识点学习内容 | | `/api/knowledge/learning/{taskId}` | GET | 查询学习内容生成状态 | | `/api/wrong-questions` | GET | 错题列表 | 详细接口文档见 `docs/FEATURES.md`。 --- ## 技术栈 **后端** - Go 1.21 - 核心运行时 - Chi - HTTP 路由框架 - SQLite - 数据存储 - AI SDK - 智能服务集成 **前端** - Vue 3 - UI 框架 - TypeScript - 类型安全 - Vite - 构建工具 - Pinia - 状态管理 --- ## 许可证 MIT License --- ## 贡献指南 欢迎提交 Issue 和 Pull Request 参与项目改进。 1. Fork 本仓库 2. 创建功能分支 (`git checkout -b feature/xxx`) 3. 提交变更 (`git commit -m 'Add xxx feature'`) 4. 推送分支 (`git push origin feature/xxx`) 5. 创建 Pull Request