feat: add puzzle and big fish draft generation progress

This commit is contained in:
2026-04-25 15:17:01 +08:00
parent 1b2daf4796
commit 9cb3c6a27e
10 changed files with 898 additions and 33 deletions

View File

@@ -0,0 +1,18 @@
# 拼图 Agent 操作回包收口说明
## 背景
拼图结果页在执行 `select_puzzle_image` 时,前端先调用 `POST /api/runtime/puzzle/agent/sessions/:sessionId/actions`,随后又调用 `GET /api/runtime/puzzle/agent/sessions/:sessionId` 拉取完整会话。完整会话包含消息、草稿与结果预览,体积明显大于一次选图操作本身,导致选择候选图时出现无意义流量与体感延迟。
## 落地规则
- `actions` 接口在服务端本来已经拿到变更后的 session因此回包必须直接包含 `operation + session`
- 前端收到 `actions` 回包后直接用 `session` 更新本地状态,不再为了同步选图、生成图片或编译草稿而补发完整会话 `GET`
- `publish_puzzle_work` 发布后仍由服务端重新读取一次最新 session 并放入同一个 action response前端只保留作品架与广场详情的必要刷新。
- 该改动只收敛 Rust api-server 与前端 contract不引入 server-node 兼容逻辑。
## 验收口径
1. 选择拼图候选图只产生一次 `POST /actions`,不再紧跟完整 session `GET`
2. 选图后结果页仍立即反映选中的正式图。
3. 发布后仍能跳转到已发布拼图详情。

View File

@@ -0,0 +1,46 @@
# 拼图与大鱼吃小鱼草稿生成进度页落地方案2026-04-25
## 背景
RPG 在点击生成草稿后会离开聊天工作区,进入独立的生成进度页,并在该页展示生成链路的阶段、锚点与最终草稿内容。拼图与大鱼吃小鱼此前点击“生成结果页”后直接跳到结果页,正式图片、动作与背景仍分散在结果页工坊里逐个生成,导致用户无法看到“正在一次性准备完整草稿”的过程。
## 落地边界
- 前端只负责展示生成进度与触发已有后端动作,不新增 server-node 或 PostgreSQL 链路。
- 后端继续沿用 `server-rs` + SpacetimeDB 的会话、草稿与资产写入能力;“一次性生成所有需要的东西”必须由 `server-rs` 的 compile action 承担,前端只发起一次 action 并展示进度页。
- 拼图生成草稿链路必须包含:结果页草稿、候选图生成、正式图确认。
- 大鱼吃小鱼生成草稿链路必须包含:玩法草稿、关卡主图、动作素材、场地背景。
- 生成过程中展示的“角色描述、角色图片、动作”等,统一映射为锚点、草稿蓝图与资产步骤,不把规则说明类文本写成默认 UI 文案。
## 交互设计
1. 用户在拼图或大鱼吃小鱼 Agent 工作区点击生成按钮。
2. 页面立即切换到独立生成进度页,同时只向 `server-rs` 发起一次 compile action返回按钮在生成中禁用避免中途回退造成状态漂移。
3. 进度页左侧展示阶段进度、步骤卡片与错误信息;右侧展示当前锚点与已成形的草稿结构。
4. 全量生成成功后自动进入对应结果页,结果页直接展示已生成的资产。
5. 生成失败时停留在进度页,用户可返回工作区补充设定,或点击重试重新执行完整草稿链路。
## 阶段映射
### 拼图
- `compile_puzzle_draft`:在 `server-rs` 内整理主题、主体、构图与标签,写入结果页草稿。
- `compile_puzzle_draft`:同一次后端 action 内根据草稿摘要生成候选图。
- `compile_puzzle_draft`:同一次后端 action 内自动选择第一张候选图作为正式图。
- `ready`:进入拼图结果页。
### 大鱼吃小鱼
- `big_fish_compile_draft`:在 `server-rs` 内生成玩法草稿、关卡角色描述、背景蓝图与运行参数。
- `big_fish_compile_draft`:同一次后端 action 内按每个关卡生成主角色/鱼群图片。
- `big_fish_compile_draft`:同一次后端 action 内按每个关卡生成 `idle_float``move_swim` 动作素材。
- `big_fish_compile_draft`:同一次后端 action 内生成玩法场地背景。
- `ready`:进入大鱼吃小鱼结果页。
## 验收点
- 拼图和大鱼吃小鱼点击生成草稿后不再直接停留在聊天工作区等待。
- 生成中可看到独立进度页,且进度步骤随 action 完成逐步推进。
- 拼图结果页打开时已有正式图;大鱼结果页打开时主图、动作和背景资产均已写入 `assetSlots`
- 前端点击生成草稿时不串行调用多个资产 action多阶段业务编排收敛在 `server-rs`
- 不新增 server-node 依赖,不复活 legacy public 静态资产路径。

