作业列表
页面元信息
- 终端:学生端
- Astro 路由:
/student/homework-list - 原始 HTML:
s_homework_list.html - 来源章节:
4.4.3 - 维护规则:后续以本页面 PRD 为准;若改动影响通用规则,再同步总览 / 全局规则文档。
视觉描述
- 原型引用:
产出文档/作业管理模块/原型图/s_homework_list.html。 - 本页为学生登录后的默认首屏页面,整体由
顶部作业类型切换区、主内容区、底部悬浮快捷操作区、底部导航区四部分构成;不再保留独立首页页面,也不在底部导航展示首页。 - 顶部为两项分段切换控件
纸质教辅作业、个性化作业。两个按钮样式互斥,当前版本默认高亮纸质教辅作业;未选中项为白底灰字,选中项为浅灰底深色字。 - 当顶部切换到
纸质教辅作业时,内容区顶部展示二级子页签作业库、我的作业,右侧保留搜索图标和筛选入口文本图标。纸质教辅卡片沿用既有教辅展示样式:左侧书封、右侧书名/出版社/配套教材/日期、卡片底部动作区。 - 当顶部切换到
个性化作业时,内容区顶部展示横向状态筛选胶囊全部 / 待提交 / 待批改 / 已完成。下方为个性化作业卡片流,卡片包含学科色块、标题、状态标签、来源标签、题数、备注、发布日期、可选评级以及底部动作区。 - 下载入口设计方案按本期优化方案落地,不直接采用原型中的右上角悬浮小圆形图标:
- 统一改为卡片内容区下方的独立次级按钮,按钮文案明确为
下载教辅PDF或下载作业PDF,左侧带下载图标。 - 按钮高度不低于 44px,左右边距与卡片内容对齐,点击热区覆盖整个按钮区域,便于学生、家长及教师辅导场景下单手点击。
- 按钮与下方业务动作区分层展示,避免与
查看分析 / 批改结果 / 查看详情抢占同一点击区域。
- 统一改为卡片内容区下方的独立次级按钮,按钮文案明确为
- 页面底部悬浮快捷操作区样式参考
tm_list.html:左侧提交记录为描边按钮,右侧提交作业为品牌主按钮;二者为页面级入口,不绑定当前卡片。 - 页面底部导航当前仅保留两项:
作业、我的。作业为当前激活态,我的跳转s_profile.html;不再展示首页。 - 页面需补齐 4 类界面状态:首屏骨架屏、空态、筛选无结果态、列表触底加载反馈态。
功能描述
- 页面入口:
- 学生在
s_login.html登录成功后直接进入s_homework_list.html?homeworkTab=paper&subTab=library。 - 学生在
s_submit.html、s_history.html、s_homework_report.html、s_ai_grading.html、s_profile.html返回时回流本页。 - 若命中旧版
s_home.html,系统完成兼容跳转后最终也进入本页。
- 学生在
- 页面权限与数据范围:
- 仅返回当前登录学生本人可见的作业,不展示同班同学数据,不展示教师、家长或其他学生的提交记录、分数、作答图片。
- 个性化作业卡片严禁展示教材名称、教材版本、出版社等教辅字段;纸质教辅区域沿用既有教辅信息展示逻辑。
- 页面初始化与上下文恢复:
- 首次进入且无历史上下文时,默认高亮
纸质教辅作业,并默认打开作业库;仅当用户主动切换到个性化作业后,才记录个性化状态筛选值。 - 页面需维护
s_homework_list_context,至少包含homework_tab、paper_sub_tab、personal_status、page_no、scroll_top、source_page、updated_at。 - 若 URL 透传
homeworkTab、subTab、personalStatus,则优先按 URL 还原;若参数缺失,再回退到s_homework_list_context;若上下文也缺失,再使用默认值。 - 从本页进入
s_submit.html、s_history.html、s_homework_report.html、s_ai_grading.html、s_profile.html时,必须透传当前homeworkTab / subTab / personalStatus,用于返回时恢复原页签、原筛选和滚动位置。
- 首次进入且无历史上下文时,默认高亮
顶部作业类型切换区
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
纸质教辅作业 | 始终展示;未选中时白底灰字 | 点击后切换 homework_tab=paper,页面滚动回顶部,内容区显示纸质教辅二级子页签。 |
个性化作业 | 始终展示;首次进入默认未选中 | 点击后切换 homework_tab=personal,页面滚动回顶部,内容区显示个性化作业状态筛选条与个性化作业列表。 |
| 分段按钮状态 | 两项互斥 | 同一时刻只允许 1 个页签为激活态;切换时立即写入 s_homework_list_context.homework_tab。 |
| 页签切换后的上下文恢复 | 按页签分别保存 | paper 页签保留最近一次 subTab;personal 页签保留最近一次 personalStatus;两套上下文互不覆盖。 |
纸质教辅作业区(存量链路,当前仅定义本页承接关系)
- 本区沿用既有纸质教辅作业链路,本轮不重新定义纸质教辅搜索、筛选、详情页等完整业务,只在
s_homework_list.html中明确切换、展示与返回规则。 - 列表加载策略:
作业库与我的作业各自独立分页,首屏各加载 10 张卡片,触底继续加载下一页 10 条。- 切换
作业库 / 我的作业时重置为各自第 1 页并滚动到顶部。
| 区域/字段/按钮 | 展示规则 | 交互与系统行为 |
|---|---|---|
作业库 子页签 | homework_tab=paper 时展示 | 点击后高亮 作业库,展示推荐教辅列表。 |
我的作业 子页签 | homework_tab=paper 时展示 | 点击后高亮 我的作业,展示已关联到学生的纸质教辅作业。 |
搜索 图标 | homework_tab=paper 时展示 | 当前仅保留视觉占位;点击后 Toast 提示 搜索功能规划中,不打开新页面。 |
筛选 图标 + 文案 | homework_tab=paper 时展示 | 当前仅保留视觉占位;点击后 Toast 提示 筛选功能规划中,不弹出筛选面板。 |
| 教辅封面/书名/出版社/教材版本/日期 | 纸质教辅卡片固定展示 | 仅用于识别当前教辅,不可点击跳转。 |
查看详情 | 仅 作业库 卡片展示 | 当前不进入正式页面链路;点击后 Toast 提示 查看详情页待接入,不跳转。参见 R13。 |
查看分析 | 仅 我的作业 中已生成分析结果的卡片展示 | 点击进入 s_homework_report.html?from=list&hwKey={hw_key}&bookInfo={book_info}&homeworkTab=paper&subTab=my;返回时恢复 paper + my 上下文。 |
下载教辅PDF | 作业库 与 我的作业 卡片均展示为独立按钮 | 点击后直接触发 PDF 下载;按钮状态按 下载中... -> 下载完成 切换;失败时 Toast 下载失败,请稍后重试。 |
| 推荐标识/既有提醒标识 | 沿用存量教辅逻辑 | 本轮不新增新的判定口径;若后端返回既有推荐标识或提醒标识,按既有纸质教辅规则渲染,不改变本页跳转逻辑。 |
个性化作业区(本期重点)
- 列表加载策略:
- 首屏加载 10 张个性化作业卡片,触底继续加载下一页 10 条。
- 切换状态筛选后重置
page_no=1、滚动到顶部,并重新请求当前筛选结果。 - 加载中展示卡片骨架屏;触底加载失败时在列表底部展示
加载失败,点击重试,保留已加载内容。
个性化作业状态筛选条
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
全部 | 默认选中 | 点击后展示全部个性化作业卡片。 |
待提交 | 始终展示 | 点击后仅展示 status=pending_submit 的卡片。 |
待批改 | 始终展示 | 点击后仅展示 status=pending_grade 的卡片。 |
已完成 | 始终展示 | 点击后仅展示 status=done 的卡片。 |
| 筛选状态 | 四项单选互斥 | 同一时间仅允许 1 个状态筛选生效;点击后立即刷新列表并写入 s_homework_list_context.personal_status。 |
个性化作业卡片区
| 区域/字段/按钮 | 展示规则 | 交互与系统行为 |
|---|---|---|
| 学科色块 | 每张卡片固定展示 | 使用学科色块 + 学科文字展示,如 语文 / 数学 / 英语;仅作识别,不可点击。 |
| 作业标题 | 每张卡片固定展示 | 标题最多展示 2 行,超出省略。 |
| 状态标签 | 每张卡片固定展示 | 仅允许 待提交 / 待批改 / 已完成 三种状态;对应蓝/灰/绿视觉样式。 |
教研院 来源标签 | 仅当 source_type=research_institute 时展示 | 展示在题数信息左侧,作为来源标识,不可点击。 |
共X题 | 每张卡片固定展示 | 展示题量摘要,不展示教材页码、出版社等字段。 |
| 备注文案 | remark 有值时展示 | 允许展示 2 行,超出省略;无备注时该区域整体不占位。 |
| 发布日期 | 每张卡片固定展示 | 展示格式固定为 YYYY-MM-DD 发布。 |
评级:A 等评级字段 | 仅 status=done 且 rating 有值时展示 | 展示在发布日期右侧;无评级时不占位。 |
下载作业PDF | 每张卡片固定展示为独立次级按钮 | 点击后直接下载当前个性化作业 PDF;点击时按钮进入 下载中... 禁用态,成功后恢复默认态并 Toast 下载完成,失败后恢复默认态并 Toast 下载失败,请稍后重试;点击时必须阻断卡片其他交互。 |
| 卡片主体点击 | 默认不开放整卡跳转 | 学生点击卡片正文区域不触发页面跳转,避免与下载、查看分析、批改结果产生误触。 |
批改结果 | 当 status=pending_grade 或 status=done 时展示 | 点击进入 s_ai_grading.html,并透传 hwKey、recordId、gradingStatus、from=list、homeworkTab=personal、personalStatus={当前筛选};pending_grade 进入待批改查看态,done 进入教师批改结果查看态。 |
查看分析 | 仅当 status=done 且 analysis_ready=true 时展示 | 点击进入 s_homework_report.html?from=personal&hwKey={hw_key}&bookInfo={book_info}&homeworkTab=personal&personalStatus=done;返回时恢复 个性化作业 + 已完成 上下文。 |
- 个性化作业状态与动作绑定规则:
待提交:- 卡片展示
下载作业PDF,不展示查看分析、批改结果。 - 学生如需提交,统一通过页面底部
提交作业进入s_submit.html再选择作业,不在卡片内额外放置去提交按钮。
- 卡片展示
待批改:- 卡片展示
下载作业PDF与批改结果。 批改结果打开的是待批改查看态,用于查看本次提交记录与当前批改进度,不显示最终评级。
- 卡片展示
已完成:- 卡片展示
下载作业PDF、查看分析、批改结果。 查看分析与批改结果并列展示;若报告尚未生成,则查看分析不展示可点击态,避免出现空跳转。
- 卡片展示
底部悬浮快捷操作区
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
提交记录 | 始终展示为描边按钮 | 页面级快捷入口,不绑定当前卡片;点击进入 s_history.html?homeworkTab={当前顶部页签}&subTab={当前纸质教辅子页签}&personalStatus={当前个性化筛选}&source_page=s_homework_list。 |
提交作业 | 始终展示为品牌主按钮 | 页面级快捷入口,不绑定当前卡片;点击进入 s_submit.html?tab={当前顶部页签}&source_page=s_homework_list&homeworkTab={当前顶部页签}&subTab={当前纸质教辅子页签}&personalStatus={当前个性化筛选}。 |
| 按钮可见性 | 不随列表空态变化 | 即使当前页签无数据、筛选无结果,也不隐藏 提交记录 和 提交作业。 |
提交记录设计说明(参考tm_list.html):- 保持页面级固定入口,而不是放入每张卡片内,避免学生误以为提交记录只属于某一张卡片。
- 返回本页时必须恢复离开前的顶部分段、筛选条件和滚动位置。
提交作业设计说明:- 保持页面级固定入口,学生始终通过统一提交页完成拍照与上传,不直接在卡片内发起提交。
- 当顶部页签为
个性化作业时,提交页默认打开个性化作业提交态;当顶部页签为纸质教辅作业时,默认打开纸质教辅提交态。
底部导航区
| 区域/控件 | 展示规则 | 交互与系统行为 |
|---|---|---|
作业 | 当前页固定激活态 | 高亮显示,不响应重复点击刷新。 |
我的 | 始终展示 | 点击进入 s_profile.html?source_page=s_homework_list&homeworkTab={当前顶部页签}&subTab={当前纸质教辅子页签}&personalStatus={当前个性化筛选};返回时恢复本页上下文。 |
页面跳转与返回逻辑
- 从
个性化作业点击查看分析:- 进入
s_homework_report.html?from=personal&hwKey={hw_key}&bookInfo={book_info}&homeworkTab=personal&personalStatus={当前筛选}。 - 返回时回到
s_homework_list.html?homeworkTab=personal&personalStatus={当前筛选}。
- 进入
- 从
个性化作业点击批改结果:- 进入
s_ai_grading.html?from=list&hwKey={hw_key}&recordId={record_id}&gradingStatus={grading_status}&homeworkTab=personal&personalStatus={当前筛选}。 - 返回时回到
s_homework_list.html?homeworkTab=personal&personalStatus={当前筛选};若从批改结果页再切到提交记录,则按s_ai_grading.html的来源逻辑进入s_history.html。
- 进入
- 从
纸质教辅作业 -> 我的作业点击查看分析:- 进入
s_homework_report.html?from=list&hwKey={hw_key}&bookInfo={book_info}&homeworkTab=paper&subTab=my。 - 返回时回到
s_homework_list.html?homeworkTab=paper&subTab=my。
- 进入
- 从本页点击
提交记录或提交作业:- 进入目标页前必须写入
s_homework_list_context。 - 目标页返回时优先读取 URL 参数恢复,参数缺失时再读取
s_homework_list_context。
- 进入目标页前必须写入
批量操作范围
-
本页不支持作业卡片多选,不提供批量下载、批量提交、批量删除、批量标记已读能力。
-
纸质教辅二级子页签切换、个性化状态筛选仅影响当前列表结果集展示,不修改任何作业、提交、批改业务数据。
-
提交记录与提交作业为页面级快捷入口,作用范围是“当前学生账号”,不是“当前选中卡片”。 -
业务规则:R13、R18、R72、R73、R74、R75、R76、R77。
异常描述
| 异常场景 | 处理方式 |
|---|---|
| 页面初始化失败(列表接口超时、500、网络异常) | 展示整页错误态,提供 重试 按钮;保留最近一次 s_homework_list_context,重试成功后恢复原上下文。 |
| 当前学生无任何作业 | 展示空态 暂无作业,同时保留底部 提交记录、提交作业、我的 入口。 |
| 个性化状态筛选无结果 | 在卡片区展示局部空态 当前筛选下暂无作业;不自动回退到 全部,不清空当前筛选。 |
纸质教辅 搜索 / 筛选 点击 | Toast 提示 功能规划中;不跳转、不弹窗、不清空当前列表。 |
查看详情 点击 | Toast 提示 查看详情页待接入;不跳转。 |
查看分析 时报告未生成或参数缺失 | Toast 提示 作业分析暂未生成 或 未找到对应作业分析;停留在当前页,不清空当前上下文。 |
批改结果 时 recordId 缺失或结果未生成 | Toast 提示 暂未找到批改结果;停留在当前页。 |
| 下载失败 | Toast 提示 下载失败,请稍后重试;下载按钮恢复默认态,可再次点击。 |
| 返回本页时上下文缺失 | 以默认值恢复:homeworkTab=paper、subTab=library;页面滚动定位到顶部。 |
| 学生登录态失效 | Toast 提示 登录已失效,请重新登录,跳转 s_login.html;重新登录后回到 s_homework_list.html?homeworkTab=paper&subTab=library。 |
数据需求
- 接口建议:
- 学生作业列表接口:
- 按
homework_tab=paper|personal返回列表。 - 当
homework_tab=paper时,支持sub_tab=library|my。 - 当
homework_tab=personal时,支持status=all|pending_submit|pending_grade|done。
- 按
- 下载接口:
- 根据
homework_id + homework_type返回可下载 PDF 的临时地址download_url。
- 根据
- 上下文恢复无需单独接口,依赖 URL 参数 + 本地缓存。
- 学生作业列表接口:
- 请求参数建议:
- 公共参数:
student_id、homework_tab、page_no、page_size、source_page - 纸质教辅补充参数:
sub_tab - 个性化作业补充参数:
status
- 公共参数:
- 返回字段建议:
- 纸质教辅卡片:
homework_idhomework_type=paperhw_keybook_infobook_namepublisher_nameedition_namepublish_datecover_styleis_recommendedanalysis_readydownload_url
- 个性化作业卡片:
homework_idhomework_type=personalsubject_codesubject_namehomework_namehw_keybook_infoquestion_countremarkpublish_timestatussource_typeratinganalysis_readygrading_statusrecord_iddownload_url
- 纸质教辅卡片:
- 字段约束:
status枚举固定为pending_submit / pending_grade / done。grading_status至少兼容pending / ai_graded / teacher_graded,与s_ai_grading.html对齐。- 个性化作业数据响应中即使历史字段带回
publisher_name、edition_name、teaching_aid_name,前端也不得在本页展示。参见 R75。
- 本地状态缓存:
s_homework_list_context:保存homework_tab、paper_sub_tab、personal_status、page_no、scroll_top、updated_at。- 当从本页跳转到
s_submit.html、s_history.html、s_homework_report.html、s_ai_grading.html、s_profile.html时,需先更新该缓存。
- 埋点:
student_homework_list_view- 触发时机:页面加载完成时
- 关键参数:
homework_tab、sub_tab、personal_status、source_page
student_homework_tab_click- 触发时机:点击顶部
纸质教辅作业 / 个性化作业 - 关键参数:
from_tab、to_tab
- 触发时机:点击顶部
student_homework_paper_subtab_click- 触发时机:点击
作业库 / 我的作业 - 关键参数:
sub_tab
- 触发时机:点击
student_homework_personal_filter_click- 触发时机:点击个性化状态筛选
- 关键参数:
status
student_homework_download_click- 触发时机:点击
下载教辅PDF / 下载作业PDF - 关键参数:
homework_id、homework_type、status
- 触发时机:点击
student_homework_download_result- 触发时机:下载成功或失败时
- 关键参数:
homework_id、homework_type、result
student_homework_analysis_click- 触发时机:点击
查看分析 - 关键参数:
homework_id、homework_type、from_tab
- 触发时机:点击
student_homework_grading_result_click- 触发时机:点击
批改结果 - 关键参数:
homework_id、record_id、grading_status
- 触发时机:点击
student_homework_history_click- 触发时机:点击页面级
提交记录 - 关键参数:
homework_tab、sub_tab、personal_status
- 触发时机:点击页面级
student_homework_submit_click- 触发时机:点击页面级
提交作业 - 关键参数:
homework_tab、sub_tab、personal_status
- 触发时机:点击页面级
student_homework_placeholder_click- 触发时机:点击纸质教辅
查看详情、搜索、筛选等占位入口时 - 关键参数:
placeholder_type
- 触发时机:点击纸质教辅