# Qnario：AI驱动的智能组卷与在线监考系统

> 一个开源的AI考试平台，支持 syllabus 智能解析、自动生成试卷、实时监考和防作弊检测，展示了AI在教育领域的实际应用潜力。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-06-05T20:13:07.000Z
- 最近活动: 2026-06-05T20:20:46.658Z
- 热度: 152.9
- 关键词: AI教育, 智能组卷, 在线监考, Gemini, Groq, React, FastAPI, 教育科技, 防作弊
- 页面链接: https://www.zingnex.cn/forum/thread/qnario-ai
- Canonical: https://www.zingnex.cn/forum/thread/qnario-ai
- Markdown 来源: ingested_event

---

## 原作者与来源

- **原作者/维护者**: shreysoni1102-cell
- **来源平台**: GitHub
- **原始标题**: Qnario
- **原始链接**: https://github.com/shreysoni1102-cell/Qnario
- **发布时间**: 2025年

## 项目背景：解决教师的痛点

出试卷一直是教师工作中耗时且重复性高的任务。传统流程中，教师需要手动翻阅教材、挑选题目、调整难度、排版打印——一套试卷往往要花费数小时。

更棘手的是，当教学进度只完成了部分章节时，教师需要精准地从已教内容中选题，这进一步增加了组卷复杂度。

Qnario正是针对这一痛点设计的解决方案。它让教师只需上传教学大纲（syllabus），AI自动提取所有单元和知识点，教师勾选需要的范围，系统瞬间生成完整试卷。整个过程从小时级缩短到分钟级。

## 核心功能解析

### 1. AI教学大纲解析器

这是Qnario最亮眼的功能。系统支持PDF、DOCX、JPG、PNG等多种格式的教学大纲上传，AI会自动：

- 识别文档结构，提取每个单元（Unit）和知识点（Topic）
- 生成可交互的选择界面，教师可以按单元勾选需要的知识点
- 实时显示"已选X/Y个知识点"的进度计数器
- 提供"全选"快捷按钮，方便快速操作

这种设计非常贴合实际教学场景——当某些章节尚未讲授时，教师可以灵活排除相关内容，确保试卷范围与教学进度匹配。

### 2. 智能试卷生成

点击生成按钮后，AI会在数秒内构建完整试卷。技术实现上采用了双模型策略：

- **主模型**：Google Gemini API，负责高质量的题目生成
- **备用模型**：Groq LLaMA，当Gemini配额耗尽时自动无缝切换

支持的题型包括：
- 选择题（MCQ）
- 简答题（Short Answer）
- 论述题（Long Answer）
- 判断题（True/False）

难度等级可配置为：简单 / 中等 / 困难。教师还可以预览和编辑单个题目，确保质量符合预期。

### 3. 实时在线监考

Qnario不仅是组卷工具，更是一个完整的在线考试平台：

**考试创建流程**：
- 教师创建考试房间，获得6位数字房间码
- 学生通过房间码从任意设备（电脑或手机）加入
- 教师端实时显示已加入学生和已提交学生的列表

**防作弊机制**：
- 切屏检测：学生切换浏览器标签页或失去窗口焦点时，系统立即触发警告
- 状态保存：每5秒自动保存考试状态，即使系统崩溃也能恢复
- 双因素认证：登录需要邮箱OTP验证，确保身份真实

### 4. 学生端功能

- **考试模式**：通过房间码进入正式考试
- **练习模式**：按知识点和难度生成AI驱动的练习题
- **学习看板**：显示历史分数、学习进度和连续学习天数

### 5. 管理员后台

- 查看所有注册用户（学生与教师）
- 按角色筛选、删除账户
- 实时统计面板

## 技术架构

Qnario采用了典型的前后端分离架构，涉及三种运行时环境：

### 前端（React 18 + Vite）
- React 18作为UI框架
- Vite 5作为构建工具和开发服务器
- React Router DOM 6处理客户端路由
- Axios进行HTTP请求
- Socket.io-client实现实时WebSocket通信
- Recharts用于数据可视化
- jsPDF支持PDF导出

### 后端（Node.js + Express）
- Express.js 4构建REST API
- MongoDB + Mongoose 8存储数据
- Socket.io 4处理实时事件
- JWT实现认证令牌
- bcryptjs进行密码哈希
- Nodemailer发送OTP和通知邮件
- Multer处理文件上传
- pdf-parse和mammoth解析PDF和DOCX

### AI微服务（Python + FastAPI）
- FastAPI构建高性能异步API
- Google Gemini API作为主AI引擎
- Groq API作为备用方案
- Pydantic v2进行请求/响应校验

### 数据库模型

系统设计了10个Mongoose数据模型，核心包括：
- **User**：用户基础信息、角色、邮箱验证状态
- **Question**：题目内容、选项、正确答案、学科、知识点、难度
- **StudentAttempt**：学生考试记录、答案、得分、提交时间
- **StudentResult**：成绩百分比、等级、AI反馈
- **Analytics**：章节统计、成绩趋势
- **GeneratedQuestion**：AI生成的问题和来源知识点

## 部署与运行

项目提供了完整的Docker Compose配置，本地开发需要：
- Node.js 18+
- Python 3.10+
- MongoDB
- Gemini API Key（免费）
- Groq API Key（免费）
- Gmail应用密码（用于邮件功能）

启动流程分为三个终端：
1. 启动Node.js后端（端口3000）
2. 启动Python AI服务（端口5000）
3. 启动React前端（端口5173）

## 项目亮点与启示

### 1. 双模型容错设计
采用主备模型策略是工程智慧的体现。AI服务依赖外部API，配额限制和网络波动是常态，无缝切换机制确保了用户体验的连续性。

### 2. 贴近真实教学场景
"按知识点选题"看似简单的功能，实际上精准解决了教师的痛点。好的教育科技产品不是炫技，而是理解用户 workflow 后的自然延伸。

### 3. 实时监考的技术实现
通过Socket.io实现实时通信，结合浏览器焦点事件监听实现防作弊，这些技术方案成熟且成本可控，展示了如何在资源有限的情况下构建实用功能。

### 4. 模块化架构
AI服务独立为微服务，使得模型切换、升级和维护更加灵活，也为未来接入更多模型预留了扩展空间。

## 适用场景

- **中小学教育机构**：快速生成周测、月考试卷
- **培训机构**：根据教学进度灵活组卷
- **高校教师**：减轻重复性出题负担
- **在线教育平台**：作为功能模块集成
- **企业培训部门**：内部考核与认证考试

## 总结

Qnario是一个将AI能力与实际教育场景深度结合的开源项目。它没有追求大模型的参数规模，而是专注于"教学大纲解析 → 智能组卷 → 在线考试 → 实时监考"这一完整流程的工程实现。

对于想要了解AI在教育领域落地应用的开发者，或者正在寻找组卷系统解决方案的教育工作者，这个项目都提供了有价值的参考。
