# 学生实验报告六模块同步设计 ## 目标 将学生端“实验报告”由旧五模块及其遗留统计字段,迁移为当前教学班的六模块实训报告。报告中的模块成绩、权重、任务完成数和总分必须与教师成绩中心使用同一教学班、任务和 AI 评分口径。 ## 接口与权限 新增学生专用的报告查询接口。接口从 JWT 获取学生身份,不接受 `userId`、`schoolId` 或教学班 ID 来决定查询范围;使用 `StudentTeachingClassResolver.resolveRequired` 获取当前教学班。非学生、未加入教学班、跨学校或无效教学班均返回现有权限/参数错误。 接口返回: - 当前教学班名称、班级排名、总分; - 六个固定模块的 `moduleName`、`weight`、`score`、`completedTaskCount` 和 `totalTaskCount`; - 当前教学班全部已启用实训任务的名称、所属模块、完成状态与 AI 评分,供报告任务明细表展示。 ## 汇总口径 已启用任务使用 `SchoolDefaultTaskService.resolveForTeachingClass` 解析;忽略停用任务及发布标记。每个任务从 `student_training_answer` 读取当前学生、当前教学班的答案与 AI 评分:有 AI 评分即纳入该模块平均分;缺少答案或 AI 评分按 0 分计入已启用任务,已提交任务计入完成数。模块权重读取 `teaching_class_score_weight`,不存在时按 10%、30%、10%、10%、20%、20% 返回默认值。总分为六个模块平均分乘各自权重后的和,保留两位小数。 ## 前端调整 实验报告页改为调用新接口,并动态渲染返回的六模块成绩表和任务明细表。移除依赖旧 `oneScore` 至 `fiveScore`、旧学习时长和旧访问次数接口的三个遗留模块统计区块,避免把五模块数据错误标注为新模块。页面仍显示学生基本信息、总分和排名。 ## 验证 后端单元/控制器测试覆盖 JWT 范围、六模块默认权重、AI 评分汇总及停用任务过滤;前端测试验证报告只调用新接口并渲染六模块和任务明细。前后端全量测试及前端生产构建通过。