View File

@@ -5,10 +5,12 @@
## 文档列表
- [API_ERROR_DETAILS_MESSAGE_DISPLAY_FIX_2026-04-25.md](./API_ERROR_DETAILS_MESSAGE_DISPLAY_FIX_2026-04-25.md):记录统一 API envelope 错误展示优先读取 `error.details.message` 的修复口径,避免 Big Fish 发布校验等业务错误只显示通用“请求参数不合法”。
- [PUZZLE_BIG_FISH_DRAFT_PROGRESS_AND_ASSET_CHAIN_2026-04-25.md](./PUZZLE_BIG_FISH_DRAFT_PROGRESS_AND_ASSET_CHAIN_2026-04-25.md):冻结拼图与大鱼吃小鱼点击生成草稿后进入独立进度页,并一次性生成草稿、图片与动作资产的前端编排边界。
- [BIG_FISH_DIRECTION_TOUCH_CONTROL_2026-04-24.md](./BIG_FISH_DIRECTION_TOUCH_CONTROL_2026-04-24.md):记录大鱼吃小鱼从固定摇杆改为屏幕首触点方向控制,并要求本地直达局在未操作时保持对象运动。
- [RUST_WORKSPACE_DEFAULT_BUILD_SCOPE_FIX_2026-04-25.md](./RUST_WORKSPACE_DEFAULT_BUILD_SCOPE_FIX_2026-04-25.md):记录 `server-rs` 无参数 `cargo build` 链接 `spacetime-module` 失败的根因,并冻结默认只构建原生 `api-server`、模块产物继续走 `spacetime build` 的命令边界。
- [BIG_FISH_DIRECT_ROUTE_PLAYGROUND_2026-04-24.md](./BIG_FISH_DIRECT_ROUTE_PLAYGROUND_2026-04-24.md):记录 `/big-fish` 大鱼吃小鱼玩法直达入口,明确复用现有 `BigFishRuntimeShell` 和本地占位运行态的调试边界。
- [PUZZLE_DIRECT_ROUTE_PLAYGROUND_2026-04-24.md](./PUZZLE_DIRECT_ROUTE_PLAYGROUND_2026-04-24.md):记录 `/puzzle` 拼图玩法直达入口,明确复用现有 `PuzzleRuntimeShell` 和本地占位图运行态的调试边界。
- [PUZZLE_AGENT_ACTION_RESPONSE_SESSION_2026-04-25.md](./PUZZLE_AGENT_ACTION_RESPONSE_SESSION_2026-04-25.md):记录拼图 Agent `actions` 回包直接携带最新 session避免选图后额外拉取完整会话大包的接口收口规则。
- [CREATION_AGENT_PUBLISH_GATE_NORMALIZE_WRITEBACK_FIX_2026-04-24.md](./CREATION_AGENT_PUBLISH_GATE_NORMALIZE_WRITEBACK_FIX_2026-04-24.md):记录结果页 profile 归一化回写丢失顶层 `worldHook / playerPremise` 导致 publish gate 继续误报结构 blocker 的根因,并冻结前端归一化保留发布字段的修复口径。
- [CUSTOM_WORLD_RESULT_ENTITY_GENERATION_FIX_2026-04-24.md](./CUSTOM_WORLD_RESULT_ENTITY_GENERATION_FIX_2026-04-24.md):记录世界结果页在 Agent 草稿模式下新增场景、新增 NPC 生成成功但结果页字段不可用的根因,并冻结 `api-server` 生成归一化层补齐 profile 字段的修复口径。