Files
Genarrative/docs/design/CREATION_WORK_CARD_DELETE_ICON_DESIGN_2026-04-24.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
Raw Blame History

创作页作品删除入口设计 2026-04-24

背景

创作页作品卡曾把删除作为底部大按钮展示,并且只对带 profileId 的 RPG 作品传入删除回调,导致大鱼、拼图、以及部分草稿作品没有删除入口。用户预期是:删除不是主操作,放在卡片右上角的小 icon 即可;任何作品都应该能删除。

落地规则

  • 作品卡整体就是继续创作 / 继续完善 / 查看详情入口,不再在底部展示“继续完善”等重复主按钮。
  • 作品卡右上角固定展示删除 icon底部主操作区只保留体验等必须独立触发的正向操作。
  • 点击作品卡任意非独立按钮区域都进入继续完善链路;点击删除或体验时不得冒泡触发作品卡打开。
  • 作品卡保留键盘可访问性:焦点落在卡片时按 Enter 或空格等同点击作品,焦点落在删除 / 体验按钮时只执行对应按钮动作。
  • 删除入口不按发布状态隐藏:草稿、已发布作品均可删除。
  • 删除入口不按玩法类型隐藏RPG、大鱼吃小鱼、拼图作品均应在创作页可删除。
  • 点击删除前保留浏览器确认弹窗,避免误触;删除中仅禁用当前作品卡的删除 icon。
  • 删除成功后刷新或替换对应玩法的作品列表,确保卡片立即消失。

工程边界

  • 前端只负责表现和触发删除,实际删除由 server-rs API 与 SpacetimeDB 模块过程完成。
  • 大鱼作品按 sourceSessionId 删除创作 session并同步清理消息、素材槽和运行快照。
  • 拼图作品按 profileId 删除作品 profile并同步清理来源 Agent session、消息和入口运行快照。
  • RPG 已发布/持久草稿按 profileId 走既有自定义世界删除链路;纯 Agent session 草稿按 sessionId 走 owner-only session 删除过程,并清理消息、操作与草稿卡。
  • 自定义世界 Agent 的异步进度写回必须通过 upsert_custom_world_agent_operation_progress 过程落到 SpacetimeDBserver-rs 只做字符串入参与过程封装,不在 API 层维护额外进度状态。
  • server-rs 的删除路由使用 Axum 标准 Path(sessionId) 提取参数,并在进入 SpacetimeDB 前做 owner-only 与空值校验,避免 handler 签名和过程入参漂移。