Appearance
云学院 P3 竞赛与数据大屏实施设计
状态:代码已接入,待 MySQL/Flyway 与跨设备验收 日期:2026-10-26
竞赛
老师只能从自己任教班级的启用学生中选择参赛者。二人赛固定 2 人、四人赛固定 4 人、挑战赛固定 1 人、大竞赛可选 1–200 人。竞赛创建时冻结参赛名单、学生与班级名称,以及平台加本校题库的题目快照;指定知识点不足时从其余可用题目补足,题库总量不足则使用实际题量。
老师点击“统一开赛”后,所有参赛者共享同一开始时间和逐题时窗。二人赛 6 题、四人赛 8 题、大竞赛 10 题,每题 25 秒;挑战赛 12 题,每题 15 秒。题目数以冻结后的实际数量为准。客户端只收到当前题的题干与选项;服务端按当前时窗验证并保存每人每题的唯一提交。刷新或换设备不能重答,超时未答按 0 分和完整题目时长计入排名。大竞赛结束前不公开判题结果。
竞赛到时后统一结算。单场按答对数降序、总用时升序、最长连对降序、学生 ID 升序排名;总榜只汇总已结束竞赛中至少提交过一道题的学生。逐题原始答案、判定、提交时间和耗时保留在 edu_contest_answer,老师可从排名查看每名学生的逐题证据并导出真实排名 Excel。全程不创建模拟对手成绩。学生只能看受邀竞赛和本人逐题证据;老师只能管理本人创建的竞赛。
表:edu_contest、edu_contest_player、edu_contest_answer。接口前缀:/api-backend/education/contest。当前使用 1.5–5 秒轮询跨设备同步,后续可替换传输层。
数据大屏
学校管理员看本校,老师只看当前任教班级。服务端自行确定范围,不接受前端传入学校或班级 ID。大屏每 30 秒重查数据库,并返回统计窗口与查询时间。
总量从班级、学生、班级课程、课时完成、已交卷答卷、课堂签到和竞赛作答表直接聚合;近 7 天趋势按各业务记录的发生日期统计。课程使用按完成课时次数,教师活动按近 7 天课堂、竞赛、试卷创建数;竞赛排行只取已结束场次的真实作答。最近业务记录提供类型、操作者、发生时间和来源记录 ID。考试平均分只统计已交卷答卷。班级、学生、课程、课时进度和课堂签到按当前班级关系归属;考试与竞赛按作答时冻结的班级归属,班级成员调整后两类历史数据仍可追溯。
接口:/api-backend/education/analytics/current。不生成固定日期或哈希伪造的登录数,空数据展示为零或空列表。
生命周期与验收
停用学校会结束进行中的竞赛;学校硬删除预检和物理清理覆盖竞赛、参赛者和逐题答案。新增权限码 education:contest:list、education:contest:write、education:analytics:list 由角色菜单分配,资源归属仍由应用层二次校验。
已完成站点生产构建、Java 源文件编译和应用服务单元测试。当前环境未启动 MySQL 与后端,迁移、真实登录、两设备同步、竞赛时间窗和大屏 SQL 聚合仍需在运行环境验证。