This commit is contained in:
2026-04-24 12:21:33 +08:00
parent 3528980645
commit 70b5a7cf73
515 changed files with 14971 additions and 6831 deletions

View File

@@ -0,0 +1,55 @@
# RPG 创作结果页编辑功能迁移审计
日期:`2026-04-24`
## 本次发现
`generate_characters` / `generate_landmarks` 后端已经迁到 Rust但前端 Agent 结果页看不到入口,原因不是后端能力缺失,而是:
1. `RpgCreationResultViewImpl``compactAgentResultMode=true` 时隐藏 `createActionLabel / onCreateAction`
2. `PlatformEntryFlowShellImpl` 对 Agent 草稿结果页传入了 `compactAgentResultMode={isAgentDraftResultView}`
3. 结果页原有“新增可扮演角色 / 新增场景角色 / 新增场景”仍走 legacy `rpgCreationAssetClient`,只改前端内存态,不会触发 Agent action。
## 本次前端修复
已改为:
```text
Agent 结果页点击新增场景角色 / 新增场景
-> RpgCreationResultView.onGenerateEntity
-> autosaveCoordinator.executeAgentActionAndWait
-> POST /api/runtime/custom-world/agent/sessions/:sessionId/actions
-> generate_characters / generate_landmarks
-> 等 operation completed
-> 拉最新 session
-> rpgCreationPreviewAdapter.buildPreviewFromSession
-> 刷新结果页 profile
```
说明:当前可扮演角色 tab 的“新增可扮演角色”也会调用 `generate_characters`,后端现阶段会追加到 `storyNpcs`。因此严格意义上的“新增可扮演角色”仍未完整迁移,需要后续给 action 增加角色类型参数或新增 `generate_playable_characters`
## 已迁移 / 可见
1. 删除作品:已有 Rust + SpacetimeDB 软删除链路。
2. 新增场景角色:结果页可见,调用 Rust `generate_characters`
3. 新增场景 / 地点:结果页可见,调用 Rust `generate_landmarks`
4. Agent 结果页发布进入世界:已有 `publish_world` + publish gate 链路。
5. 手动编辑结果页 profile目前仍通过 `sync_result_profile` 自动保存回 Agent session。
## 尚未完整迁移的结果页编辑功能
1. 新增可扮演角色:前端有入口,但 Rust action 暂无角色类型区分,当前会落到 `storyNpcs`
2. 批量删除场景角色:前端只改本地 profile再靠 `sync_result_profile` 同步,不是独立 Rust action。
3. 批量删除场景:前端只改本地 profile再靠 `sync_result_profile` 同步,不是独立 Rust action。
4. 单个角色 / 场景的细粒度编辑:前端 modal 仍编辑本地 profile再靠 `sync_result_profile` 同步SpacetimeDB 虽有 `update_draft_card`,但结果页表单尚未按 card section action 化。
5. 角色资产生成:`generate_role_assets / sync_role_assets` Rust 侧仍是 placeholder 或外部链路未完全接入结果页。
6. 场景资产生成:`generate_scene_assets / sync_scene_assets` Rust 侧仍是 placeholder 或外部链路未完全接入结果页。
7. 长尾补全:`expand_long_tail` Rust 侧仍是 placeholder。
8. 回滚 checkpointRust 有 `revert_checkpoint`,但结果页没有清晰可见入口。
## 下一步建议
1.`generate_characters` 增加 `roleType: playable|story` 契约,并让可扮演角色 tab 真正落到 `playableNpcs`
2. 将删除角色 / 删除场景改为独立 action避免继续依赖整份 profile 同步。
3. 将角色 / 场景编辑 modal 的保存改为 `update_draft_card` 或更细粒度 reducer而不是每次整份 profile 覆盖。
4. 继续迁移 `generate_role_assets / generate_scene_assets / expand_long_tail`,并在结果页显示对应入口。