# RPG 生成流程刷新恢复与即时持久化设计(2026-04-24) ## 背景 - RPG 共创从 Agent 聊天页触发 `draft_foundation` 后进入生成过程页。 - 旧实现只持久化 `activeSessionId` 与 `activeOperationId`,刷新时恢复入口会无条件回到 Agent 聊天页。 - operation 失败后继续创作也会因为 operation 指针被清空而缺失生成页上下文。 ## 目标 1. 生成中刷新网页后仍停留在生成过程页。 2. 生成完成后结果页内容第一时间落入作品持久化链路。 3. 生成失败后从创作入口继续处理该草稿时,优先回到生成过程页展示失败状态,而不是 Agent 聊天页。 ## 落地规则 - 前端只保存恢复指针,不在 UI 持久层复制世界数据。 - `sessionStorage` 与 URL query 中增加生成页来源字段 `customWorldGenerationSource`,当前仅支持 `agent-draft-foundation`。 - 初始恢复时: - 若存在 `activeOperationId` 且来源为 `agent-draft-foundation`,先进入 `custom-world-generating`。 - 否则若 session 已经可构建结果预览,进入 `custom-world-result`。 - 其他情况进入 `agent-workspace`。 - operation 进入 `completed` 或 `failed` 后仍保留 `activeOperationId`,直到用户离开、重新发起操作或清理工作区,保证刷新和继续创作能恢复完成/失败状态。 - 生成完成后由 `useRpgCreationResultAutosave` 在结果页立即保存。生成页跳结果页前必须先同步最新 session 并写入 `generatedCustomWorldProfile`,确保自动保存消费的是最新快照。 ## 验收点 - 生成中刷新:URL/sessionStorage 可恢复 `custom-world-generating`,页面显示“世界草稿生成进度”。 - 生成失败刷新或继续创作:页面仍显示生成过程页和失败信息,不展示 Agent 聊天页。 - 生成完成:跳到结果页后触发 `upsertRpgWorldProfile`,保存请求带 `sourceAgentSessionId`。