spec.md
4.07 KB
001-recall-activity-history-state - 活动历史页空状态与加载失败提示
1) 背景与目标
- 背景:
- 当前“活动历史”页面会在进入时请求活动列表数据并渲染列表。
- 当接口返回无数据或请求失败时,页面缺少清晰的页面内反馈,用户难以判断是“没有活动记录”还是“加载失败”。
- 目标:
- 在不改接口、不新增接口的前提下,为活动历史页补齐“空状态提示”和“加载失败提示 + 重试入口”,提升可理解性与可恢复性。
- 非目标:
- 不调整接口入参、返回结构或后端逻辑。
- 不改动页面既有的顶部 Banner、底部按钮与“没找到我的星球活动”弹窗等核心结构与入口。
- 不引入新的页面路由与新的业务流程。
2) 用户画像与使用场景
- 已登录/已完成必要信息的用户,通过召回链路进入活动历史页,查看历史参与记录。
- 用户可能出现以下情况:
- 确实没有参与过活动(应看到“暂无活动记录”的空状态)。
- 网络不稳定、服务异常、参数缺失导致请求失败(应看到“加载失败”的错误提示,并可重试)。
3) 需求范围
- 页面/入口:
- 活动历史页(现有页面入口保持不变)。
- 核心流程:
- 页面进入后发起列表加载。
- 加载成功:
- 有数据:展示列表。
- 无数据:展示空状态。
- 加载失败:展示失败提示与重试按钮。
- 状态与异常分支:
- 请求失败(返回 code 不为 1 或发生异常)时进入失败状态。
- 重试成功后根据数据展示列表或空状态。
4) 用户故事(User Stories)
- 作为用户,我想在没有活动记录时看到明确提示,以便确认自己没有缺失记录。
- 作为用户,我想在列表加载失败时看到错误提示并能重试,以便在网络恢复后继续查看记录。
5) 验收标准(Acceptance Criteria)
- 有数据时:
- 页面展示活动列表。
- 不展示空状态与失败状态提示。
- 无数据时:
- 当列表加载已完成且列表为空时,页面在列表区域展示空状态提示文案(例如“暂无活动记录”)。
- 空状态为页面内可见提示,不以 Toast 作为唯一反馈。
- 加载失败时:
- 当列表请求失败(code!=1 或发生异常)时,页面在列表区域展示失败状态提示文案(例如“加载失败,请稍后重试”)。
- 失败提示区域提供“重试”按钮;点击后会重新发起列表请求。
- 重试成功后:
- 有数据则展示列表;
- 无数据则展示空状态;
- 不再展示失败提示。
- 结构与入口:
- 顶部 Banner、底部按钮、“没找到我的星球活动”入口与弹窗行为不受影响,保持可用。
6) 交互与视觉要点
- 空状态与失败状态展示位置:
- 在列表区域内展示,避免遮挡顶部 Banner 和底部固定按钮。
- 可读性:
- 文案简洁、明确区分“无数据”与“加载失败”。
- 一致性:
- 视觉风格与页面现有样式保持一致(背景、圆角卡片、间距等)。
7) 数据与接口
- 不新增接口、不修改接口。
- 数据来源仍为现有活动列表查询接口。
- 返回结构固定为 { code, data, msg }:
- code=1 视为成功;
- code!=1 视为失败;
- msg 可作为失败提示文案来源之一(若为空则使用默认失败文案)。
8) 边界条件与风险
- 缓存参数缺失或不完整可能导致请求失败,应进入失败状态并可重试。
- 网络波动可能导致首次失败、重试成功,状态切换需要正确更新页面展示。
9) 待确认事项
- [NEEDS CLARIFICATION] 失败状态文案是否需要优先展示接口返回 msg?若 msg 为空是否统一使用默认文案?
- [NEEDS CLARIFICATION] 空状态文案是否固定为“暂无活动记录”,还是需要根据场景区分(例如“未查询到您的历史活动”)?