You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
# 教师成绩列表进度与评分同步设计
|
|
|
|
|
|
|
|
|
|
|
|
## 目标
|
|
|
|
|
|
|
|
|
|
|
|
教师端成绩列表展示学生已完成实训任务数与总实训任务数,并实时汇总教师在任务评阅中保存的逐任务评分;成绩列表不再允许直接录入或保存教师总分。
|
|
|
|
|
|
|
|
|
|
|
|
## 问题与根因
|
|
|
|
|
|
|
|
|
|
|
|
当前进度统计从旧的 `stu_grade` 查询已完成模块,而当前实训完成状态保存在 `student_training_answer`,导致完成实训的学生仍显示为 `0%`。当前教师评分写入单独的 `teaching_class_teacher_score` 汇总表,和逐任务评阅没有数据关联。
|
|
|
|
|
|
|
|
|
|
|
|
## 数据模型
|
|
|
|
|
|
|
|
|
|
|
|
在 `student_training_answer` 增加以下字段:
|
|
|
|
|
|
|
|
|
|
|
|
- `teacher_score`:教师对该任务的 0–100 分评分,可为空。
|
|
|
|
|
|
- `teacher_scored_by`:评分教师用户 ID,可为空。
|
|
|
|
|
|
- `teacher_scored_at`:评分时间,可为空。
|
|
|
|
|
|
|
|
|
|
|
|
每条答卷已经唯一对应学生、教学班与实训任务,因此不新增独立评分表,也不再使用人工汇总评分作为成绩列表的数据源。
|
|
|
|
|
|
|
|
|
|
|
|
## 评阅与权限
|
|
|
|
|
|
|
|
|
|
|
|
成绩详情弹窗扩展为任务评阅界面,展示当前教学班已启用的全部任务及对应任务状态、AI 评测成绩和教师评分。班级创建教师可对已提交或状态为 `COMPLETED` 的任务录入 0–100 分并保存;其他教师仅可查看。未完成任务不可评分。
|
|
|
|
|
|
|
|
|
|
|
|
成绩列表的“老师评分”列只读:尚无任何教师任务评分时显示“待评阅”,存在评分后显示实时计算结果。移除列表中的数字输入框、保存按钮和人工汇总评分接口调用。
|
|
|
|
|
|
|
|
|
|
|
|
## 实训进度
|
|
|
|
|
|
|
|
|
|
|
|
总任务数取当前教学班启用的已分配任务(使用学校默认任务回退规则,排除发布标记与未参与的综合实训)。完成任务数取同一学生、同一教学班中 `submitted = true` 或 `progress_status = COMPLETED` 的答卷,并按任务去重。
|
|
|
|
|
|
|
|
|
|
|
|
列表显示 `已完成数/总数`,并保留百分比提示;没有可用任务时显示 `--`。
|
|
|
|
|
|
|
|
|
|
|
|
## 教师评分计算
|
|
|
|
|
|
|
|
|
|
|
|
教师总分复用当前参考成绩的六模块算法:按 `TrainingTask.projectName` 把任务归入六个模块;每个模块先计算该模块所有已分配任务教师评分的平均值,未评分任务按 0 分参与平均;再乘以当前教学班的六项权重。综合实训是否参与、参与权重归一化与 `ScoreRankServiceImpl.calculateSixModuleScore` 保持一致。
|
|
|
|
|
|
|
|
|
|
|
|
若班级尚未保存权重配置,教师评分计算使用并持久化与参考成绩相同的默认六项权重,不能使用另一套默认值。
|
|
|
|
|
|
|
|
|
|
|
|
该值在成绩列表和导出查询时即时计算,不依赖“成绩更新”按钮。任务评分保存后,重新请求列表即可得到新总分。
|
|
|
|
|
|
|
|
|
|
|
|
## 接口与兼容性
|
|
|
|
|
|
|
|
|
|
|
|
- 成绩详情接口改为返回全部有效任务及答卷、AI 分数和教师评分。
|
|
|
|
|
|
- 新增受班级创建教师权限保护的逐任务评分保存接口。
|
|
|
|
|
|
- 现有 `/api/weight/saveTeacherScore` 不再由前端调用;旧汇总数据保留,不迁移、不删除。
|
|
|
|
|
|
|
|
|
|
|
|
## 测试
|
|
|
|
|
|
|
|
|
|
|
|
- 后端:验证答卷完成状态统计、无任务显示空进度、逐任务评分权限、未完成任务不能评分、按六模块权重汇总及未评分任务按零分计算。
|
|
|
|
|
|
- 前端:验证列表展示完成数/总数、教师评分只读、详情中存在任务评分控件、没有列表人工评分控件或人工评分 API 调用。
|