Astro-only / 学生批改详情
周策 老师
Prototype

Astro-only · 学生批改详情

历史单页,当前链路已内聚到 /student/ai-grading。

设计视口: 375 x 812 · 当前缩放: 100% · 左右分栏: 拖动中线调整
Page PRD

AI批改结果

当前文档: prds/作业管理模块/student/s_ai_grading.md

当前对照重点: AI批改结果
Review Hint

左侧现在支持三种演示模式: 默认按设计稿完整缩放、按宽度铺满、以及 100% 原始尺寸滚动查看。 右侧默认读取当前页面对应的页面级 PRD,而不是整本总 PRD;改页面时,直接同步维护这个页面文档即可。

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;只读模式下仅展示结果标签和得分标签。
  • 底部固定操作区在不同模式下动态变化:
    • pendingteacher_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=historyhwKeyrecordIdgradingStatus,页面据此进入未批改详情 / 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 至少保存 fromhwKeyrecordIdgradingStatushomeworkTabsubTabpersonalStatusscroll_topcurrent_question_idzoom_ratioupdated_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模式下提交成功后提示修正已提交,教师确认后将更新,随后返回来源页;当前页不新增第四种“修正已提交”标题模式。

页面跳转和返回逻辑

  • 从作业列表进入:
    • 入口为 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 范围内逐题修改。
  • 提交修正结果 的“批量”仅限于:一次点击可提交当前记录内所有已修改的小题,不跨记录、不跨作业。
  • 记录弹层中的点击行为只作用于被点击的单条记录;不会同时修改其他记录的批改状态、筛选状态或来源页排序。

异常描述

异常场景处理方式
recordIdhwKey 缺失,或当前记录详情接口返回不存在/越权页面不进入白屏;展示错误占位,文案为当前批改详情不可查看,并提供返回按钮。点击后按来源页回跳逻辑离开本页。
当前记录仍处于未批改阶段页面以未批改详情模式展示卷面和答案解析,不展示任何修正入口;提示文案固定为未批改(仅查看)
传入的 gradingStatus 非法前端按 ai_graded 兜底打开,但仍需用真实详情接口返回状态覆盖;若接口返回为空,则展示详情加载失败态。
教师已在其他端完成最终批改,但本页缓存仍停留在 AI模式页面重新进入或下拉刷新后必须用最新服务端结果覆盖,切换为教师批改结果模式;不得继续允许学生提交修正。参见 R52。
原卷图片或卷面渲染失败卷面区展示占位提示原卷加载失败,请稍后重试,保留导航和底部返回按钮;题目面板不自动展开。
点击热区后未找到对应题目数据当前页不跳转,关闭或不展开面板,并 Toast 提示暂未找到该题批改内容
分数输入超出范围或输入非法字符系统将输入值自动裁剪到 0 ~ max_score 范围;非法空值、非数字回退为当前生效分数,不写入异常值。
pending / teacher_graded 模式下触发修正提交或编辑事件当前页保持不变,统一提示当前状态不可提交修正;不允许透过异常点击修改最终成绩。
AI模式下点击提交修正结果但没有任何修改项当前页保持不变,提示您未修改任何题目,不发起提交请求。
修正提交接口失败、网络中断或超时保留当前页和所有本地修正结果,不自动回滚到 AI原始结果;提示提交失败,请稍后重试网络连接异常,请检查后重试
打开提交记录弹层时列表加载失败弹层正文展示提交记录加载失败重试入口;关闭按钮和遮罩关闭仍可用。
点击弹层中的某条记录后目标记录已失效当前页停留在原记录,不关闭弹层,并提示当前提交记录已不可查看
来源页上下文恢复失败返回时按默认回退路径处理:优先 s_history.htmls_homework_list.html,若来源必要参数缺失则回到 s_homework_list.html?homeworkTab=paper&subTab=library;不得停留在空白页。

数据需求

  • 接口:

    • 批改详情接口:
      • 入参至少包含 student_idrecord_idhw_keysource_pagefrom
      • 出参至少包含 grading_statuscorrection_statuspage_countcurrent_page_nozoom_ratio_defaultquestion_listquestion_hotzonespaper_pages
    • 题目结果数据结构:
      • 每个 question 至少包含 question_idsection_titlepassagequestion_type_summarycards
      • 每个 card 至少包含 card_idtitletypeansweranalysisitems
      • 每个 item 至少包含 item_idlabelstudent_answermax_scoreai_judgeai_scoreteacher_judgeteacher_scoreeditable_in_ai_mode
    • 修正提交接口:
      • 入参至少包含 record_idhw_keystudent_idfromcorrections[]
      • corrections[] 每项至少包含 item_idjudgescoremax_scoresource=student
      • 成功后返回最新 correction_status,至少支持 submitted,供来源页或再次进入本页时判断是否已有学生修正待教师确认。
    • 提交记录弹层接口:
      • 返回当前学生可查看的提交记录列表,字段至少包含 record_idhw_keyhomework_namesubmit_timegrading_status
      • 记录列表允许跨不同作业切换,不限制为当前 hw_key 的历史记录集合。
    • 刷新与同步:
      • 页面重新进入、下拉刷新或重新切换到前台时,必须重新拉取当前记录详情。
      • 若教师端已保存最终结果,服务端应返回 grading_status=teacher_graded,前端立即切换到教师只读模式。参见 R52。
  • 状态与字段约束:

    • 页面模式只接受 pending / ai_graded / teacher_graded 三种展示模式;其中:
      • pending:只读,无批改标记,无提交修正按钮。
      • ai_graded:可编辑,可提交修正。
      • teacher_graded:只读,展示教师最终成绩与判定。
    • correction_statusgrading_status 分开建模;至少兼容 none / submitted / confirmed / rejected 或等价状态,不得把“学生修正中”写成正式最终批改状态。
    • student_correcting 只允许作为前端本地编辑态,不得写回服务端作为最终业务状态。
    • 分数到判定的映射固定为:score <= 0 -> wrong0 < score < max_score -> halfscore >= max_score -> correct,前后端必须统一。
    • 原卷热区数据必须与 question_id 一一映射;前端点击热区时不得依赖题目在数组中的固定顺序做业务主键。
    • question_hotzones 至少需包含 question_idpage_noxywidthheightdisplay_order
    • 页面需维护 s_ai_grading_context,用于回跳来源页和恢复当前查看态;历史来源返回时还需依赖 s_history_context 恢复历史筛选、分页和滚动。
  • 埋点:

    • 页面浏览:记录 record_idhw_keyfromgrading_statushomeworkTabsubTabpersonalStatuspage_no
    • 卷面交互:记录热区点击、面板打开/关闭、当前选中 question_id、页码展示值、缩放按钮点击和最终 zoom_ratio
    • 修正过程:记录当前小题从 ai 切换到 student、点击AI批改恢复、判定按钮点击、分数 Stepper 点击、分数输入变更、是否命中边界裁剪。
    • 内容查看:记录摘要展开/收起、标准答案曝光、题目解析曝光。
    • 提交记录弹层:记录弹层打开、关闭、记录项曝光、切换记录点击,需带 target_record_idtarget_hw_keytarget_grading_status
    • 修正提交:记录点击提交修正结果、修改项数量、成功/失败结果、失败原因码、是否因“未修改任何题目”而拦截。
    • 返回行为:记录来源页类型、是否命中上下文恢复、最终回跳目标页。
当前这页已经是“原型 + 页面 PRD”评审工作台。跨页面规则请维护在总览 / 全局规则文档,页面细节请直接维护右侧页面 PRD。
Review Workspace - Prototype + Page PRD