作业分析
页面元信息
- 终端:学生端
- Astro 路由:
/student/homework-report - 原始 HTML:
s_homework_report.html - 来源章节:
4.4.9 - 维护规则:后续以本页面 PRD 为准;若改动影响通用规则,再同步总览 / 全局规则文档。
视觉描述
- 原型引用:
产出文档/作业管理模块/原型图/s_homework_report.html。 - 页面为学生端单作业分析页,整体采用移动端纵向滚动单列布局,自上而下固定包含
导航栏、学生信息头卡、作业评价与核心指标卡、知识点掌握分析卡、错题分布卡、学生提交原卷卡6个区域;页面不展示底部固定操作区,不提供分享、导出、筛选或记录切换入口。参见 R90、R94。 - 顶部导航栏左侧为返回按钮,中间标题固定为
作业报告,右侧为小程序胶囊占位;导航栏只承担回跳功能,不展示更多业务菜单。 - 学生信息头卡使用蓝色渐变背景,展示学生头像占位、学生姓名、班级名称、最近一次形成当前报告口径的批改时间4项信息;头像为圆形首字占位,不展示学号、手机号等隐私字段。参见 R18。
作业评价与核心指标卡由上下两层组成:上层左侧展示作业标题、作业ID、题目结构、备注,右侧展示作业评价字样与评级大字;下层固定为2×2指标宫格,依次展示学生正确率、班级正确率、学生得分、班级得分。- 标题区动态规则遵循原型:当入口透传
bookInfo时,标题直接使用bookInfo且不追加教研院标签;当bookInfo缺失时,标题回退为报告内作业标题,并在来源标签为教研院时于标题右侧追加来源标签。参见 R92。 知识点掌握分析与错题分布均为白底图表卡片,卡片头部左侧展示标题,右侧展示双色图例;图例下方为并列柱状图容器,每个分组固定对比“学生”与“班级”两组数据。学生提交原卷卡位于页面底部,头部标题固定为学生提交原卷;标题下方为页码 pill 行,当前页 pill 为绿色高亮态,非当前页为灰色普通态;下方为单页原卷预览区域。- 页面需补齐4类界面状态:首屏骨架屏、报告生成中状态、报告空态/失败态、正式报告态。
report_status非ready时,不渲染正式图表和指标数值。参见 R93。
功能描述
- 业务规则:R13、R18、R53、R73、R90、R91、R92、R93、R94、R95。
- 页面入口与来源参数:
- 正式入口一:学生在
s_homework_list.html的纸质教辅作业 > 我的作业中点击查看分析进入本页,需透传from=list&hwKey={hw_key}&bookInfo={book_info}&homeworkTab=paper&subTab=my。参见 4.4.2。 - 正式入口二:学生在
s_homework_list.html的个性化作业 > 已完成卡片中点击查看分析进入本页,需透传from=personal&hwKey={hw_key}&bookInfo={book_info}&homeworkTab=personal&personalStatus={当前筛选}。参见 4.4.2。 - 兼容入口一:原型支持
from=history的兼容来源参数;若外部以from=history打开本页,导航返回时需优先回到s_history.html,并复用历史页既有筛选、分页与滚动恢复逻辑。当前版本不额外新增历史页内显式“查看分析”按钮。 - 兼容入口二:原型支持
from=grading且同时带hwKey、recordId、gradingStatus的兼容来源参数;若外部以该场景打开,返回时需回到s_ai_grading.html,并透传当前批改结果页恢复所需参数。该链路仅作为兼容回跳场景保留,不视为学生端正式入口;当前版本不在s_ai_grading.html新增显式“查看分析”按钮。参见 R91、R95。 - URL 参数归一化规则:
from仅接受list / personal / history / grading,传入其他值时统一按list处理。homeworkTab仅接受paper / personal,非法值默认回落为paper。subTab仅接受my,其他值默认回落为library。personalStatus未传时默认按all保存返回上下文,不改变当前登录学生可见的作业范围。hwKey作为当前报告主查询键优先使用;若缺失,则退回使用homeworkId。标题区展示的作业ID文案优先显示hwKey,无hwKey时显示homeworkId。- 原型中的
studentId仅用于原型预览切换示例数据;正式实现中必须以当前登录学生身份为准,不得允许通过 URL 改写为其他学生数据。若 URL 中studentId与当前登录学生不一致,按越权访问处理。参见 R18、R53。
- 正式入口一:学生在
- 页面范围与默认加载:
- 页面统计范围固定为
当前登录学生本人 + 当前作业;班级维度仅作为该学生所属班级的只读对照基准,不支持切换其他班级、其他学生或其他作业。参见 R90。 - 页面首次进入、重新进入或下拉刷新时,必须重新请求当前
hwKey/homeworkId对应的最新报告摘要;若服务端返回report_status=generating / empty / failed,页面进入对应状态页,不得沿用旧的正式报告缓存冒充最新结果。参见 R93。 - 正式内容渲染顺序为:先请求报告摘要接口获取
report_status、作业基础信息、当前报告绑定的提交记录ID;仅当report_status=ready时,再渲染核心指标、知识点图表、错题图表和原卷分页预览。 - 页面上下文
s_homework_report_context至少保存from、hwKey、homeworkId、bookInfo、homeworkTab、subTab、personalStatus、recordId、gradingStatus、report_record_id、current_preview_page_no、scroll_top、updated_at,用于回跳恢复和同会话内原卷页签记忆。
- 页面统计范围固定为
页面分区与控件交互
- 本页按
导航栏、学生信息头卡、作业评价与核心指标卡、知识点掌握分析卡、错题分布卡、学生提交原卷卡6个交互分区展开说明。
导航栏
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
| 左侧返回按钮 | 始终展示 | 点击后按返回优先级执行回跳:1)from=grading 且存在 hwKey 时,进入 s_ai_grading.html,并透传 from=list、hwKey、recordId、gradingStatus 以及当前 homeworkTab / subTab / personalStatus;2)from=history 时,进入 s_history.html 并透传 source_page=history,同时兼容原型中的 sourcePage=history 命名;3)其他情况返回 s_homework_list.html 并恢复当前页签/筛选上下文。若上下文缺失,则默认回到 s_homework_list.html?homeworkTab=paper&subTab=library。参见 R91。 |
标题 作业报告 | 始终展示 | 固定文案,不随作业名称、评价等级、报告状态或原卷页码变化。 |
| 右侧胶囊占位 | 始终展示 | 不承接业务点击,不打开菜单,不触发页面跳转,不参与业务埋点。 |
学生信息头卡
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
| 学生头像占位 | 始终展示 | 优先展示学生头像;当前无头像上传能力时,以学生姓名首字生成圆形头像占位。只读,不可点击。 |
| 学生姓名 | 始终展示 | 展示当前登录学生姓名;姓名超长时单行省略,不换行撑高头卡。 |
| 班级名称 | 始终展示 | 展示学生当前所属班级,如 二年级(2)班;不附加学校、年级编码、学号等额外字段。 |
| 批改时间 | review_time 有值时展示正式时间;无值时展示 -- | 展示当前报告口径对应的最近一次批改完成时间;不因页面打开时间或本地系统时间变化而自动刷新。 |
作业评价与核心指标卡
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
| 作业标题 | 正式报告态始终展示 | 标题优先取入口透传 bookInfo;若 bookInfo 为空,则回退使用 homework_name。标题仅展示单条文本,不支持点击展开、编辑或复制。参见 R92。 |
教研院 来源标签 | 仅当 bookInfo 为空且 source_label=教研院 时展示 | 标签固定展示在标题右侧;若标题已采用透传 bookInfo,则必须隐藏该标签,不得出现“书名 + 教研院”双重来源文案。参见 R92。 |
作业ID | 正式报告态展示 | 文案格式固定为 作业ID: {hw_key 或 homework_id};无复制按钮、无点击跳转。 |
题目结构 | 正式报告态展示 | 展示如 选择题10题,填空题5题,解答题2题 的结构摘要;只读,不可点击查看题目列表。 |
备注 | 正式报告态展示 | 展示教师布置作业时填写的备注;为空时显示 无;不支持展开富文本。 |
标题 作业评价 | 始终展示 | 固定文案,只读。 |
| 评价等级 | evaluation_grade 有值时展示 | 展示 A/B/C/D/E 等单值评价;仅作为结果展示,不支持点击查看评级说明,不支持在本页更改。 |
学生正确率 | report_status=ready 时展示正式值 | 前端统一按百分比格式展示,如 86.7%;无值时显示 --,不得显示 0% 占位。 |
班级正确率 | report_status=ready 且班级对比可见时展示正式值 | 有值时按百分比展示;若班级对比数据不可见或服务端未返回,则显示 --,不回填 0。 |
学生得分 | report_status=ready 时展示正式值 | 仅展示得分数字,不附加“分/满分”文案,不跳转题目明细。 |
班级得分 | report_status=ready 且班级对比可见时展示正式值 | 展示班级平均得分;无值时显示 --。 |
- 当前卡片为纯展示区,整卡及内部字段均不响应点击,不跳转
s_history.html、s_ai_grading.html或题目明细页。
知识点掌握分析卡
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
卡片标题 知识点掌握分析 | 始终展示 | 固定文案,不支持改名、折叠或筛选。 |
图例 学生正确率 / 班级正确率 | 正式报告态展示 | 默认展示蓝色学生系列与绿色班级系列;若班级对比数据不可见,则仅保留学生系列说明,并在卡片内补充辅助文案 仅展示我的数据。 |
| 柱状图分组 | knowledge_stats[] 非空时展示 | 按接口返回顺序逐组渲染,不额外排序。每组固定渲染学生与班级2根柱。学生/班级正确率按百分比映射柱高,计算基准固定为 100;为避免低值在移动端完全不可见,单柱最小视觉高度为 6px,但不改变真实统计值。 |
| 知识点标签 | 随每组柱图一起展示 | 展示当前分组对应的知识点名称;名称过长时单行省略,不支持点击展开或进入知识点详情。 |
- 本期知识点分析卡只承接“浏览当前学生与班级对比”能力,不扩展到知识点筛选、查看题目列表、查看解析或跳转错题本。
错题分布卡
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
卡片标题 错题分布 | 始终展示 | 固定文案,不支持点击。 |
图例 学生错题 / 班级错题 | 正式报告态展示 | 默认展示蓝色学生系列与绿色班级系列;若班级对比数据不可见,则仅保留学生系列说明,并在卡片内补充辅助文案 仅展示我的数据。 |
| 柱状图分组 | error_stats[] 非空时展示 | 按接口返回顺序展示题型或错题分类分组;每组固定2根柱,分别表示学生错题数和班级错题数。柱高换算基准取 max(当前结果集中最大错题数, 4),以兼容原型示例的 4 档高度;单柱最小视觉高度为 6px,但不改变真实统计值。 |
| 分类标签 | 随每组柱图一起展示 | 展示 填空题、单选题 等分类名称;只读,不可点击。 |
- 本期错题分布卡不提供点击题型进入错题详情、筛选题型、切换排序或查看做错题目名单的能力。
学生提交原卷卡
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
卡片标题 学生提交原卷 | report_status=ready 时展示 | 固定文案,只读,不支持点击。 |
| 页码 pill | report_pages[] 长度大于等于 1 时展示 | 按 page_no 升序渲染。默认第1个可预览页为激活态;当前页使用绿色高亮样式,非当前页使用灰色普通态。点击非当前页 pill 时,仅切换当前预览页并刷新下方原卷图片,不刷新评价、指标和图表;点击当前激活 pill 不重复请求。参见 R94。 |
| 原卷预览框 | 当前存在有效预览页时展示 | 加载当前页原卷图片;切页时显示局部 Loading/Skeleton,成功后替换为目标页图片。预览区为只读浏览,不支持缩放、长按保存、下载、批注或切换其他提交记录。 |
| 原卷空态占位 | 当前报告绑定记录无原卷图片时展示 | 显示图片占位图标与文案 暂无原卷预览 或 原卷图片暂不可用;不额外弹窗,不跳转提交记录页。 |
- 当前页面的原卷预览固定绑定当前报告对应的
report_record_id;即使当前作业存在多次历史提交,本页也不提供记录切换控件,不允许从报告页切换其他提交记录。参见 R94。 - 当原卷仅有 1 页时,只渲染 1 个激活态页码 pill;不为不存在的页码补灰色占位 pill。
文案和按钮状态变化
- 页面标题始终固定为
作业报告,不会随着作业名、评价等级或报告状态变化成其他变体文案。 - 标题区动态渲染遵循原型逻辑:
bookInfo有值时,标题直接展示bookInfo且隐藏教研院标签;bookInfo为空时,标题使用报告返回的homework_name,并按source_label判定是否展示教研院标签。参见 R92。 - 评价等级、4个核心指标、2张图表和原卷页签均随当前报告数据变化;本页不提供学生切换控件,因此不会发生“局部换学生”刷新。
学生正确率 / 班级正确率固定展示为百分比,学生得分 / 班级得分固定展示为纯数字;任一字段缺失时展示--,不得展示0占位。- 知识点图表与错题图表的单柱最小视觉高度固定为 6px;即使真实值为 0,也允许保留最小视觉柱高,以避免移动端分组完全消失。测试验证时应以接口值为准,不以柱高像素推断真实统计值。
- 原卷页码 pill 的状态切换规则固定为:当前页
active绿色高亮,非当前页inactive灰色普通态;切页后只切换 pill 样式和原卷图片,不联动其他卡片内容。
页面跳转和返回逻辑
- 从
s_homework_list.html点击查看分析进入本页后,来源页必须保留离开前的homeworkTab / subTab / personalStatus / scroll_top上下文。参见 R73。 - 本页正式主链路仅承接作业列表卡片上的
查看分析按钮;from=grading仅用于兼容返回,不作为测试验收时必须可见的显式入口。参见 R95。 - 导航返回的具体逻辑如下:
- 当
from=personal时,返回s_homework_list.html?homeworkTab=personal&personalStatus={当前 personalStatus},并恢复个性化作业列表筛选和滚动位置。 - 当
from=list时,返回s_homework_list.html?homeworkTab=paper&subTab={当前 subTab},并恢复纸质教辅页签和滚动位置;当前正式入口默认subTab=my。 - 当
from=history时,返回s_history.html并复用s_history_context恢复日期/状态/学科筛选、分页和滚动位置;正式实现统一透传source_page=history,同时兼容原型中的sourcePage=history命名。 - 当
from=grading且存在hwKey时,返回s_ai_grading.html,并透传from=list、hwKey、recordId、gradingStatus以及当前列表上下文;该行为与原型兼容逻辑保持一致。参见 R91。 - 当来源参数缺失或非法时,默认返回
s_homework_list.html?homeworkTab=paper&subTab=library。
- 当
- 本页当前版本不提供跳转
s_history.html、s_ai_grading.html、错题详情页、知识点详情页、题目详情页的显式按钮;所有图表与卡片均为页内只读浏览。
批量操作范围
- 本页不支持批量操作,不提供批量导出、批量分享、批量加入错题本、批量下载原卷或批量切换提交记录。
- 图表中的“班级”仅表示当前学生所属班级的对照数据,不支持一次加载多班对比,也不支持跨学生横向对比。参见 R90。
- 原卷页码切换仅作用于
当前报告绑定提交记录下的页级预览,不跨记录、不跨作业生效。参见 R94。
异常描述
| 异常场景 | 处理方式 |
|---|---|
hwKey / homeworkId 缺失、失效或不属于当前登录学生 | Toast 提示 未找到对应作业分析,随后按返回优先级回到来源页;不得展示任何学生姓名、分数、班级对比或原卷内容。参见 R18。 |
URL 中 studentId 与当前登录学生不一致 | 按越权访问处理:Toast 提示 您暂无权限查看该作业分析,随后返回来源页;不得读取或缓存目标学生数据。参见 R18、R53。 |
| 页面首次加载失败 | 页面主体展示错误态和 重试 按钮;点击 重试 重新请求报告摘要和内容接口。导航返回仍保持可用。 |
report_status=generating | 页面展示状态文案 作业分析生成中,请稍后查看;不渲染正式评价、得分、图表与原卷页签,不以骨架屏长期占位。参见 R93。 |
report_status=empty | 页面展示空态文案 暂无分析数据,请稍后重试;保留导航返回,不以 0 值填充任何指标。参见 R93。 |
report_status=failed | 页面展示错误态文案 作业分析生成失败,请稍后重试 和 重试 按钮;点击重试重新请求报告。参见 R93。 |
| 班级对比数据不可见或服务端未返回 | 指标卡中的 班级正确率、班级得分 显示 --;2张图表仅渲染学生系列,并在卡片内补充 仅展示我的数据 提示;不得把班级数据回填为 0。 |
| 知识点分析为空 | 保留卡片标题,图表区展示空态文案 暂无知识点分析数据。 |
| 错题分布为空 | 保留卡片标题,图表区展示空态文案 暂无错题分布数据。 |
| 原卷分页为空或原卷图片缺失 | 保留 学生提交原卷 卡片标题;若无页码则展示 暂无原卷预览;若有页码但图片加载失败,则保留页码 pill 并展示 原卷图片暂不可用。 |
| 原卷切页失败 | 保持当前已成功展示的原卷页不变,Toast 提示 原卷加载失败,请稍后重试;不得清空已加载的其他卡片内容。 |
| 报告数据与最新批改结果存在同步延迟 | 页面展示最近一次成功生成的报告结果;当学生重新进入页面或下拉刷新时,若服务端已完成刷新,则以最新报告覆盖旧内容。若尚未刷新完成,则展示 作业分析生成中,请稍后查看。 |
数据需求
- 接口:
- 学生作业分析摘要接口:根据
hwKey/homeworkId + 当前登录学生ID返回报告状态、学生基础信息、作业基础信息、评价等级、4个核心指标以及当前报告绑定的提交记录ID。 - 知识点掌握接口:返回
knowledge_stats[],用于渲染学生正确率 vs 班级正确率柱状图。 - 错题分布接口:返回
error_stats[],用于渲染学生错题数 vs 班级错题数柱状图。 - 报告原卷分页接口:返回当前报告绑定提交记录下的
report_pages[],用于渲染页码 pill 和原卷图片预览。
- 学生作业分析摘要接口:根据
- 请求参数:
hw_key或homework_idhomework_tabfromrecord_id(仅from=grading兼容场景透传)grading_status(仅from=grading兼容场景透传)page_no(切换原卷页码时传递)
- 返回字段建议:
- 学生信息:
student_id、student_name、student_avatar、class_id、class_name、review_time - 作业信息:
hw_key、homework_id、homework_name、book_info、question_structure_text、remark、source_label - 报告摘要:
report_status、evaluation_grade、student_accuracy、class_accuracy、student_score、class_score、report_record_id - 知识点图表:
knowledge_stats[].knowledge_name、knowledge_stats[].student_accuracy、knowledge_stats[].class_accuracy - 错题图表:
error_stats[].category_name、error_stats[].student_wrong_count、error_stats[].class_wrong_count - 原卷分页:
report_pages[].page_no、report_pages[].image_url、report_pages[].image_status
- 学生信息:
- 字段约束:
report_status至少支持ready / generating / empty / failed;仅ready可渲染正式报告内容。参见 R93。student_accuracy、class_accuracy取值范围为 0-100,前端统一按百分比格式展示。student_score、class_score建议返回数值型字段;若缺失,则前端展示--。class_accuracy、class_score允许返回null,用于表达“班级对比数据不可见”,不得强制下发 0 占位。report_record_id为当前报告绑定的唯一提交记录ID;原卷分页接口必须仅返回该记录的页面,不得把其他历史提交记录混入当前报告页。参见 R94。report_pages[]必须按page_no升序返回;若只有 1 页,只返回 1 条记录,不补不存在页。- 标题渲染遵循“入口
bookInfo优先、来源标签后置补位”的规则;当bookInfo已透传时,前端不得再拼接教研院标签。参见 R92。
- 页面状态缓存:
s_homework_report_context至少保存from、hwKey、homeworkId、bookInfo、homeworkTab、subTab、personalStatus、recordId、gradingStatus、report_record_id、current_preview_page_no、scroll_top、updated_at,用于返回来源页与恢复原卷当前页。
- 埋点:
- 页面浏览:
student_homework_report_view,记录hw_key/homework_id、homework_tab、from、report_status - 返回操作:
student_homework_report_back_click,记录from、stay_duration、report_status - 图表曝光:
student_homework_report_knowledge_exposure、student_homework_report_error_exposure - 原卷切页:
student_homework_report_page_switch,记录report_record_id、from_page_no、to_page_no - 状态曝光:
student_homework_report_generating_exposure、student_homework_report_empty_exposure、student_homework_report_failed_exposure - 浏览深度:记录页面滚动到 25%/50%/75%/100% 的曝光节点,用于评估学生是否完整查看作业分析
- 页面浏览: