Files
Genarrative/docs/prd/MY_TAB_RECENT_PLAY_PRD_2026-04-16.md
kdletters cbc27bad4a
Some checks failed
CI / verify (push) Has been cancelled
init with react+axum+spacetimedb
2026-04-26 18:06:23 +08:00

2.3 KiB

“我的”Tab 最近游玩 PRD

更新时间:2026-04-16

0. 目标

把“最近游玩”从单一继续游戏卡片扩成账号级最近游玩模块,让玩家可以快速回到最近推进过的作品和存档节点。


1. 当前现状与问题

当前“最近游玩”仅基于一个本地快照推导:

  1. 只支持一个最近记录
  2. 只要本地没有快照就没有内容
  3. 无法跨设备同步
  4. 无法区分多个世界和多个角色

这不符合平台化后的用户预期。


2. 本期范围

2.1 本期要做

  1. 最近游玩列表
  2. 继续游玩主动作
  3. 进入作品详情或继续冒险
  4. 跨设备同步最近记录

2.2 本期不做

  1. 多存档槽管理全量页面
  2. 手动置顶
  3. 存档备注与重命名

3. 详细设计

3.1 展示结构

首屏展示 1-5 条最近游玩卡片。

每张卡片展示:

  • 世界名
  • 当前角色名
  • 最近摘要
  • 最近游玩时间
  • 继续按钮

移动端优先横向滑动卡片,桌面端可显示为横向列表或双列卡片。

3.2 点击行为

  1. 点击卡片主体
    • 进入作品详情页,展示继续入口和存档摘要
  2. 点击继续按钮
    • 直接恢复最近游玩存档

如果该存档已失效:

  • 给出“存档不可恢复”的明确提示
  • 引导回到作品详情或重新开始

3.3 排序规则

lastPlayedAt 倒序。

若同一作品下存在多个存档:

  • 只展示最近一次有效记录

4. 后端设计

4.1 数据模型

建议在存档或游玩记录层增加聚合:

  • user_id
  • world_owner_user_id
  • profile_id
  • save_id
  • world_name
  • character_name
  • continue_digest
  • cover_image_src
  • last_played_at
  • is_resume_available

4.2 接口

GET /api/profile/recent-plays

返回:

  • 最近游玩列表

POST /api/runtime/saves/:saveId/resume

用途:

  • 校验并恢复指定存档

5. 前端实现要求

  1. 继续游玩动作必须走后端校验
  2. 不允许前端自行拼装恢复上下文
  3. 列表为空时展示轻量空态
  4. 卡片摘要最多显示三行,保持“我的”页清爽

6. 验收标准

  1. 最近游玩可以展示多个最近记录
  2. 不同设备登录同一账号时列表一致
  3. 点击继续后能恢复到正确存档
  4. 无效存档不会让前端直接报错白屏