提交记录
页面元信息
- 终端:学生端
- Astro 路由:
/student/history - 原始 HTML:
s_history.html - 来源章节:
4.4.7 - 维护规则:后续以本页面 PRD 为准;若改动影响通用规则,再同步总览 / 全局规则文档。
视觉描述
- 原型引用:
产出文档/作业管理模块/原型图/s_history.html。 - 页面为学生端历史记录页,整体由
导航栏、筛选胶囊区、提交记录列表区、空状态区、底部固定操作区5个层级构成;背景沿用浅蓝到浅灰渐变样式,列表区为纵向滚动单列卡片流。 - 顶部导航栏左侧为关闭图标,中间标题固定为
提交记录,右侧为小程序胶囊占位区,仅承接系统胶囊视觉,不作为业务入口。 - 导航栏下方为横向筛选胶囊条,包含
全部日期、全部状态、全部学科3个筛选入口;胶囊默认白底灰字,选中后仅替换胶囊文案为当前值,不增加第二行摘要。 - 列表区每张卡片顶部展示提交日期和蓝色时间圆点;主体左侧展示学科色块和学科简称,右侧展示作业名称、可选来源标签
教研院、可选备注、上传结果汇总条和上传结果提示文案;底部为双按钮操作区。 - 正式实现中,原型里的
教师已批改、AI已批改、未批改(AI/教师)标签全部删除,不在卡片中展示任何单独的批改状态徽标;批改状态仅作为查看批改详情的路由参数和目标页模式判断字段保留。参见 R89。 - 正式实现中,原型里的
语文三年级下册(人教版)、数学三年级下册(人教版)、英语三年级下册(人教版)等教材信息行全部删除;卡片仅展示作业字段,不展示教材名称、教材版本、出版社等教辅信息。参见 R89。 - 卡片中的上传结果区分为2种视觉状态:
上传成功:使用浅灰底普通态,文案展示{success_count}/{total_count}张成功,下方提示语为可查看当次上传结果。部分异常:使用浅橙底警示态,文案展示{success_count}/{total_count}张成功 · {abnormal_count}张异常,下方提示语为可查看当次上传结果,并对异常图片补拍。
- 卡片底部固定展示2个等宽操作按钮:左侧为
查看上传结果,右侧为查看批改详情;即使当前记录尚未完成批改,也不隐藏右侧按钮,而是进入未批改详情查看态。 - 当列表为空时,页面主体展示空状态插画和文案
暂无提交记录;底部固定主按钮提交作业仍保留,允许学生继续进入统一提交页。
功能描述
- 业务规则:R18、R71、R73、R77、R89。
- 页面入口与适用范围:
- 学生在
s_homework_list.html点击页面级快捷入口提交记录进入本页;进入前必须先写入s_homework_list_context,并透传当前homeworkTab / subTab / personalStatus / source_page=s_homework_list。参见 R73、R77。 - 学生在
s_submit.html?mode=upload_result点击底部返回提交记录或顶部关闭返回时进入本页;该回流行为只恢复历史页上下文,不得把source_page改写为s_submit,避免破坏最终返回链路。 - 兼容入口:若学生在
s_ai_grading.html通过历史回看入口进入本页,需写入source_page=s_ai_grading及当前hwKey / recordId / gradingStatus,供导航返回时恢复批改结果页。 - 页面默认查询当前登录学生本人有权限查看的历史提交记录,不展示同班同学、教师账号、其他学生账号的提交记录、图片和批改结果。参见 R18。
homeworkTab / subTab / personalStatus在本页仅作为返回恢复上下文使用,不作为历史记录列表的默认过滤条件;历史记录范围统一为当前学生本人全部可见提交记录。- 列表默认按
submit_time倒序展示,最新提交记录排在最前;列表粒度固定为单次提交批次,学生每点击一次提交或一次补拍提交各自产生1条独立记录。补拍成功生成新记录时,原始记录继续保留,不做覆盖或替换。参见 R71。 - 页面上下文
s_history_context至少保存source_page、homeworkTab、subTab、personalStatus、date_filter、status_filter、subject_filter、page_no、scroll_top、return_hw_key、return_record_id、return_grading_status、updated_at。
- 学生在
页面分区与控件交互
- 本页按
导航栏、筛选胶囊区、提交记录列表区、底部固定操作区4个可交互分区展开说明;空状态仅替换列表区内容,不覆盖导航栏、筛选区和底部操作区。
导航栏
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
| 左侧关闭图标 | 始终展示 | 点击后按回跳优先级执行返回:优先返回来源页并恢复来源上下文;若来源上下文缺失,则回到 s_homework_list.html?homeworkTab=paper&subTab=library。 |
标题 提交记录 | 始终展示 | 固定文案,不随筛选条件、来源页、记录数量变化。 |
| 右侧小程序胶囊占位 | 始终展示 | 不承接业务点击事件,不打开菜单、不跳转页面、不参与业务埋点。 |
筛选胶囊区
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
全部日期/当前日期范围 | 始终展示;默认文案全部日期 | 点击打开日期筛选底部单选弹层;选项至少包含全部日期和平台下发的预置日期范围;点击某个选项后立即生效,关闭弹层,刷新列表并滚动到顶部。 |
全部状态/当前状态 | 始终展示;默认文案全部状态 | 点击打开状态筛选底部单选弹层;固定选项为全部状态 / 上传成功 / 部分异常;该筛选仅作用于上传记录状态,不作用于批改状态。参见 R89。 |
全部学科/当前学科 | 始终展示;默认文案全部学科 | 点击打开学科筛选底部单选弹层;仅展示当前学生实际存在历史记录的学科;选择后立即生效并关闭弹层。 |
| 筛选结果刷新 | 任一维度生效后触发 | 日期、状态、学科3个维度按交集过滤;刷新时重置 page_no=1、滚动到顶部,并展示局部骨架屏。 |
| 筛选文案变化 | 选中非默认值时触发 | 胶囊文案替换为选中项名称;恢复全部时文案回退默认值;其他两个维度保持原值,不联动清空。 |
- 筛选弹层规格:
弹层 1:日期筛选底部弹层
| 要素 | 内容 |
|---|---|
| 触发条件 | 点击全部日期/当前日期范围胶囊 |
| 标题 | 选择日期 |
| 正文 | 单列展示全部日期 + 日期范围选项;当前选中项高亮并带勾选标识 |
| 主按钮 | 无独立主按钮;点击某一项立即生效并关闭弹层 |
| 次按钮 | 取消 → 关闭弹层,不修改当前结果集 |
| [x] 关闭 | 同取消 |
弹层 2:状态筛选底部弹层
| 要素 | 内容 |
|---|---|
| 触发条件 | 点击全部状态/当前状态胶囊 |
| 标题 | 选择状态 |
| 正文 | 单列展示全部状态 / 上传成功 / 部分异常;当前选中项高亮;不展示任何批改状态选项 |
| 主按钮 | 无独立主按钮;点击某一项立即生效并关闭弹层 |
| 次按钮 | 取消 → 关闭弹层,不修改当前结果集 |
| [x] 关闭 | 同取消 |
弹层 3:学科筛选底部弹层
| 要素 | 内容 |
|---|---|
| 触发条件 | 点击全部学科/当前学科胶囊 |
| 标题 | 选择学科 |
| 正文 | 单列展示全部学科 + 当前学生在历史记录范围内存在记录的学科;当前选中项高亮 |
| 主按钮 | 无独立主按钮;点击某一项立即生效并关闭弹层 |
| 次按钮 | 取消 → 关闭弹层,不修改当前结果集 |
| [x] 关闭 | 同取消 |
提交记录列表区
- 列表加载策略:
- 首屏加载 10 条记录,向下滚动触底后继续加载下一页 10 条;与学生端移动列表分页口径保持一致。
- 首屏加载中展示卡片骨架屏;分页加载中在列表底部展示加载反馈,不遮挡已加载卡片。
- 若分页加载失败,保留已加载数据,在列表底部展示
加载失败,点击重试;点击后仅重试下一页请求,不重新拉取首屏。 - 从
s_submit.html?mode=upload_result返回本页时,需先恢复离开前筛选条件、已加载页数和滚动位置,再按当前筛选条件刷新列表;若补拍后生成的新记录命中当前筛选,则插入列表顶部;若不命中当前筛选,则保持当前筛选结果不变,并 Toast 提示补拍记录已生成,可切换筛选查看。参见 R71。
| 区域/字段/按钮 | 展示规则 | 交互与系统行为 |
|---|---|---|
| 提交日期 | 每张卡片固定展示 | 展示格式固定为 YYYY-MM-DD;卡片层不展示时分秒,完整提交时间由上传结果页承接查看。 |
| 学科标识块 | 每张卡片固定展示 | 使用学科色块 + 学科简称展示,如语 / 数 / 英;仅作为学科识别,不可点击;该区块不表示教材封面。 |
| 教材相关字段 | 始终不展示 | 卡片必须隐藏教材名称、教材版本、出版社等教辅字段;即使后端历史接口返回相关字段,前端也不得在本页渲染。参见 R89。 |
| 作业名称 | 每张卡片固定展示 | 展示当前记录关联作业名称;标题过长最多显示 2 行,超出省略。 |
来源标签 教研院 | 仅当 source_type=research_institute 时展示 | 紧跟在作业名称后,以小标签展示;仅作来源标识,不可点击。 |
| 备注 | 仅当 remark 非空时展示 | 展示格式固定为备注:{remark};为空时整行隐藏,不保留占位。 |
| 上传结果汇总条 | 每张卡片固定展示 | 当 abnormal_photo_count = 0 时显示上传成功普通态;当 abnormal_photo_count > 0 时显示部分异常警示态,并追加异常张数。 |
| 上传结果提示文案 | 每张卡片固定展示 | 上传成功态显示可查看当次上传结果;部分异常态显示可查看当次上传结果,并对异常图片补拍。 |
| 批改状态标签 | 始终不展示 | 原型中的教师已批改 / AI已批改 / 未批改(AI/教师)标签在正式实现中全部移除,不保留占位,不参与筛选。参见 R89。 |
| 卡片主体点击 | 默认不开放整卡跳转 | 点击正文区域不触发页面跳转,不替代底部按钮,避免与查看上传结果、查看批改详情产生误触。 |
查看上传结果 | 每张卡片固定展示 | 点击进入 s_submit.html?mode=upload_result&recordId={record_id};页面需加载该批次全部上传图片。若记录包含异常图片,则上传结果页仅异常图开放补拍入口;若全部正常,则上传结果页仅允许回看,不展示补拍入口。参见 R71。 |
查看批改详情 | 每张卡片固定展示 | 点击进入 s_ai_grading.html?hwKey={hw_key}&recordId={record_id}&gradingStatus={grading_status}&from=history;当 grading_status=pending 时进入未批改详情,当 grading_status=ai_graded 时进入AI批改结果,当 grading_status=teacher_graded 时进入教师批改结果。按钮文案固定,不因状态切换为禁用。 |
- 文案和按钮状态变化:
- 当
abnormal_photo_count > 0时,上传结果汇总区切换为橙色警示态,提示文案切换为可查看当次上传结果,并对异常图片补拍。 - 当
abnormal_photo_count = 0时,上传结果汇总区为普通态,提示文案切换为可查看当次上传结果。 查看上传结果与查看批改详情两个按钮始终保持双按钮布局;不因当前记录是否已批改、是否异常而隐藏其中一个按钮。- 首次进入且当前学生无任何历史提交记录时,空状态文案为
暂无提交记录;当前筛选条件下无结果时,空状态文案切换为暂无符合筛选条件的提交记录。 - 补拍提交成功后生成的新记录沿用原作业名称,不在标题中追加
(补拍);补拍来源关系通过parent_record_id等字段保留在数据层,避免学生误以为生成了新作业对象。参见 R71。
- 当
底部固定操作区
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
提交作业 | 始终展示为全宽主按钮 | 点击进入 s_submit.html;若 s_history_context.homeworkTab=personal,则默认打开个性化作业提交态;若 homeworkTab=paper,则默认打开纸质教辅提交态;若检测到未完成上传任务,则优先恢复上传任务,不得被默认页签参数覆盖。参见 R70、R77。 |
页面跳转和返回逻辑
- 点击
查看上传结果:- 进入
s_submit.html?mode=upload_result&recordId={record_id}。 - 上传结果页点击顶部关闭或底部
返回提交记录时,必须回到本页,而不是回到作业列表。 - 返回后恢复进入前的筛选条件、已加载页数和滚动位置;若补拍后产生新记录,则按当前筛选条件决定是否展示新记录,不自动清空筛选。
- 进入
- 点击
查看批改详情:- 进入
s_ai_grading.html?hwKey={hw_key}&recordId={record_id}&gradingStatus={grading_status}&from=history。 s_ai_grading.html返回时必须回到本页,并恢复s_history_context中的筛选条件、分页和滚动位置;不回退到作业列表。
- 进入
- 点击底部
提交作业:- 进入统一提交页
s_submit.html,并优先按s_history_context中的来源页签打开对应提交态。 - 若系统检测到存在未完成上传任务,则优先恢复上传任务,不以历史页来源页签覆盖恢复结果。参见 R70。
- 若来源上下文缺失,则默认打开
paper + library对应的纸质教辅提交流程。
- 进入统一提交页
- 点击导航栏关闭:
- 当
source_page=s_ai_grading且return_hw_key / return_record_id / return_grading_status完整时,返回s_ai_grading.html,恢复离开前的批改结果查看上下文。 - 其他情况下优先返回
s_homework_list.html,并恢复homeworkTab / subTab / personalStatus、滚动位置和来源页筛选。参见 R73、R77。 - 若来源上下文缺失,则默认回到
s_homework_list.html?homeworkTab=paper&subTab=library。
- 当
批量操作范围
- 本页不支持多选记录、不支持批量补拍、不支持批量删除、不支持批量导出、不支持批量进入批改详情。
- 本页唯一的“批量作用”仅体现在日期、状态、学科3个筛选条件对当前结果集的展示裁剪,不修改任何提交、补拍或批改业务数据。
- 单条记录上的任一按钮仅作用于当前记录,不得一次点击同时影响多条历史记录。
异常描述
| 异常场景 | 处理方式 |
|---|---|
| 首屏记录加载失败 | 页面主体展示错误占位,文案为提交记录加载失败,请稍后重试,并提供重试按钮;导航栏和底部提交作业按钮继续可见。 |
| 分页加载失败 | 保留已加载卡片,列表底部展示加载失败,点击重试;点击后仅重试下一页请求,不重新拉取首屏。 |
| 当前学生暂无任何历史提交记录 | 展示空状态插画和文案暂无提交记录;底部提交作业按钮继续可点击。 |
| 当前筛选条件下无结果 | 展示空状态插画和文案暂无符合筛选条件的提交记录;保留筛选胶囊当前值,不自动回退为全部。 |
| 筛选字典加载失败 | 点击某个筛选胶囊时 Toast 提示筛选条件加载失败,请稍后重试,不打开弹层,不清空当前列表。 |
点击查看上传结果时记录已删除、越权或不可访问 | 当前页停留不跳转,Toast 提示当前提交记录已不可查看;卡片保持原样,不自动移除。 |
点击查看批改详情时 record_id、hw_key 或详情权限失效 | 当前页停留不跳转,Toast 提示暂未找到批改详情或当前批改详情不可查看。 |
| 从上传结果页返回时,新补拍记录不命中当前筛选 | 保留当前筛选和滚动位置,不自动清空筛选;Toast 提示补拍记录已生成,可切换筛选查看。 |
| 网络中断 | 列表刷新、分页加载、动作校验失败时统一 Toast 提示网络连接异常,请检查后重试;不清空已加载卡片和当前筛选。 |
| 登录态失效 | Toast 提示登录已失效,请重新登录,跳转 s_login.html;重新登录后默认回到 s_homework_list.html?homeworkTab=paper&subTab=library。 |
| 上下文恢复失败 | 从 s_submit.html?mode=upload_result 或 s_ai_grading.html 返回本页时,若 s_history_context 丢失,则按默认筛选和首屏排序展示,同时记录异常日志;不得进入空白页。 |
数据需求
-
接口:
- 学生提交记录列表接口:
- 入参至少包含
student_id、date_range_key、record_status、subject_code、page_no、page_size、source_page。 - 出参至少包含
record_id、parent_record_id、homework_id、homework_type、homework_name、hw_key、source_type、source_label、subject_code、subject_name、subject_short、remark、submit_time、total_photo_count、success_photo_count、abnormal_photo_count、record_status、grading_status、can_view_upload_result、can_view_grading_detail。
- 入参至少包含
- 筛选字典接口:
- 返回日期范围字典、状态字典、学科字典。
- 状态字典固定包含
全部状态 / 上传成功 / 部分异常,不得返回AI已批改 / 教师已批改 / 未批改作为本页筛选项。参见 R89。 - 学科字典仅返回当前学生实际存在历史记录的学科,不返回无数据学科。
- 提交记录详情接口:
- 由
s_submit.html?mode=upload_result根据record_id调用,返回该批次全部图片、图片状态、异常原因、是否允许补拍及补拍来源关系。参见 R71。
- 由
- 批改详情路由依赖字段:
- 本页需为
s_ai_grading.html透传hw_key、record_id、grading_status;批改结果页据此决定进入未批改详情 / AI批改结果 / 教师批改结果哪种模式。
- 本页需为
- 学生提交记录列表接口:
-
状态与字段约束:
- 本页必须以
record_id作为唯一主键,以单次提交批次作为列表粒度;同一作业可对应多条提交记录。 record_status枚举至少包含success、partial_abnormal两种,用于驱动卡片结果文案、颜色和状态筛选。grading_status枚举至少兼容pending、ai_graded、teacher_graded;该字段仅用于查看批改详情路由判断,不得在卡片上单独渲染为可视标签。参见 R89。- 历史记录接口即使返回
teaching_aid_name、edition_name、publisher_name等教辅字段,前端也不得在本页展示。参见 R89。 - 补拍提交生成的新记录必须记录
parent_record_id、source_record_id或等价关联字段,用于追溯“原记录 -> 补拍记录 -> 异常图片”关系。参见 R71。 - 页面需维护
s_history_context,至少包含来源页信息、筛选条件、分页信息、滚动位置和从批改结果页回跳所需的记录参数,用于回跳恢复。参见 R73、R77。
- 本页必须以
-
埋点:
- 页面浏览:记录
source_page、homeworkTab、subTab、personalStatus、默认筛选值、首屏记录数、异常记录数。 - 筛选过程:记录筛选胶囊点击、弹层曝光、筛选项选择、筛选结果数、是否命中空结果。
- 列表过程:记录卡片曝光、列表滚动深度、分页加载成功/失败。
- 卡片操作:记录点击
查看上传结果、点击查看批改详情,需带record_id、homework_id、record_status、abnormal_photo_count、grading_status、source_type。 - 底部入口:记录点击
提交作业,需带source_page=s_history、来源页签、是否命中未完成上传任务恢复。 - 异常与空态:记录首屏加载失败曝光、分页失败曝光、无记录空态曝光、筛选无结果空态曝光、记录不可查看提示曝光、补拍记录不命中当前筛选提示曝光。
- 页面浏览:记录