基于SpringAI的在线考试系统-阅卷评分模块时序图

根据阅卷评分模块的业务流程,创建了以下时序图,展示了从老师开始阅卷到任务完成的完整交互过程:

阅卷评分模块时序图

数据库 数据仓库 MarkingTaskService MarkingTaskAssignmentService MarkingScoreService MarkingController 前端页面 数据库 数据仓库 MarkingTaskService MarkingTaskAssignmentService MarkingScoreService MarkingController 前端页面 alt 所有分配记录都已完成 GET /api/v1/marking/task/{taskId}/questions getQuestionsByTaskId(taskId, studentId, teacherId) findByTaskIdAndTeacherId(taskId, teacherId) SELECT * FROM marking_task_assignment WHERE task_id = ? AND teacher_id = ? 返回分配记录 分配记录列表 findByTaskId(taskId) SELECT * FROM marking_task WHERE id = ? 返回任务信息 任务信息 getAnswersByExamIdAndUserId(examId, studentId) SELECT * FROM mock_exam_answer WHERE exam_id = ? AND user_id = ? 返回答题记录 答题记录列表 findByTaskIdAndQuestionIdAndStudentId(taskId, questionId, studentId) SELECT * FROM marking_score WHERE task_id = ? AND question_id = ? AND student_id = ? 返回评分记录 评分记录列表 返回学生和试题列表 200 OK { questions: ... } POST /api/v1/marking/task/{taskId}/score saveScore(taskId, markingData) findById(paperId) SELECT * FROM mock_exam_record WHERE id = ? 返回考试记录 考试记录 findByTaskIdAndTeacherId(taskId, teacherId) SELECT * FROM marking_task_assignment WHERE task_id = ? AND teacher_id = ? 返回分配记录 分配记录 save(markingScore) INSERT INTO marking_score (...) VALUES (...) 保存成功 保存结果 findByAssignmentId(assignmentId) SELECT * FROM marking_score WHERE assignment_id = ? 返回评分记录 评分记录列表 save(assignment) UPDATE marking_task_assignment SET status = ?, marked_papers = ? WHERE id = ? 更新成功 更新结果 findByTaskId(taskId) SELECT * FROM marking_task_assignment WHERE task_id = ? 返回所有分配记录 分配记录列表 findById(taskId) SELECT * FROM marking_task WHERE id = ? 返回任务信息 任务信息 save(task) UPDATE marking_task SET status = 4 WHERE id = ? 更新成功 更新结果 返回评分结果 200 OK { success: true }

时序图说明

  1. 开始阅卷流程

    • 老师在前端页面点击"开始阅卷"按钮
    • 前端向后端请求获取待阅学生和试题列表
    • 后端服务查询分配记录、任务信息、答题记录和评分记录
    • 后端返回完整的学生和试题数据给前端
  2. 提交评分流程

    • 老师在前端页面为学生的题目打分并提交
    • 前端向后端发送评分数据
    • 后端服务保存评分记录到数据库
    • 后端服务更新对应分配记录的状态
  3. 状态更新流程

    • 后端服务检查该学生的所有题目是否都已评分
    • 如果学生的所有题目都已评分,标记该学生为完成
    • 后端服务检查该老师的所有分配学生是否都已完成
    • 如果老师的所有分配学生都已完成,更新分配记录状态为"已完成"
    • 后端服务检查所有老师的分配记录是否都已完成
    • 如果所有分配记录都已完成,更新主任务状态为"已完成"
  4. 数据同步

    • 所有状态更新都实时反映到数据库
    • 前端可以通过刷新页面获取最新状态
    • 确保了整个阅卷过程的数据一致性

核心交互要点

  1. 数据关联:评分记录与分配记录、任务记录紧密关联,确保数据溯源
  2. 状态流转:从评分明细 → 分配记录 → 主任务,自下而上更新状态
  3. 事务管理:评分保存和状态更新在同一事务中执行,确保数据一致性
  4. 实时反馈:前端实时获取最新的阅卷进度和状态
  5. 错误处理:各环节都有完善的错误处理机制,确保系统稳定性

这个时序图完整展示了阅卷评分模块的核心交互过程,帮助您理解整个流程的执行顺序和数据流向。

相关推荐
CIO40几秒前
AI未来--AI时代下的数字化建设规划
人工智能
leoZ2315 分钟前
第 2 篇:搭建地基——Vue3 + Vite + Tailwind v4 + shadcn-vue
前端·javascript·vue.js·人工智能·目标检测·数据挖掘·语音识别
xcl09255 分钟前
民宿预约系统开发实战:从需求分析到上线部署全流程解析
java·spring boot
梦在远山后9 分钟前
Python 中字符串常用写法
人工智能·后端
YOLO数据集集合15 分钟前
标准汽车行驶工况数据集(21种典型工况)| 汽车工况 行驶循环 油耗测试 排放认证 车辆仿真 交通能耗 标准数据集8018期
人工智能·目标检测·汽车·标准汽车行驶工况·汽车工况数据集·21
科技小登16 分钟前
重大活动安全保障方案怎么选?重保服务、攻防演练、应急响应与安全意识培训实战与边界
数据库·人工智能·安全
步行cgn19 分钟前
为何以继承方式引入SpringBoot
java·spring boot·后端
CoderYanger20 分钟前
A.每日一题:1140. 石子游戏 II
java·程序人生·算法·leetcode·游戏·职场和发展·深度优先
windliang20 分钟前
Agent Loop 的 while 循环什么时候开始不够用
人工智能·面试·开源
禾高网络21 分钟前
养老系统开发:背景、架构与养老行业展望
java·大数据·人工智能·小程序·架构