Files
aue/出题做题生成流程示意图.md
2026-06-03 13:16:30 +08:00

22 KiB
Raw Blame History

出题做题生成流程示意图

版本: v2.0 (2026-05-10 更新) 状态: 与代码实现已对齐


一、模块总览

┌─────────────────────────────────────────────────────────────────────┐
│                        考察与训练 (ExamModule)                       │
├──────────┬──────────┬──────────────┬──────────────┬────────────────┤
│ 🤖 AI出题 │ 📚 题库管理 │ 📋 智能组卷   │ 📝 试卷考核    │ 🎯 互动训练     │
│ (管理员)  │ (管理员)  │ (管理员)      │ (全员)        │ (全员)         │
│ exam:ai  │ exam:bank│ exam:paper   │ exam:exam    │ exam:train    │
└──────────┴──────────┴──────────────┴──────────────┴────────────────┘

各模块功能说明

模块 权限码 功能描述 目标用户
AI出题 exam:ai 选择文档→AI生成题目 管理员/有权限用户
题库管理 exam:bank 题目审核/编辑/删除 管理员
智能组卷 exam:paper 配置参数→生成试卷→编辑+发布 管理员
试卷考核 exam:exam 待考试/答题/成绩/错题本/自测组卷 全员
互动训练 exam:train 闯关模式/每日一练/错题本(本地) 全员

二、题目生成流程AI出题

┌──────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────┐
│ 上传文档  │ ──→│ 文件向量化处理 │ ──→│ AI题目生成    │ ──→│ 题目预览  │
│          │    │              │    │              │    │          │
└──────────┘    └──────────────┘    └──────────────┘    └────┬─────┘
                                                            │
                    ┌─────────────────────────────────────────┘
                    ↓
            ┌──────────────┐
            │ 管理员审核操作 │
            └──────┬───────┘
                   │
        ┌──────────┼──────────┐
        ↓          ↓          ↓
   ┌────────┐ ┌────────┐ ┌────────┐
   │ 采纳通过 │ │ 编辑修改 │ │ 删除丢弃 │
   └───┬────┘ └───┬────┘ └────────┘
       ↓           ↓
   ┌────────┐  ┌────────┐
   │ 进入题库 │→ │ 进入题库 │
   └────────┘  └────────┘

相关API接口

序号 接口路径 方法 说明
1 /api/file/upload POST 上传制度文件
2 /api/collections/{name}/vectorize POST 文件向量化处理
3 /api/exam/generate POST AI智能出题接口
4 /api/question/review/{questionId} PUT 审核题目(采纳/拒绝)

三、试卷生成流程(双路径)

路径A管理员 — 智能组卷(可编辑 + 可发布)

┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│ 选择关联文档  │ ──→│ 配置试卷参数  │ ──→│ 调用组卷API   │ ──→│ 预览编辑试卷  │
│ (可选)        │    │              │    │              │    │              │
└──────────────┘    └──────────────┘    └──────────────┘    └──────┬───────┘
                                                                     │
                                    ┌────────────────────────────────┘
                                    ↓
                         ┌──────────────────────┐
                         │   管理员操作面板        │
                         │  ├─ 编辑题目(题干/选项) │
                         │  ├─ 调整分值/顺序       │
                         │  └─ 发布试卷给指定用户   │
                         └──────────┬───────────┘
                                    │
                    ┌───────────────┼───────────────┐
                    ↓               ↓               ↓
             ┌──────────┐    ┌──────────┐    ┌──────────┐
             │ 保存草稿  │    │ 发布试卷  │    │ 删除试卷  │
             └──────────┘    └────┬─────┘    └──────────┘
                                │
                                ↓ 用户收到通知
                     ┌──────────────────────┐
                     │ 试卷考核-待考试列表    │
                     └──────────────────────┘

路径B用户 — 自测组卷(仅生成,直接答题)

┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│ 配置参数     │ ──→│ 调用组卷API   │ ──→│ 生成成功     │ ──→│ 直接进入答题  │
│ (题型/难度)  │    │              │    │              │    │ (不可编辑)    │
└──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘

两条路径对比

维度 路径A管理员智能组卷 路径B用户自测组卷
入口 「智能组卷」标签页 「试卷考核→自测组卷」子标签
API POST /api/exam/paper/generate 同一接口
可选文件 关联制度文件筛选 可选关联
生成后行为 进入编辑预览 直接进入答题页面
编辑题目 题干/选项/答案/分值 不支持
发布功能 发布给指定部门/用户 仅自己使用
数据持久化 存入后端试卷表 前端暂存,关闭即失
权限要求 exam:paper exam:exam

相关API接口

序号 接口路径 方法 说明
1 /api/exam/paper/generate POST 从题库动态生成试卷
2 /admin/exam/paper/{paperId}/publish POST 管理员发布试卷(含deadline/target)
3 /api/exam/my/papers GET 获取我的试卷列表
4 /api/exam/paper/{paperId} GET 获取试卷详情

