Add user played work stats for puzzle and big fish
Some checks failed
CI / verify (pull_request) Has been cancelled

This commit is contained in:
2026-04-28 12:58:31 +08:00
parent bb4100fca4
commit 377d7d0412
21 changed files with 1028 additions and 82 deletions

View File

@@ -17,6 +17,19 @@
4. 入口必须在移动端单手可点,不遮挡舞台主体。
5. 规则内容只做说明,不参与任何前端裁决;真实规则仍以后端运行快照为准。
## 游玩统计规则
所有作品都需要对自身以及用户做游玩统计。
大鱼吃小鱼正式运行时必须遵守:
1. 正式开始游玩已发布作品时,更新作品自身播放统计。
2. 已登录用户写入 `profile_played_world``world_key = big-fish:{session_id}`
3. `profile_id` 保存大鱼作品号/会话号,`world_type = BIG_FISH`
4. `world_title` 使用玩法草稿标题,`world_subtitle` 优先使用副标题,其次使用核心乐趣。
5. `owner_user_id` 使用大鱼作品归属用户 ID。
6. 退出或结算上报 `elapsedMs` 后,后端按增量刷新 `profile_dashboard_state.total_play_time_ms` 和明细中的 `last_observed_play_time_ms`
## 落地范围
1. `src/components/big-fish-runtime/BigFishRuntimeShell.tsx`

View File

@@ -169,6 +169,24 @@ Node 侧入口位于:
## 4. 本轮边界决议
### 4.0 统一游玩统计规则
所有作品都需要对自身以及用户做游玩统计。
正式游玩开始时,玩法自己的作品真相表必须先更新自身统计;已登录用户还必须同步 upsert `profile_played_world` 明细。用户侧明细不是单纯计数,必须保留可跳转的稳定作品标识:
1. `world_key`
2. `world_type`
3. `profile_id`
4. `world_title`
5. `world_subtitle`
6. `owner_user_id`
7. `first_played_at`
8. `last_played_at`
9. `last_observed_play_time_ms`
当玩法有可观测时长时,后端按增量刷新 `profile_dashboard_state.total_play_time_ms`,并同步推进对应 `profile_played_world.last_observed_play_time_ms`
### 4.1 先做 projection 读链
本轮 profile 三接口只做:

View File

@@ -39,6 +39,15 @@
新增拼图成绩表,按“关卡作品 + 网格规格 + 用户”维护最佳成绩。
正式开始拼图关卡时还必须同步用户玩过作品明细:
1. 作品自身统计继续更新 `puzzle_work_profile.play_count`
2. 已登录用户写入 `profile_played_world``world_key = puzzle:{profile_id}`
3. `profile_id` 保存拼图作品号,`world_type = PUZZLE`
4. `world_title` 使用关卡名,`world_subtitle` 使用作品摘要,`owner_user_id` 使用拼图作者用户 ID。
5. 下一关切换到新 `profile_id` 时按同一规则再次写入。
6. 排行榜提交携带的 `elapsedMs` 是本关可观测时长,后端按增量累计到 `profile_dashboard_state.total_play_time_ms`
建议字段:
1. `entry_id`