作业报告
页面元信息
- 终端:教师 Web
- Astro 路由:
/teacher/report - 原始 HTML:
t_report.html - 来源章节:
4.2.7 - 维护规则:后续以本页面 PRD 为准;若改动影响通用规则,再同步总览 / 全局规则文档。
视觉描述
- 原型引用:
产出文档/作业管理模块/原型图/t_report.html。 - 页面采用教师 Web 标准双栏导航布局,左侧为全局导航,右侧为主内容区;顶部栏包含
← 返回、页面标题作业报告 — {作业标题}与右上角刷新报告文本按钮。 - 主内容区顶部优先展示
班级切换胶囊组,当作业仅发布到 1 个班级时隐藏该区域;当发布到多个班级时,默认高亮当前上下文班级,支持横向切换。 - 班级切换下方为统一子页签区,包含
作业分析、题目分析、学生学情三个页签;页签切换采用页内切流,不发生整页跳转或白屏刷新。 作业分析页签由基本信息卡、核心指标六宫格、知识点分析表、知识点雷达图组成;核心指标区依次展示提交情况、批改情况、最高分、最低分、题目错误率 Top5、学生作业评价分布。题目分析页签采用左主右辅双栏结构:左侧为题目诊断卡片流,右侧为筛选面板;每张题目卡包含题型标签、错误率、错误次数、作答次数、错题人数、难度、题干正文,以及加入作业篮、解析两个主动作按钮。学生学情页签采用左侧数据表、右侧筛选面板布局;左侧表格包含 ID、学生姓名、学号、正确率、评价、批改时间、操作列,表头提供复制名单快捷入口,并在评价列标题区域展示现有一键全A快捷操作。- 页面右下角常驻
作业篮悬浮胶囊,展示已选题量;点击后从右侧滑出作业篮抽屉。抽屉内包含题量/总分汇总、一键清空、进入选题中心、进入排版以及分题型折叠的题目列表。 - 页面内包含
未提交名单弹窗;弹窗展示当前班级未提交学生清单、页码状态格、全选与复制能力。页面整体还需支持骨架屏、局部 Loading、空状态和失败态占位。
功能描述
- 页面入口:
- 从首页或
t_homework_list.html点击作业报告/查看报告进入。 - 从
t_grading.html点击保存并查看分析进入。 - 从批改完成弹窗点击
查看作业报告进入。
- 从首页或
- 页面权限与数据范围:
- 仅任课教师、班主任或具备当前作业所属班级数据权限的教师可进入;越权访问时不展示任何学生明细与分数数据。
- 页面中所有统计、学生名单、题目错误率、评价结果均严格限定在“当前作业 + 当前班级”范围内,不跨班聚合展示。
- 页面初始化与数据加载:
- 进入页面后必须校验
作业ID是否有效;无效或缺失时直接返回t_homework_list.html并提示“未找到对应作业”。 - 首次进入默认加载
作业分析页签数据;题目分析、学生学情采用首次进入页签时懒加载,避免一次性并发请求过多。 - 若来源为
t_grading.html或批改完成弹窗,则优先带入该批改链路中的班级ID;若来源为列表/首页,则默认选中教师最近一次查看的班级,若无历史则选中作业发布班级列表的第一个班级。 - 若来源为
t_error_analysis.html或t_student_evaluation.html的“返回报告”,必须优先恢复report_context,包括班级、页签、筛选条件和当前学生定位。
- 进入页面后必须校验
- 页面级全局控件:
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
← 返回 | 始终展示 | 点击后返回 t_homework_list.html,并恢复列表页上一次的筛选条件与滚动位置;不返回批改页。 |
| 页面标题 | 始终展示 | 固定格式为 作业报告 — {作业标题};标题过长时单行省略,悬浮显示完整标题。 |
刷新报告 | 始终展示;刷新进行中禁用 | 点击后重新拉取当前班级、当前页签所需数据;刷新过程中保留当前页签和筛选状态,不回退到默认页签。 |
| 班级切换胶囊 | 仅当发布班级数 > 1 时展示 | 点击胶囊切换当前班级,保留当前页签;若当前处于 题目分析 或 学生学情,需在新班级下继续沿用当前筛选条件重新查询。 |
| 子页签 | 始终展示 | 页签切换不改 URL,不整页跳转;当前激活态写入 report_context.active_tab。 |
| 作业篮悬浮胶囊 | 始终展示 | 展示全局作业篮题量;题量为 0 时仍可点击打开空抽屉。 |
- 数据保留与回退策略:
- 页面需持久化
report_context,至少包含homework_id、selected_class_id、active_tab、question_filters、question_sort、student_filters、current_student_id、source_page。 - 切换班级、切换页签、打开/关闭未提交名单弹窗、打开/关闭作业篮抽屉时,不得丢失当前会话内已录入的筛选条件。
- 从报告页下钻到
t_error_analysis.html或t_student_evaluation.html后返回时,需恢复到离开前的班级、页签、筛选条件与滚动位置。
- 页面需持久化
作业分析页签
作业分析为默认页签,用于呈现当前班级下该次作业的整体完成与学情概览。- 页面区域与字段说明:
| 区域 | 字段/按钮 | 规则与说明 |
|---|---|---|
| 基本信息卡 | 作业标题 | 读取发布成功后的最终作业标题,禁止显示草稿标题。 |
| 基本信息卡 | 发布班级 | 展示该作业全部发布班级;当前查看班级需在列表中高亮或通过顶部胶囊体现。 |
| 基本信息卡 | 发布时间 | 以 YYYY-MM-DD HH:mm 格式展示最终发布时间。 |
| 基本信息卡 | 题目数量 | 展示当前作业题目总数,取发布版本,不随班级切换变化。 |
| 基本信息卡 | 总分 | 展示作业满分值,单位固定为“分”。 |
| 基本信息卡 | 备注 | 无备注时显示 —,不留空白。 |
| 提交情况卡 | 提交率、提交人数、查看未提交名单 | 提交率 = 已提交人数 / 应提交人数;点击 查看未提交名单 打开未提交名单弹窗。 |
| 批改情况卡 | 批改进度、已批改人数、批改修正 | 批改进度 = 已批改人数 / 已提交人数;仅当当前班级存在至少 1 份已提交答卷时展示可点击态,否则按钮置灰并提示“暂无可修正答卷”。 |
| 最高分卡 | 最高分值 | 仅统计已完成最终批改的学生;并列最高分只展示数值,不展示人数。 |
| 最低分卡 | 最低分值 | 仅统计已完成最终批改的学生;未产生有效成绩时显示计算中或 —。 |
| 题目错误率卡 | Top5 错题摘要 | 固定展示当前班级错误率最高的 5 道题;按错误率倒序,若错误率相同则按题目顺序升序。 |
| 学生作业评价分布卡 | A-E 占比 | 仅统计已生成评价结果的学生;若评价体系未生效,则展示“暂无评价数据”。 |
| 知识点分析表 | 知识点、上级知识点、正确率、掌握情况 | 掌握情况 由后端规则引擎直接返回,前端只负责渲染标签与色值,不在前端二次判定。 |
| 知识点雷达图 | 前 N 个重点知识点掌握度 | 默认取当前作业覆盖度最高且有作答数据的前 5 个知识点;当不足 3 个知识点时不渲染雷达图,改为表格空态说明。 |
- 信息说明图标(
?)统一交互:- 鼠标悬浮显示 Tooltip,内容包含统计口径、分母范围与排除逻辑。
- Tooltip 文案由后端返回或配置中心统一维护,避免前后端口径不一致。
批改修正交互:- 点击后进入
t_grading.html,并透传homework_id、selected_class_id、source_page=t_report。 - 若当前班级存在未完成最终批改的学生,则优先定位到首个待处理学生;若已全部批改,则进入已批阅查看/修正状态。
- 点击后进入
查看未提交名单交互:- 打开弹窗后默认展示当前班级的未提交或欠交学生,不跨班显示。
- 关闭弹窗后仍停留在当前页签,不触发整页刷新。
题目分析页签
题目分析用于帮助教师定位共性错误题,并从报告页直接回流到再出题链路。- 区域与交互说明:
| 区域 | 字段/按钮 | 规则与说明 |
|---|---|---|
| 列表头部 | 错误人数 排序 | 首次进入默认按 错误率 倒序;点击 错误人数 在升序/降序之间切换,并同步更新箭头方向。 |
| 列表头部 | 错误率 排序 | 与 错误人数 互斥,只允许一个排序字段生效。 |
| 题目卡片 Header | 题型标签 | 按题目真实题型渲染,如选择题、填空题、解答题。 |
| 题目卡片 Header | 错误率、错误次数、作答次数 | 均基于当前班级统计;错误率分母为有效作答人数。 |
| 题目卡片 Header | 错题人数 | 以链接态展示;点击后进入 t_error_analysis.html,并自动带入当前题目筛选。 |
| 题目卡片 Header | 难度星级 | 读取题库已有难度标签;缺失时显示 暂无难度标签。 |
| 题目卡片 Body | 题干正文 | 支持富文本、公式、图片混排;内容过长时完整展示,不做卡片内截断。 |
| 题目卡片 Footer | 加入作业篮 / 取消加入 | 未加入时为品牌色主按钮;加入后切换为 取消加入 次按钮态;点击不跳页,只更新全局作业篮。 |
| 题目卡片 Footer | 解析 / 收起 | 首次点击时展开卡片下方解析区,展示试题答案、试题解析、知识点、教材章节;再次点击收起。 |
| 右侧筛选面板 | 题目类型下拉 | 支持单选;默认 全部。 |
| 右侧筛选面板 | 知识点下拉 | 支持单选;默认 全部。 |
| 右侧筛选面板 | 筛选 | 点击后按当前筛选条件重新查询;保留当前排序字段。 |
| 右侧筛选面板 | 重置 | 清空题型与知识点筛选,恢复默认排序和默认结果集。 |
- 列表加载策略:
- 首屏加载 20 道题目卡片;滚动到底部自动加载下一批 20 道,直到当前作业题目全部加载完成。
- 筛选或排序变化后,结果列表回到顶部并重新从第 1 批开始加载。
- 题目解析区按卡片维度延迟加载,避免列表首屏请求体过大。
加入作业篮交互细则:- 加入成功后,右下角作业篮悬浮胶囊题量立即 +1,抽屉头部题量与总分同步刷新。
- 取消加入后,如当前题目为作业篮中最后一题,对应分组从抽屉中移除;若抽屉整体为空,切换回空状态。
- 当前页已加入题目在切换班级、切换页签后返回时,按钮需保持已加入态。
- 作业篮回流链路:
- 报告页与资源中心共用同一个全局作业篮容器。
- 教师可在报告页完成选题积累,再通过抽屉中的
进入选题中心返回t_resource_center.html继续选题,或直接点击进入排版进入t_composition.html。
学生学情页签
学生学情用于查看当前班级下已提交学生的个人表现、评价结果和后续下钻入口。- 区域与交互说明:
| 区域 | 字段/按钮 | 规则与说明 |
|---|---|---|
| 顶部工具行 | 提交人数 | 固定展示当前班级已提交人数 / 应提交人数。 |
| 顶部工具行 | 复制名单 | 复制当前班级、当前筛选结果下的学生名单;复制内容默认格式为 姓名(学号) 每行一条。 |
| 数据表 | ID | 展示学生内部唯一标识,仅教师可见。 |
| 数据表 | 学生姓名 | 按真实姓名展示;若启用投屏脱敏模式,则应复用脱敏组件。 |
| 数据表 | 学号 | 展示校内学号;缺失时显示 —。 |
| 数据表 | 正确率 | 统计当前作业已判分题目的正确率;悬浮 ? 展示计算口径。 |
| 数据表 | 评价 | 展示当前学生最终作业评价等级;字母样式按等级色彩区分,点击评价字母与点击 作业评价 均进入 t_student_evaluation.html,其中评价字母默认定位到评价摘要区域。 |
| 数据表 | 一键全A | 位于表头评价列区域,作为现有批量评价快捷操作展示;点击后统一弹出二次确认。 |
| 数据表 | 批改时间 | 展示该学生最近一次最终批改完成时间;尚未批改完成时显示 待批改。 |
| 数据表 | 错题分析 | 点击进入 t_error_analysis.html,默认定位到当前学生。 |
| 数据表 | 作业评价 | 点击进入 t_student_evaluation.html,默认定位到当前学生。 |
| 右侧筛选面板 | 学生评价下拉 | 支持按 A/B/C/D/E 单选过滤;默认 全部。 |
- 列表加载策略:
- 首屏加载 20 名学生记录;向下滚动时追加加载后续 20 条。
- 当前页签切换或班级切换后需保留评价筛选条件,但学生列表需回到顶部重新加载。
- 若当前筛选结果为 0,展示空状态
暂无符合条件的学生,而非空白表格。
复制名单交互:- 默认复制当前筛选结果内的全部学生,而不是仅复制当前屏幕可见行。
- 复制成功 Toast:
已复制{N}名学生名单;复制失败时回退为弹窗展示纯文本,便于手动复制。
一键全A交互:- 仅作用于“当前班级 + 当前评价筛选结果 + 已批改完成学生”集合,不跨班、不跨作业、不处理未批改记录。
- 执行成功后需同步刷新当前表格中的评价字段,以及
作业分析页签中的评价分布卡片。 - 若当前结果集为空、当前结果集均未批改或当前结果集全部已为 A,则按钮置灰,不允许触发。
- 下钻链路:
- 点击
错题分析进入t_error_analysis.html,透传homework_id、class_id、student_id、source_page=t_report、source_tab=student_condition。 - 点击
作业评价进入t_student_evaluation.html,透传同样的上下文参数;返回时恢复当前页签和所选学生所在列表位置。
- 点击
作业篮抽屉规格
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
| 作业篮悬浮胶囊 | 始终展示 | 点击打开右侧抽屉;显示当前全局作业篮题量。 |
| 抽屉标题区 | 始终展示 | 展示 已选{题量}题、共{总分}分。 |
抽屉关闭 × / 遮罩 | 始终展示 | 点击右上角 ×、点击抽屉外遮罩或按 ESC 均关闭抽屉,不清空作业篮。 |
一键清空 | 题量 > 0 时可用 | 点击弹出确认弹窗;确认后清空当前全局作业篮。 |
进入选题中心 | 始终展示 | 跳转 t_resource_center.html,保留当前作业篮内容。 |
进入排版 | 题量 > 0 时可用 | 跳转 t_composition.html;题量为 0 时按钮置灰。 |
| 题型分组标题 | 对应题型存在题目时展示 | 点击折叠/展开该题型分组。 |
| 题目条目删除 | 每个条目均展示 | 删除当前题目并实时刷新题量、总分、按钮态。 |
| 拖拽手柄 | 原型存在视觉手柄 | 本期先按视觉占位处理,不作为正式必交付交互;若后续确认支持拖拽排序,需在组卷工作台统一定义排序规则。 |
弹窗规格
弹窗 1:未提交名单弹窗
| 要素 | 内容 |
|---|---|
| 触发条件 | 点击 作业分析 页签提交情况卡中的 查看未提交名单 |
| 标题 | 未提交名单 + 当前班级名称 |
| 正文 | 展示当前班级未提交/欠交学生列表;每行包含勾选框、学生姓名、页码状态格。绿色表示该页已提交,灰色表示未提交或欠交页码。 |
| 主按钮 | 复制名单 → 复制当前勾选学生及其欠交信息,复制格式为 姓名(欠交第X、Y页) |
| 次按钮 | 无独立底部次按钮;通过 × 或遮罩关闭 |
| [x] 关闭 | 关闭弹窗,不清空当前报告页筛选状态;默认保留本次勾选状态直到弹窗关闭 |
补充规则:
全选仅作用于当前弹窗结果集;单项勾选变化需反向同步全选状态。- 若未勾选任何学生即点击
复制名单,提示请先勾选需要复制的学生。 - 支持点击遮罩关闭、点击右上角
×关闭、按ESC关闭。
弹窗 2:作业篮清空确认弹窗
| 要素 | 内容 |
|---|---|
| 触发条件 | 点击作业篮抽屉中的 一键清空 |
| 标题 | 清空作业篮 |
| 正文 | 确认清空当前作业篮中的全部题目吗?清空后需重新加入。 |
| 主按钮 | 确认清空 → 清空全局作业篮、更新悬浮胶囊与抽屉为空状态 |
| 次按钮 | 取消 → 关闭弹窗,保持作业篮不变 |
| [x] 关闭 | 同 取消 |
弹窗 3:一键全A确认弹窗
| 要素 | 内容 |
|---|---|
| 触发条件 | 在 学生学情 页签点击表头 一键全A |
| 标题 | 确认一键全A |
| 正文 | 确认将当前班级、当前筛选结果内的已批改学生评价统一调整为 A 吗?该操作会覆盖原评价结果。 |
| 主按钮 | 确认调整 → 执行批量更新,成功后刷新表格与评价分布 |
| 次按钮 | 取消 → 关闭弹窗,不执行任何修改 |
| [x] 关闭 | 同 取消 |
- 业务规则:R09、R18、R22、R23、R24、R25、R26、R27。
异常描述
| 异常场景 | 处理方式 |
|---|---|
| 页面初始化失败(作业ID 无效、接口 404、无权限) | 展示整页错误态,提供 返回作业列表 与 重试 两个入口;无权限时文案为 您暂无权限查看该作业报告。 |
| 报告未生成或批改未完成 | 对应卡片/图表区域展示 报告生成中 或 批改未完成,暂无法计算,禁止用 0 值或空图误导教师。 |
| 某个图表或模块单独加载失败 | 仅该模块展示局部失败态与 重新加载 按钮,其他模块继续可用。 |
| 切换班级后数据计算延迟 | 当前页签展示骨架屏,顶部保留当前班级高亮,不允许误以为切换失败;超过 10 秒未完成需提示教师可手动刷新。 |
题目分析 筛选结果为空 | 左侧题目流展示空状态 暂无符合条件的题目,右侧筛选面板保留已选条件并支持重置。 |
学生学情 筛选结果为空 | 表格区域展示空状态 暂无符合条件的学生,保留筛选面板。 |
| 未提交名单为空 | 弹窗正文展示空状态 当前班级暂无未提交学生,并隐藏复制按钮或置灰。 |
| 未提交名单复制失败 | 保底展示可复制纯文本框,并提示 复制失败,请手动复制。 |
| 学生名单复制失败 | 提示 系统复制失败,请重试,并提供纯文本回退。 |
| 作业篮同步失败 | 保持当前按钮态不变,提示 加入作业篮失败,请稍后重试;不得出现按钮已切换但抽屉未更新的脏状态。 |
作业篮为空仍点击 进入排版 | 按钮置灰不可点击,不触发跳转。 |
批改修正 跳转失败 | 保持停留在报告页,提示 进入批改页失败,请稍后重试。 |
一键全A 批量更新失败 | 保持原评价结果不变,提示失败原因;如部分成功,需返回明确成功/失败人数,不允许静默覆盖。 |
| 下钻页返回时上下文恢复失败 | 回退到当前作业报告的默认 作业分析 页签,并提示 已为你恢复到报告首页。 |
| 超大班额或长列表加载卡顿 | 启用分批加载与骨架屏,超过阈值时提示 数据较多,正在分批加载。 |
数据需求
- 接口:
GET /homework/report/summary:获取作业基本信息、提交情况、批改情况、最高分、最低分、评价分布。GET /homework/report/knowledge:获取知识点分析表与雷达图数据。GET /homework/report/questions:按班级、题型、知识点、排序字段获取题目分析列表。GET /homework/report/students:按班级、评价筛选获取学生学情列表。GET /homework/report/unsubmitted:获取当前班级未提交/欠交学生列表及页码状态。POST /homework/report/refresh:触发当前作业报告重新计算或刷新缓存。POST /question-basket/add、POST /question-basket/remove、POST /question-basket/clear:作业篮增删清空。POST /homework/report/batch-evaluation:执行一键全A批量评价更新。
- 状态与缓存:
- 需缓存
report_context,至少包含homework_id、selected_class_id、active_tab、question_filters、question_sort、student_filters、current_student_id、source_page。 - 需缓存
report_module_status,区分idle、loading、success、empty、error、calculating,用于模块级渲染。 - 作业篮需复用教师 Web 全局
question_basket_context,至少包含basket_id、question_count、total_score、question_ids、source_page。 - 从报告页下钻到
t_error_analysis.html或t_student_evaluation.html时,需透传完整report_context,用于子页面返回恢复。
- 需缓存
- 统计口径:
- 提交率 = 已提交人数 / 应提交人数。
- 批改进度 = 已完成最终批改人数 / 已提交人数。
- 题目错误率 = 当前题目错误人数 / 当前题目有效作答人数。
- 学生评价分布 = 当前班级已生成评价的学生人数占比。
- 知识点正确率与掌握情况由后端按统一规则引擎返回,前端不自行计算。
- 埋点:
| 埋点事件 | 触发时机 | 关键参数 |
|---|---|---|
teacher_report_view | 页面首屏渲染完成 | homework_id、class_id、source_page |
teacher_report_refresh_click | 点击 刷新报告 时 | homework_id、class_id、active_tab |
teacher_report_tab_switch | 点击任一页签时 | homework_id、class_id、from_tab、to_tab |
teacher_report_class_switch | 点击班级胶囊时 | homework_id、from_class_id、to_class_id、active_tab |
teacher_report_unsubmitted_open | 打开未提交名单弹窗时 | homework_id、class_id |
teacher_report_unsubmitted_copy | 在未提交名单弹窗执行复制时 | homework_id、class_id、selected_count |
teacher_report_question_filter | 点击 筛选 时 | homework_id、class_id、question_type、knowledge_point_id |
teacher_report_question_sort | 切换排序字段或方向时 | homework_id、class_id、sort_field、sort_order |
teacher_report_basket_add | 点击 加入作业篮 或 取消加入 时 | homework_id、class_id、question_id、action_type |
teacher_report_basket_open | 打开作业篮抽屉时 | homework_id、basket_count、source_tab |
teacher_report_basket_clear | 确认清空作业篮时 | homework_id、basket_count_before |
teacher_report_goto_grading | 点击 批改修正 时 | homework_id、class_id、active_tab |
teacher_report_student_copy | 在学生学情点击 复制名单 时 | homework_id、class_id、student_filter、copied_count |
teacher_report_batch_a_confirm | 确认执行 一键全A 时 | homework_id、class_id、student_filter、affected_count |
teacher_report_drill_error_analysis | 点击 错题分析 或题目卡 错题人数 时 | homework_id、class_id、student_id、question_id、source_tab |
teacher_report_drill_evaluation | 点击 作业评价 时 | homework_id、class_id、student_id、source_tab |