四、答题考试流程(试卷考核)

核心流程图

┌──────────────┐         ┌──────────────┐         ┌──────────────┐
│  获取待考试   │  ────→  │  选择试卷     │  ────→  │  启动考试记录  │
│  列表        │         │              │         │  /record/start│
└──────┬───────┘         └──────┬───────┘         └──────┬───────┘
       │                        │                        │
       ↓                        ↓                        ↓
┌──────────────┐         ┌──────────────────────────────────────────┐
│ GET          │         │                  答题界面                      │
│ /my/papers   │         │  ┌─────────────────────────────────────┐  │
└──────────────┘         │  │  第 N 题 [题型] ★ 分值               │  │
                         │  │  题目内容                            │  │
                         │  │  ○ A. 选项内容                       │  │
                         │  │  ○ B. 选项内容                       │  │
                         │  │  ○ C. 选项内容                       │  │
                         │  │  ○ D. 选项内容                       │  │
                         │  └─────────────────────────────────────┘  │
                         │                                          │
                         │  [上一题] ●●●○●● [下一题] [提交试卷]       │
                         └──────────────┬───────────────────────────┘
                                        │
                    ┌───────────────────┼───────────────────┐
                    ↓                   ↓                   ↓
             ┌──────────┐        ┌──────────┐        ┌──────────┐
             │ 自动保存  │        │ 提交试卷  │        │ 退出确认  │
             │ /save     │        │ /submit  │        │          │
             └──────────┘        └────┬─────┘        └──────────┘
                                      │
                                      ↓
                          ┌──────────────────────┐
                          │    后端AI批改处理       │
                          │  (自动触发)            │
                          └──────────┬───────────┘
                                     │
                                     ↓
                          ┌──────────────────────┐
                          │   显示成绩单           │
                          │  总分/得分率/每题详情   │
                          └──────────┬───────────┘
                                     │
                                     ↓
                          ┌──────────────────────┐
                          │   错题自动收集入库      │
                          │  → 错题本可查看/重做    │
                          └──────────────────────┘

答题流程详细步骤与API对应关系

步骤 操作 API接口 方法 说明
1 获取待考试列表 /api/exam/my/papers GET 返回当前用户的已发布试卷
2 选择并进入试卷 - 前端切换视图 加载试卷数据到答题组件
3 启动考试记录 /api/exam/record/{recordId}/start POST 创建考试记录,开始计时
4 答题中(自动保存) /api/exam/record/{recordId}/save PUT 定期保存当前答案进度
5 提交试卷 /api/exam/record/{recordId}/submit POST 提交最终答案触发后端AI批改
6 查看成绩结果 /api/exam/record/{recordId}/result GET 获取AI批改后的成绩和错题信息
7 错题自动收集 后端自动处理 - 批改后自动将错题录入错题库

注意:当后端尚未实现 record 系列 API 时,前端会优雅降级:

  • start/save 失败时继续前端答题模式
  • submit 失败时降级为直接调用 /exam/grade 进行批改

支持的题型及答题方式

题型 question_type 答题控件 答案格式
单选题 single_choice Radio单选框 字符串 "A"
多选题 multiple_choice Checkbox多选框 数组 ["A","C"]
判断题 true_false 是/否双选 字符串 "true"/"false"
填空题 fill_blank 文本输入框 字符串
简答题 subjective 多行文本域 字符串

五、错题系统(两套独立机制)

架构对比

┌─────────────────────┐         ┌─────────────────────┐
│  互动训练-错题本      │         │  试卷考核-错题本      │
│  (trainTab='wrong')  │         │  (examTab='wrong')   │
├─────────────────────┤         ├─────────────────────┤
│  数据来源: 前端缓存   │         │  数据来源: 后端API    │
│  存储位置: trainingData│        │  存储位置: 数据库表    │
│  .wrongQuestions     │         │  wrong_questions     │
│                     │         │                     │
│  触发场景:           │         │  触发场景:           │
│  • 闯关模式答错       │         │  • 试卷考核提交后     │
│  • 每日一练答错       │         │  • 后端自动收集       │
│                     │         │                     │
│  操作能力:           │         │  操作能力:           │
│  • 查看解析(前端mock) │         │  • 查看解析(API数据)  │
│  • 重做(重置关卡)     │         │  • 重做(/redo API)   │
│  • 无持久化          │         │  • 收藏(/toggle API) │
└─────────────────────┘         └─────────────────────┘

试卷考核错题本API

操作 API 方法 说明
获取错题列表 /api/wrong-questions/list POST 分页查询支持collection过滤
收藏/取消收藏 /api/wrong-questions/collection/toggle POST 传入question_id
重做错题 /api/wrong-questions/redo POST 传入question_ids数组

六、互动训练流程

┌─────────────────────────────────────────────────────────────┐
│                      互动训练 (exam:train)                   │
├──────────┬──────────┬──────────────────────────────────────┤
│ 🏆 闯关  │ 📅 每日一练│ ❌ 错题本(本地缓存)                   │
│ checkpoint│ daily   │ wrong                               │
└──────────┴──────────┴──────────────────────────────────────┘

闯关模式流程:
┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐
│ 选择关卡  │ → │ 组卷API   │ → │ 答题提交   │ → │ 批改评分   │
│ (5个预设) │   │ generate  │   │ grade    │   │ 更新关卡  │
└──────────┘   └──────────┘   └──────────┘   └──────────┘
                                              │
                                   ┌──────────┴──────────┐
                                   ↓                      ↓
                              ┌──────────┐          ┌──────────┐
                              │ 通过升级  │          │ 错题缓存  │
                              │ 下一关    │          │ 本地存储  │
                              └──────────┘          └──────────┘

互动训练关卡配置(预设固定关卡)

关卡ID 名称 难度 单选 多选 判断 简答 状态
1 入门挑战 3 0 2 0 in-progress
2 基础巩固 4 2 2 0 pending
3 进阶提升 4 3 3 0 pending
4 高级挑战 3 3 2 2 pending
5 大师试炼 4 4 2 2 pending

七、完整API接口清单

7.1 题目管理

接口 路径 方法 权限 说明
AI出题 /api/exam/generate POST exam:ai 根据文档生成题目
审核题目 /api/question/review/{id} PUT exam:bank 采纳/拒绝题目

7.2 试卷管理

接口 路径 方法 权限 说明
生成试卷 /api/exam/paper/generate POST exam:paper 或 exam:exam 从题库动态组卷
我的试卷 /api/exam/my/papers GET exam:exam 获取用户试卷列表
试卷详情 /api/exam/paper/{paperId} GET exam:paper 或 exam:exam 获取试卷完整内容
发布试卷 /admin/exam/paper/{paperId}/publish POST exam:paper 管理员发布试卷

7.3 答题考试(record-based)

接口 路径 方法 权限 说明
启动考试 /api/exam/record/{recordId}/start POST exam:exam 开始考试计时
保存答案 /api/exam/record/{recordId}/save PUT exam:exam 答题中途自动保存
提交试卷 /api/exam/record/{recordId}/submit POST exam:exam 提交最终答案
成绩查询 /api/exam/record/{recordId}/result GET exam:exam 获取批改成绩和错题

7.4 批改与查询

接口 路径 方法 权限 说明
批改答案 /api/exam/grade POST exam:exam AI批改(降级备用)
查询答题记录 /api/exam/answers/query POST exam:exam 按paperId/sessionId查询

7.5 错题管理

接口 路径 方法 权限 说明
错题列表 /api/wrong-questions/list POST exam:exam 分页获取错题
收藏切换 /api/wrong-questions/collection/toggle POST exam:exam 收藏/取消收藏错题
重做错题 /api/wrong-questions/redo POST exam:exam 重新练习错题

八、数据库核心表结构

exam_paper试卷表

字段名 类型 说明
id BIGINT 主键
uuid VARCHAR(36) UUID唯一标识
title VARCHAR(200) 试卷标题
total_score INT 总分
question_count INT 题目数量
difficulty INT 整体难度(1-5)
status TINYINT 状态(0=草稿,1=已发布,2=已归档)
creator_id BIGINT 创建者(管理员)
created_at DATETIME 创建时间
updated_at DATETIME 更新时间

exam_record考试记录表

字段名 类型 说明
id BIGINT 主键
uuid VARCHAR(36) UUID唯一标识
paper_id BIGINT 关联试卷ID
user_id BIGINT 考试用户ID
status TINYINT 状态(0=未开始,1=进行中,2=已交卷,3=已批改)
score DECIMAL(5,2) 得分
max_score INT 满分
started_at DATETIME 开始时间
submitted_at DATETIME 提交时间
graded_at DATETIME 批改完成时间

wrong_questions错题表

字段名 类型 说明
id BIGINT 主键
question_id BIGINT 关联题目ID
user_id BIGINT 用户ID
student_answer TEXT 学生答案
correct_answer TEXT 正确答案
is_correct TINYINT 是否正确(0=错误)
error_count INT 错误次数
last_wrong_at DATETIME 最近错误时间

九、管理员 vs 用户 功能矩阵

功能 管理员 普通用户
AI出题 (有权限)
题库审核
智能组卷(生成)
智能组卷(编辑)
智能组卷(发布)
试卷考核-待考试
试卷考核-答题 (测试)
试卷考核-成绩单
试卷考核-错题本(API)
试卷考核-自测组卷
互动训练-闯关
互动训练-每日一练
互动训练-错题本(本地)

文档更新日期: 2026-05-10 与 ExamModule.vue v2.0 + exam.js v2.0 对齐