AI批改结果
页面元信息
- 终端:学生端
- Astro 路由:
/student/ai-grading - 原始 HTML:
s_ai_grading.html - 来源章节:
4.4.8 - 维护规则:后续以本页面 PRD 为准;若改动影响通用规则,再同步总览 / 全局规则文档。
视觉描述
- 原型引用:
产出文档/作业管理模块/原型图/s_ai_grading.html。 - 页面为学生端沉浸式结果查看页,自上而下由
导航栏、卷面查看区、页级工具条、题目批改面板、底部固定操作区、提交记录底部弹层6个层级组成;卷面区为浅灰查看底,题目批改面板自底部上滑覆盖,整体保持移动端单手阅读布局。 - 顶部导航栏左侧为返回图标,中间标题按模式动态切换为
未批改详情、AI批改结果、教师批改结果,右侧为小程序胶囊占位区;页面不展示作业标题、学科、教材、出版社等辅助信息,避免压缩卷面空间。 - 卷面查看区中心为白底试卷画布,画布上叠加题目热区、当前题目高亮态、左右翻页箭头和卷面内联批改标记;内联标记在
pending模式下全部隐藏,在ai_graded / teacher_graded模式下显示。 - 内联批改标记按来源区分颜色:AI结果使用绿色
✓、红色✗、橙色△;教师最终结果沿用正式对错颜色;学生在 AI模式下做过本地修正但尚未提交或尚未离页时,对应卷面标记切换为橙底学生修正态,用于提示“当前看到的是学生本地改判,不是最终成绩”。 - 页级工具条固定贴在卷面底部,左侧为
提交记录,中部为放大 / 缩小,右侧为只读页码文本。原型默认展示第1页,当前版本以单页示例承接,不展示页码输入或快捷跳页。 - 题目批改面板展开后约占屏幕高度 55%,上半卷面区域自动上移;面板头部标题按模式动态切换为
题目答案与解析、题目批改、教师批改详情,右侧模式提示分别为未批改(仅查看)、学生修正模式、教师已批改(只读)。 - 面板正文包含题目摘要区、可折叠题干、题型信息、分题结果卡片、标准答案区、题目解析区。AI可修正模式下,每个小题额外展示
AI批改恢复入口、评对错 / 打分切换器、对错按钮组或分数 Stepper;只读模式下仅展示结果标签和得分标签。 - 底部固定操作区在不同模式下动态变化:
pending、teacher_graded:仅展示返回单按钮,按钮横向铺满。ai_graded:展示左侧返回次按钮和右侧提交修正结果主按钮。
- 提交记录底部弹层由遮罩层和底部抽屉组成;弹层头部固定标题
提交记录和关闭按钮,正文按单次提交批次展示可切换记录列表,当前查看记录高亮。
功能描述
- 业务规则:R14、R15、R18、R52、R53、R73、R95。
- 页面入口与模式判定:
- 正式列表入口来自
s_homework_list.html的个性化作业卡片:- 当卡片状态为
待批改(未批改阶段)时,不允许查看批改详情,卡片不展示查看批改结果按钮。 - 当卡片状态为
AI已批改时,点击查看批改结果进入s_ai_grading.html?from=list&hwKey={hw_key}&recordId={record_id}&gradingStatus=ai_graded&homeworkTab=personal&personalStatus={当前筛选},页面以AI批改结果模式打开。 - 当卡片状态为
已完成时,点击查看批改结果进入s_ai_grading.html?from=list&hwKey={hw_key}&recordId={record_id}&gradingStatus=teacher_graded&homeworkTab=personal&personalStatus={当前筛选},页面以教师批改结果模式打开。
- 当卡片状态为
- 从
s_history.html点击查看批改详情进入时,必须透传from=history、hwKey、recordId、gradingStatus,页面据此进入未批改详情 / AI批改结果 / 教师批改结果3种模式。参见 4.4.7。 - 本页内点击
提交记录弹层中的其他记录时,直接在当前页重载目标记录,不经过s_history.html中转;新的 URL 需覆盖hwKey / recordId / gradingStatus,并保持原入口来源from不变。即:从历史页进入后切换记录,仍按from=history处理返回;从列表进入后切换记录,仍按from=list处理返回。 - 参数归一化规则:
gradingStatus仅接受pending / ai_graded / teacher_graded,传入其他值时默认按ai_graded打开。homeworkTab仅接受personal / paper,非法值默认回落为paper。subTab仅接受my,其他值默认回落为library。personalStatus未传时默认按all保存返回上下文,不改变当前记录查看权限范围。
- 页面只允许查看当前登录学生本人账号有权访问的批改记录;家长/监护人仅可在学生已登录且已绑定的协助场景下代为操作,不形成独立的修正提交主体。参见 R18、R53。
- 页面每次进入、重新进入或下拉刷新时都必须重新请求当前
recordId对应的最新批改详情;若教师已在其他端完成最终批改,则必须以最新教师结果覆盖此前 AI结果或学生本地修正结果。参见 R52。
- 正式列表入口来自
- 页面上下文
s_ai_grading_context至少保存from、hwKey、recordId、gradingStatus、homeworkTab、subTab、personalStatus、scroll_top、current_question_id、zoom_ratio、updated_at,用于记录切换和来源页返回恢复。 - 正式入口边界:
- 当前版本不在本页新增显式
查看分析按钮,学生若需查看作业分析,仍从s_homework_list.html卡片入口进入s_homework_report.html。参见 R95。 - 若历史兼容链路通过
from=grading打开s_homework_report.html,仅用于保证报告页返回时可正确回到本页;该链路不计入学生端正式主流程,也不作为 UI、测试验收时必须露出的显式入口。参见 R95。
- 当前版本不在本页新增显式
页面分区与控件交互
- 本页按
导航栏、卷面查看区、页级工具条、题目批改面板、底部固定操作区、提交记录底部弹层6个交互分区展开说明。
导航栏
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
| 左侧返回图标 | 始终展示 | 点击后立即执行返回逻辑;本页不弹“未提交修正确认”二次确认框,当前尚未提交的本地修正结果直接丢弃。 |
| 中间标题 | 始终展示 | 根据 gradingStatus 动态切换:pending -> 未批改详情、ai_graded -> AI批改结果、teacher_graded -> 教师批改结果;标题不展示作业名,不随选中题目变化。 |
| 右侧胶囊占位 | 始终展示 | 不承接业务点击事件,不触发跳转,不参与业务埋点。 |
卷面查看区
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
| 当前记录原卷预览 | 始终展示 | 展示当前 recordId 对应答卷的当前页内容;卷面标题文案按模式动态切换为学生原卷预览 · 未批改状态(无批改标记)、AI批改原卷预览 · 点击题目区域查看批改内容、教师批改原卷预览 · 点击题目区域查看批改内容。 |
| 卷面内联批改标记 | ai_graded / teacher_graded 模式展示;pending 模式隐藏 | pending 模式仅展示学生原始作答,不叠加任何对错标记;ai_graded 模式展示 AI 或学生本地修正后的对错标记;teacher_graded 模式展示教师最终结果标记。学生在 AI模式下改判后,对应标记立即切换为学生修正色,离页前一直保留。 |
| 题目热区 | 当前页存在题目时展示 | 点击任一题目热区后,高亮当前题目并上滑展开题目批改面板;再次点击同一题目热区不重复刷新,只保持高亮态。点击其他题目热区则切换高亮并刷新面板内容。 |
热区角标 第N题 | 仅当前题目热区高亮时展示 | 常态隐藏;热区被选中后显示角标,帮助学生确认当前查看的是哪一道题。 |
| 卷面空白区域 | 面板展开时可点击 | 点击后仅收起题目批改面板并取消题目高亮,不丢失本地未提交修正结果;再次点击热区时恢复之前的本地修正状态。 |
| 左右翻页箭头 | 原型中常驻展示 | 当前版本以单页结果查看为正式范围;箭头保留视觉占位,但点击不改变页码、不切换卷面、不切换题目。正式实现若服务端仅返回单页,应表现为置灰不可用;多页翻页能力不纳入本期验收。 |
页级工具条
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
提交记录 | 始终展示 | 点击打开提交记录底部弹层;弹层中展示当前学生可访问的提交记录列表,点击某条记录后立即重载当前页为该记录的批改结果查看态。 |
放大 | 始终展示 | 以 10% 为步长放大卷面,更新 zoom_ratio;与 缩小 共用同一缩放状态。达到最大值 200% 后按钮保留可见但点击无效。 |
缩小 | 始终展示 | 以 10% 为步长缩小卷面,更新 zoom_ratio;达到最小值 50% 后按钮保留可见但点击无效。 |
第N页 | 始终展示 | 只读展示当前页码;当前版本默认固定为 第1页,不支持点击跳页,不支持页码输入。 |
- 缩放规则:
- 本页当前版本只支持按钮缩放,不支持双指缩放、拖移卷面、长按平移等手势。
- 切换题目、打开/关闭面板、打开/关闭提交记录弹层时,卷面缩放比例不自动重置;切换到其他记录时,
zoom_ratio恢复为该记录上次缓存值,无缓存时默认 100%。
题目批改面板
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
| 面板展开/收起 | 点击热区展开,点击卷面空白收起 | 展开后锁定当前题目上下文,仅刷新当前题目的摘要和结果卡片;收起后不清空本地修正缓存。 |
| 面板标题 | 面板展开时始终展示 | 根据模式动态切换:pending -> 题目答案与解析、ai_graded -> 题目批改、teacher_graded -> 教师批改详情。 |
| 模式提示文案 | 面板展开时始终展示 | 根据模式动态切换:pending -> 未批改(仅查看)、ai_graded -> 学生修正模式、teacher_graded -> 教师已批改(只读);只读模式下文案使用弱化样式,不可点击。 |
| 题目摘要 | 面板展开后展示 | 展示当前题目的分区标题和题干摘要;当题目无独立题干、仅有类型信息时,摘要区可只展示题型标签。 |
∨ 展开 / ∧ 收起 | 仅当当前题目存在长题干时展示 | 默认收起长题干;点击后在完整题干与折叠题干间切换。展开后按钮文案变为∧ 收起,收起后恢复∨ 展开。 |
| 小题标签 | 当当前题目下存在多个可判分小题时展示 | 多小题场景下按 空1 / 空2 / 判断 / 结果 等标签逐项展示;单小题场景下不额外展示标签占位。 |
| 只读结果标签 | pending / teacher_graded 模式展示 | pending 模式固定展示未批改标签;teacher_graded 模式展示教师最终判定标签,且追加教师批改、得分 X/Y标签。 |
AI批改 恢复入口 | 仅 ai_graded 模式展示 | 点击后将当前小题恢复为 AI 原始结果,清空学生本地修正值,并即时刷新卷面内联标记和卡片样式;若当前小题本来就是 AI原始结果,点击后仍反馈“已恢复AI批改结果”。 |
评对错 / 打分 切换器 | 仅 ai_graded 模式展示 | 默认停留在评对错;点击打分后切换为分数编辑面板,再次点击评对错回到判定面板。切换仅作用于当前小题,不影响其他小题。 |
✓ / ✗ / △ 对错按钮 | 仅 ai_graded + 评对错 模式展示 | 点击后把当前小题来源从 ai 切换为 student,并同步写入判定和对应分数。若学生已经把当前小题改成某个判定,再次点击同一个判定按钮,则直接恢复 AI 原始结果。 |
分数 Stepper - / 输入框 / + | 仅 ai_graded + 打分 模式展示 | -、+ 每次按 1 分步进调整;输入框允许直接输入数值;系统实时做 0 到 max_score 的边界校验并回填合法值。 |
| 分数与判定映射 | 仅 ai_graded + 打分 模式生效 | 当分数 <=0 时判定自动映射为错误;当分数 >= max_score 时自动映射为正确;当分数大于 0 且小于 max_score 时自动映射为部分正确。卷面标记和卡片状态随映射同步变化。 |
| 标准答案区 | 面板展开后始终展示 | 固定展示 标准答案:{answer};不支持复制、不支持跳转到其他页面。 |
| 题目解析区 | 面板展开后始终展示 | 优先展示服务端返回的解析内容;若解析为空,则展示兜底文案请结合标准答案与课堂讲解理解本题思路。。 |
底部固定操作区
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
返回 | 始终展示 | 与导航栏返回执行同一套回跳逻辑;不区分点击位置,不增加额外确认。 |
提交修正结果 | 仅 ai_graded 模式展示 | 点击后只收集当前 recordId 下来源为 student 且与 AI原始结果存在差异的小题。若没有任何差异项,则停留当前页并提示您未修改任何题目;若提交成功,则提示修正已提交,教师确认后将更新,并在 1 秒后返回来源页。 |
提交记录底部弹层
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
| 遮罩层 | 弹层打开时展示 | 点击遮罩关闭弹层,不切换当前记录,不影响当前题目本地修正。 |
标题 提交记录 | 弹层打开时始终展示 | 固定文案,不追加作业名或记录数量。 |
关闭 | 弹层打开时始终展示 | 关闭弹层,不修改当前记录。 |
| 记录列表项 | 弹层打开时展示 | 每行展示作业标题、提交日期和状态标签;当前 recordId 对应行高亮。点击某行后立即重载当前页到该记录,不需要二次确认。 |
| 状态标签 | 每条记录固定展示 | 按 gradingStatus 映射为 未批改 / AI已批改 / 教师已批改;该标签仅在本弹层中用于辅助切换,不额外回流到外层页面头部。 |
- 弹层规格:
弹层 1:提交记录底部弹层
| 要素 | 内容 |
|---|---|
| 触发条件 | 点击页级工具条 提交记录 |
| 标题 | 提交记录 |
| 正文 | 展示当前学生可见的提交记录单列列表;每项展示作业标题、提交日期、状态标签,当前记录高亮 |
| 主按钮 | 无独立主按钮;点击某条记录立即生效并跳转到目标记录 |
| 次按钮 | 关闭 → 关闭弹层,不切换记录 |
| [x] 关闭 | 同点击遮罩或关闭 |
文案和按钮状态变化
- 模式文案变化:
pending:页面标题=未批改详情,面板标题=题目答案与解析,模式提示=未批改(仅查看)。ai_graded:页面标题=AI批改结果,面板标题=题目批改,模式提示=学生修正模式。teacher_graded:页面标题=教师批改结果,面板标题=教师批改详情,模式提示=教师已批改(只读)。
- 底部按钮变化:
pending / teacher_graded:隐藏提交修正结果,返回按钮扩展为整行宽度。ai_graded:返回和提交修正结果并列展示;提交修正结果默认可点击,不因“尚未修改”而提前置灰。
- 结果项文案变化:
pending模式每个结果项只显示未批改标签,不显示得分、不显示学生可编辑控件。teacher_graded模式每个结果项显示教师最终判定标签,并追加教师批改、得分 X/Y标签。ai_graded模式下,当前小题一旦被学生改判,其按钮高亮、卷面标记和分数 Stepper 视觉来源都切换为学生修正态;恢复 AI结果后重新切回 AI来源样式。
- 摘要文案变化:
- 题干折叠时按钮文案固定为
∨ 展开;展开后切换为∧ 收起。 - 题目解析缺失时,解析区展示兜底文案
请结合标准答案与课堂讲解理解本题思路。
- 题干折叠时按钮文案固定为
- 提交反馈文案变化:
- 当前不是 AI可修正模式时,若通过异常链路触发提交,统一提示
当前状态不可提交修正。 - AI模式下未做任何改动直接点击
提交修正结果,提示您未修改任何题目。 - AI模式下点击
AI批改恢复入口,或在评对错模式下重复点击当前已选中的同一判定按钮,提示已恢复AI批改结果。 - AI模式下提交成功后提示
修正已提交,教师确认后将更新,随后返回来源页;当前页不新增第四种“修正已提交”标题模式。
- 当前不是 AI可修正模式时,若通过异常链路触发提交,统一提示
页面跳转和返回逻辑
- 从作业列表进入:
- 入口为
s_homework_list.html个性化作业卡片的查看批改结果。 - 返回时必须回到
s_homework_list.html并恢复离开前的homeworkTab / personalStatus / subTab / scroll_top;若上下文缺失,则默认回到s_homework_list.html?homeworkTab=paper&subTab=library。参见 R73。
- 入口为
- 从提交记录进入:
- 入口为
s_history.html卡片上的查看批改详情。 - 返回时必须优先回到
s_history.html,并恢复s_history_context中的筛选条件、分页和滚动位置;不得错误跳回作业列表。参见 4.4.7。
- 入口为
- 在本页内打开
提交记录弹层并切换记录:- 点击某条记录后立即重载本页为新记录;来源参数
from保持原值不变。 - 记录切换后,原先展开的题目面板默认关闭,题目高亮清空;新记录按默认态重新加载卷面和题目热区。
- 若当前记录存在未提交的本地修正,切换记录时不弹确认框,直接丢弃未提交内容。
- 点击某条记录后立即重载本页为新记录;来源参数
- 点击
提交修正结果成功:- 调用修正提交接口成功后,提示成功文案,并在 1 秒后执行与当前来源一致的返回逻辑。
- 返回后来源页若再次进入本页,需以服务端最新
gradingStatus / correction_status为准,不保留上次离页前的本地修正缓存。
批量操作范围
- 本页不支持多选多条提交记录,不支持批量切换记录、批量删除、批量导出。
- 本页不支持“全题一键认可”“全题一键恢复 AI”“批量提交多个记录修正”;学生只能在当前
recordId范围内逐题修改。 提交修正结果的“批量”仅限于:一次点击可提交当前记录内所有已修改的小题,不跨记录、不跨作业。- 记录弹层中的点击行为只作用于被点击的单条记录;不会同时修改其他记录的批改状态、筛选状态或来源页排序。
异常描述
| 异常场景 | 处理方式 |
|---|---|
recordId、hwKey 缺失,或当前记录详情接口返回不存在/越权 | 页面不进入白屏;展示错误占位,文案为当前批改详情不可查看,并提供返回按钮。点击后按来源页回跳逻辑离开本页。 |
| 当前记录仍处于未批改阶段 | 页面以未批改详情模式展示卷面和答案解析,不展示任何修正入口;提示文案固定为未批改(仅查看)。 |
传入的 gradingStatus 非法 | 前端按 ai_graded 兜底打开,但仍需用真实详情接口返回状态覆盖;若接口返回为空,则展示详情加载失败态。 |
| 教师已在其他端完成最终批改,但本页缓存仍停留在 AI模式 | 页面重新进入或下拉刷新后必须用最新服务端结果覆盖,切换为教师批改结果模式;不得继续允许学生提交修正。参见 R52。 |
| 原卷图片或卷面渲染失败 | 卷面区展示占位提示原卷加载失败,请稍后重试,保留导航和底部返回按钮;题目面板不自动展开。 |
| 点击热区后未找到对应题目数据 | 当前页不跳转,关闭或不展开面板,并 Toast 提示暂未找到该题批改内容。 |
| 分数输入超出范围或输入非法字符 | 系统将输入值自动裁剪到 0 ~ max_score 范围;非法空值、非数字回退为当前生效分数,不写入异常值。 |
在 pending / teacher_graded 模式下触发修正提交或编辑事件 | 当前页保持不变,统一提示当前状态不可提交修正;不允许透过异常点击修改最终成绩。 |
AI模式下点击提交修正结果但没有任何修改项 | 当前页保持不变,提示您未修改任何题目,不发起提交请求。 |
| 修正提交接口失败、网络中断或超时 | 保留当前页和所有本地修正结果,不自动回滚到 AI原始结果;提示提交失败,请稍后重试或网络连接异常,请检查后重试。 |
打开提交记录弹层时列表加载失败 | 弹层正文展示提交记录加载失败和重试入口;关闭按钮和遮罩关闭仍可用。 |
| 点击弹层中的某条记录后目标记录已失效 | 当前页停留在原记录,不关闭弹层,并提示当前提交记录已不可查看。 |
| 来源页上下文恢复失败 | 返回时按默认回退路径处理:优先 s_history.html 或 s_homework_list.html,若来源必要参数缺失则回到 s_homework_list.html?homeworkTab=paper&subTab=library;不得停留在空白页。 |
数据需求
-
接口:
- 批改详情接口:
- 入参至少包含
student_id、record_id、hw_key、source_page、from。 - 出参至少包含
grading_status、correction_status、page_count、current_page_no、zoom_ratio_default、question_list、question_hotzones、paper_pages。
- 入参至少包含
- 题目结果数据结构:
- 每个
question至少包含question_id、section_title、passage、question_type_summary、cards。 - 每个
card至少包含card_id、title、type、answer、analysis、items。 - 每个
item至少包含item_id、label、student_answer、max_score、ai_judge、ai_score、teacher_judge、teacher_score、editable_in_ai_mode。
- 每个
- 修正提交接口:
- 入参至少包含
record_id、hw_key、student_id、from、corrections[]。 corrections[]每项至少包含item_id、judge、score、max_score、source=student。- 成功后返回最新
correction_status,至少支持submitted,供来源页或再次进入本页时判断是否已有学生修正待教师确认。
- 入参至少包含
- 提交记录弹层接口:
- 返回当前学生可查看的提交记录列表,字段至少包含
record_id、hw_key、homework_name、submit_time、grading_status。 - 记录列表允许跨不同作业切换,不限制为当前
hw_key的历史记录集合。
- 返回当前学生可查看的提交记录列表,字段至少包含
- 刷新与同步:
- 页面重新进入、下拉刷新或重新切换到前台时,必须重新拉取当前记录详情。
- 若教师端已保存最终结果,服务端应返回
grading_status=teacher_graded,前端立即切换到教师只读模式。参见 R52。
- 批改详情接口:
-
状态与字段约束:
- 页面模式只接受
pending / ai_graded / teacher_graded三种展示模式;其中:pending:只读,无批改标记,无提交修正按钮。ai_graded:可编辑,可提交修正。teacher_graded:只读,展示教师最终成绩与判定。
correction_status与grading_status分开建模;至少兼容none / submitted / confirmed / rejected或等价状态,不得把“学生修正中”写成正式最终批改状态。student_correcting只允许作为前端本地编辑态,不得写回服务端作为最终业务状态。- 分数到判定的映射固定为:
score <= 0 -> wrong、0 < score < max_score -> half、score >= max_score -> correct,前后端必须统一。 - 原卷热区数据必须与
question_id一一映射;前端点击热区时不得依赖题目在数组中的固定顺序做业务主键。 question_hotzones至少需包含question_id、page_no、x、y、width、height、display_order。- 页面需维护
s_ai_grading_context,用于回跳来源页和恢复当前查看态;历史来源返回时还需依赖s_history_context恢复历史筛选、分页和滚动。
- 页面模式只接受
-
埋点:
- 页面浏览:记录
record_id、hw_key、from、grading_status、homeworkTab、subTab、personalStatus、page_no。 - 卷面交互:记录热区点击、面板打开/关闭、当前选中
question_id、页码展示值、缩放按钮点击和最终zoom_ratio。 - 修正过程:记录当前小题从
ai切换到student、点击AI批改恢复、判定按钮点击、分数 Stepper 点击、分数输入变更、是否命中边界裁剪。 - 内容查看:记录摘要展开/收起、标准答案曝光、题目解析曝光。
- 提交记录弹层:记录弹层打开、关闭、记录项曝光、切换记录点击,需带
target_record_id、target_hw_key、target_grading_status。 - 修正提交:记录点击
提交修正结果、修改项数量、成功/失败结果、失败原因码、是否因“未修改任何题目”而拦截。 - 返回行为:记录来源页类型、是否命中上下文恢复、最终回跳目标页。
- 页面浏览:记录