4.0 KiB
4.0 KiB
RPG 创作结果页编辑功能迁移审计
日期:2026-04-24
本次发现
generate_characters / generate_landmarks 后端已经迁到 Rust,但前端 Agent 结果页看不到入口,原因不是后端能力缺失,而是:
RpgCreationResultViewImpl在compactAgentResultMode=true时隐藏createActionLabel / onCreateAction。PlatformEntryFlowShellImpl对 Agent 草稿结果页传入了compactAgentResultMode={isAgentDraftResultView}。- 结果页原有“新增可扮演角色 / 新增场景角色 / 新增场景”仍走 legacy
rpgCreationAssetClient,只改前端内存态,不会触发 Agent action。
本次前端修复
已改为:
补充修复:RpgCreationResultViewImpl 已补齐 previewSourceLabel props 解构,避免 Agent 结果页在渲染数据源提示时触发 ReferenceError。
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 并传入 roleType=playable,Rust 会写入 draftProfile.playableNpcs;场景角色则写入 draftProfile.storyNpcs。
已迁移 / 可见
- 删除作品:已有 Rust + SpacetimeDB 软删除链路。
- 新增可扮演角色:结果页可见,调用 Rust
generate_characters(roleType=playable)并写入playableNpcs。 - 新增场景角色:结果页可见,调用 Rust
generate_characters(roleType=story)并写入storyNpcs。 - 新增场景 / 地点:结果页可见,调用 Rust
generate_landmarks并写入landmarks。 - 批量删除场景角色:结果页可见,调用 Rust
delete_characters,同步删除 profile 与 draft card。 - 批量删除场景:结果页可见,调用 Rust
delete_landmarks,同步删除 profile、连接与 draft card。 - 角色资产准备:结果页角色卡可见“生成资产”,调用 Rust
generate_role_assets,进入visual_refining并聚焦角色。 - 场景资产准备:结果页场景卡可见“生成场景图”,调用 Rust
generate_scene_assets,进入visual_refining并聚焦场景。 - 角色资产同步:Rust
sync_role_assets会把portraitPath / generatedVisualAssetId / generatedAnimationSetId / animationMap写入 profile、draft card、asset coverage、preview、checkpoint、operation 与 message。 - 场景资产同步:Rust
sync_scene_assets会把imageSrc / generatedSceneAssetId / prompt / model写入 camp 或 landmark,并同步sceneChapters.acts、draft card、asset coverage、preview、checkpoint、operation 与 message。 - Agent 结果页发布进入世界:已有
publish_world+ publish gate 链路。 - 手动编辑结果页 profile:目前仍通过
sync_result_profile自动保存回 Agent session。
尚未完整迁移的结果页编辑功能
- 单个角色 / 场景的细粒度编辑:前端 modal 仍编辑本地 profile,再靠
sync_result_profile同步;SpacetimeDB 虽有update_draft_card,但结果页表单尚未按 card section action 化。 - 长尾补全:
expand_long_tail本轮明确排除,Rust 侧仍是 placeholder。 - 回滚 checkpoint:Rust 有
revert_checkpoint,但结果页没有清晰可见入口。
下一步建议
- 为
generate_characters增加roleType: playable|story契约,并让可扮演角色 tab 真正落到playableNpcs。 - 将删除角色 / 删除场景改为独立 action,避免继续依赖整份 profile 同步。
- 将角色 / 场景编辑 modal 的保存改为
update_draft_card或更细粒度 reducer,而不是每次整份 profile 覆盖。 - 继续迁移
generate_role_assets / generate_scene_assets / expand_long_tail,并在结果页显示对应入口。