Appearance
云学院 P2 考试与课堂实施设计
状态:代码已接入,待数据库迁移与跨浏览器验收
日期:2026-10-26
1. 范围
本批次接入题库、试卷发布、学生一次性作答与即时成绩、老师只读成绩与统计,以及课堂开课、凭码签到、提问回复、投屏页码同步和签到导出。刷题使用真实题库,但不建立练习记录或错题本;AI 问答和查看历史仍不实现。考试不提供补考、重考或改分。
2. 考试规则
平台管理员维护默认题库;老师可使用默认题库及本校题库,为自己任教班级创建试卷。发布时将题目、选项、正确答案、解析和分值写入不可变试卷快照。学生开考接口只返回题干、选项和分值,不返回答案与解析。
edu_exam_attempt 对 (paper_id, student_id) 设置唯一约束。学生每次选择答案后保存到服务端;服务端截止时间决定能否继续保存。交卷以已保存答案判分,写入分数与提交时间后立即返回逐题答案、解析。同一提交令牌重试返回同一结果;其他令牌再次交卷被拒绝。到时后查看结果或老师打开成绩报表,都会自动结算已保存答案。老师仅查询当前任教班级的只读成绩。
老师的成绩页按真实已交卷答卷计算平均分、及格人数、五档成绩分布和逐题正确率,统计范围是当前任教班级。学生刷题只获取题面和选项;每题提交后接口才返回该题判定、答案与解析,服务端不写练习记录,页面离开后本轮状态消失。
主要表:edu_question、edu_exam_paper、edu_exam_paper_class、edu_exam_attempt。接口前缀为 /api-backend/education/exam。
3. 课堂规则
老师只能从已分配给任教班级的学校课程中开课。同一老师同时只有一场进行中的课堂,数据库生成列唯一约束负责兜底。课堂码为唯一的 6 位数字。
课堂码从开课起有效 8 小时,过期自动结束课堂;老师可从最近课堂下载实时查询的签到 CSV。学生凭有效课堂码加入时,只校验学生角色、同校、学校启用与课堂进行中;不校验学生班级或课程分配。加入即签到,重复加入保留同一条签到。学生提问、老师回复和当前投屏页码存入服务端,老师页、学生页和投屏页每 2–3 秒轮询同步。加入课堂不会给学生增加长期课程访问权。停用学校时自动结束该校正在进行的课堂。
主要表:edu_live_session、edu_live_attendance、edu_live_question。接口前缀为 /api-backend/education/live。
4. 验收
已完成前端生产构建、TypeScript 检查、新增 Java 源文件编译和 12 个单元场景;其中覆盖交卷前答案不泄露、服务端判分、重复交卷拒绝、老师查询时结算超时答卷、刷题答案按题返回、真实答卷统计,以及同校跨班加入、跨校拒绝和课堂码过期拒绝。
当前执行环境的 MySQL、后端和站点均未监听;Gradle wrapper 无法在沙箱中写入本机缓存。因此 Flyway 迁移、真实登录、两设备考试和课堂轮询仍需在可运行环境验收。课堂轮询为本期的实时同步方式,后续若需要更低延迟可替换为 SSE 或 WebSocket,持久化表和授权规则不变。