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] 空状态文案是否固定为“暂无活动记录”,还是需要根据场景区分(例如“未查询到您的历史活动”)?