11
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-04-16 21:47:20 +08:00
parent 2456c10c63
commit 09d4c0c31b
79 changed files with 11873 additions and 2341 deletions

View File

@@ -0,0 +1,154 @@
# “我的”Tab 我的数据看板 PRD
更新时间:`2026-04-16`
## 0. 目标
把“剩余叙世币 / 总游戏时长 / 玩过作品”这一排信息卡,从静态数字展示升级成稳定的个人数据看板,让玩家在进入“我的”页时一眼知道自己的账号资产和游玩投入。
---
## 1. 当前现状与问题
当前三个数字来源并不统一:
1. 叙世币来自当前存档上下文,不等于账号总资产
2. 总游戏时长依赖当前快照,不代表全账号累计
3. 玩过作品当前几乎是硬编码推导,不是真实统计
这会导致“我的”页看到的数据不可信。
---
## 2. 本期范围
## 2.1 本期要做
1. 账号级数据聚合接口
2. 三张核心数据卡
3. 数据更新时间策略
4. 点击卡片查看明细的扩展位
## 2.2 本期不做
1. 成就系统
2. 排行榜
3. 全量行为分析页
---
## 3. 指标定义
## 3.1 剩余叙世币
定义:
- 当前账号可立即消费的叙世币余额
不使用:
- 当前单个存档里的临时货币数值
## 3.2 总游戏时长
定义:
- 当前账号下所有正式游玩会话累计时长
规则:
- 只累计进入有效游戏流程的时长
- 后台挂机超阈值后停止累计
## 3.3 玩过作品
定义:
- 当前账号实际进入过可游玩世界并产生有效游玩记录的去重作品数
去重键建议:
- `ownerUserId + profileId`
---
## 4. 详细设计
## 4.1 交互
三张卡片默认仅展示数字和标题。
点击行为:
1. 叙世币卡
- 打开资产流水抽屉
2. 总游戏时长卡
- 打开游玩统计抽屉
3. 玩过作品卡
- 打开玩过作品列表
如果本期不做明细页,点击可先无动作,但必须预留可扩展事件位。
## 4.2 展示规则
1. 数字过大时做单位缩略展示
2. 进入页面先展示骨架屏
3. 数据请求失败时展示降级文案,不展示假数字
---
## 5. 后端设计
## 5.1 聚合模型
建议新增账号聚合视图或服务:
- `wallet_balance`
- `total_play_time_ms`
- `played_world_count`
- `updated_at`
## 5.2 接口
### `GET /api/profile/dashboard`
返回:
- `walletBalance`
- `totalPlayTimeMs`
- `playedWorldCount`
- `updatedAt`
### `GET /api/profile/wallet-ledger`
返回:
- 叙世币流水列表
### `GET /api/profile/play-stats`
返回:
- 游玩时长分布
- 玩过作品列表摘要
---
## 6. 数据来源要求
1. 钱包余额从后端钱包台账聚合
2. 游戏时长从运行时会话日志或快照汇总
3. 玩过作品数从有效游玩记录去重计算
禁止继续采用:
- 仅从当前存档快照直接读取全部看板数据
---
## 7. 验收标准
1. 三个核心指标都能按账号稳定返回
2. 切换设备后看板数据一致
3. 没有存档时也能正常展示账号级数据
4. 数据加载失败时页面表现可控