Files
Genarrative/docs/design/PLATFORM_WORK_DETAIL_AND_REMIX_DESIGN_2026-04-28.md
2026-04-29 11:51:04 +08:00

5.0 KiB
Raw Blame History

平台统一作品详情页与 Remix 数据链路设计

更新时间:2026-04-28

1. 本次目标

  1. 平台首页、公开广场、分类列表中的每个公开作品点击后,统一先进入作品详情页,不再直接启动玩法。
  2. 作品详情页结构参考 TapTap 详情页:顶部封面图、作品基础信息、右侧 Remix 按钮、四项统计、简介内容、底部启动按钮。
  3. 删除参考图顶部 Tab不接入评价和论坛功能不展示“开发者的话”模块。
  4. 统计数据必须从数据库读模型贯穿到前端展示,禁止在前端用假字段、游玩数冒充点赞数或固定文案代替真实字段。
  5. Remix 按钮必须由后端事务复制公开作品为当前用户草稿,并同步增加原作品改造次数,成功后前端进入新草稿详情/结果页。

2. 详情页 UI 结构

统一详情页只做作品展示与动作入口,不承担规则说明。

  1. 顶部导航:返回按钮、标题“详情”、更多按钮占位;不展示“统计 / 详情 / 评价 / 论坛”Tab。
  2. 封面区:使用作品封面图作为主视觉,背景可用同图弱化铺底;缺图时只显示平台主题底,不新增说明文字。
  3. 基础信息区:
    • 左侧作品图标使用作品封面或首图。
    • 中间展示作品名、作者名、玩法类型。
    • 右侧原 TapTap 评分位置替换为 Remix 按钮。
  4. 统计区固定四项:
    • 改造次数:remixCount
    • 游玩次数:playCount
    • 点赞次数:likeCount
    • 上线日期:publishedAt
  5. 简介区:展示玩法标签和作品简介;不追加说明类文案。
  6. 底部动作:主按钮为“启动”,点击后进入对应玩法运行态并记录游玩次数。

3. 数据真相源

3.1 RPG 作品

  1. custom_world_profile 增加 play_countremix_countlike_count
  2. custom_world_gallery_entry 同步这三项统计,作为公开详情和首页卡片读模型。
  3. record_custom_world_profile_play 负责在公开作品启动前递增 play_count,只更新已发布且未删除作品。
  4. remix_custom_world_profile 在同一事务内:
    • 校验源作品已发布、未删除。
    • 递增源作品 remix_count 并刷新源作品 gallery。
    • 复制源 profile payload 为当前用户草稿,清空公开编号、发布时间与统计。
    • 返回新草稿 profile供前端进入草稿详情页。

3.2 拼图作品

  1. puzzle_work_profile 保留既有 play_count,新增 remix_countlike_count
  2. start_puzzle_run 继续作为游玩次数递增入口。
  3. remix_puzzle_work 在同一事务内:
    • 校验源 profile 为已发布作品。
    • 递增源作品 remix_count
    • 新建当前用户拼图 Agent session并把源作品锚点、封面、简介复制为草稿。
    • 新建当前用户草稿 profile统计归零返回新草稿 session 与 profile。
  4. API facade 解析拼图 item_json / items_json 时必须兼容历史公开作品缺失 play_countremix_countlike_count 的 JSON缺失值统一按 0 处理;新写入数据仍必须写全统计字段。

3.3 大鱼吃小鱼作品

  1. big_fish_creation_session 现有 play_count 继续作为游玩统计,新增 remix_countlike_countpublished_at
  2. publish_big_fish_game 写入 published_at,公开列表和详情用它展示上线日期。
  3. record_big_fish_play 继续作为游玩次数递增入口。
  4. remix_big_fish_work 在同一事务内:
    • 校验源 session 为已发布作品。
    • 递增源作品 remix_count
    • 新建当前用户创作 session复制锚点、草稿和资源槽阶段回到可编辑草稿态。
    • 新 session 的统计归零,返回新草稿 session。

4. API 与前端接入

  1. 三类公开作品摘要统一返回:playCountremixCountlikeCountpublishedAt
  2. Remix API
    • RPGPOST /api/runtime/custom-world-gallery/{owner_user_id}/{profile_id}/remix
    • 拼图:POST /api/runtime/puzzle/gallery/{profile_id}/remix
    • 大鱼:POST /api/runtime/big-fish/gallery/{session_id}/remix
  3. 前端统一详情页只消费读模型字段,不自行派生统计。
  4. 首页卡片点击只设置统一详情状态;启动与 Remix 只能在详情页触发。
  5. Remix 成功后的跳转:
    • RPG进入复制出的草稿详情。
    • 拼图:进入复制出的拼图结果页草稿。
    • 大鱼:进入复制出的大鱼结果页草稿。

5. 验收点

  1. 三类作品从首页点击均先进入统一作品详情页。
  2. 详情页无评价、论坛 Tab无开发者的话模块。
  3. 四项统计在前端、共享契约、API facade、SpacetimeDB 表之间字段一致。
  4. Remix 后原作品改造次数增加,新草稿归当前用户所有,且不会继承源作品统计。
  5. 启动公开作品会走对应后端记录入口,刷新后仍能看到递增后的游玩次数。
  6. 修改后运行编码检查、SpacetimeDB 绑定生成、Rust 检查和必要前端测试。