fix: refresh custom world publish gate diagnostics
This commit is contained in:
@@ -173,3 +173,20 @@ Rust 首版沿用这些结论,但不要求一次性照搬旧 Node 的全部多
|
||||
3. `server-rs/crates/spacetime-module/src/lib.rs`
|
||||
4. `server-rs/crates/module-custom-world/src/lib.rs`
|
||||
5. `docs/technical/SPACETIMEDB_CUSTOM_WORLD_WORKS_AND_AGENT_EXTENSION_STAGE9_DESIGN_2026-04-22.md`
|
||||
|
||||
## 2026-04-24 发布阻断快照刷新修正
|
||||
|
||||
### 问题
|
||||
- 现象:生成 foundation draft 后,结果页已经能看到玩家 premise、主线章节、第一幕场景幕,但底部仍显示旧的发布阻断项,并禁用“发布并进入世界”。
|
||||
- 根因:前端结果页直接消费 `session.resultPreview.blockers`。当当前页面 profile 已经补齐结构字段,但服务端 `resultPreview` 仍停留在上一轮快照时,展示态与可点击态会被旧 blocker 锁住。
|
||||
- 次要根因:进入世界前的 `sync_result_profile` 发现当前页面 profile 与 session preview 签名一致时会短路,导致旧 `publish_gate_json/result_preview_json` 没机会被强制重算。
|
||||
|
||||
### 落地方案
|
||||
- `PlatformEntryFlowShellImpl` 在 Agent 草稿结果页按当前 `generatedCustomWorldProfile` 判断旧结构 blocker 是否已过期,文案继续沿用后端 `resultPreview.blockers`,前端不新增重复中文提示。
|
||||
- 非结构类 blocker 继续继承服务端快照,避免把真实质量阻断误放行。
|
||||
- `useRpgCreationResultAutosave.syncAgentDraftResultProfile` 在 `agentSession.resultPreview.publishReady === false` 时不走签名短路,发布前会调用后端 `sync_result_profile` 重建 `publish_gate_json/result_preview_json`。
|
||||
- `api-server` 在读取 session 以及执行 `draft_foundation/sync_result_profile/publish_world` 后写入 `custom_world.publish_gate` 诊断日志,记录 blocker code、preview 来源与关键门禁字段是否为空;前端只显示简洁阻断数量,不展示字段细节。
|
||||
|
||||
### 验收点
|
||||
- 生成草稿后,如果当前 profile 已包含 `playerPremise` 或 `anchorContent.playerEntryPoint`、`coreConflicts`、`chapters/sceneChapterBlueprints` 与至少一个 `acts`,结果页不再继续显示旧结构 blocker。
|
||||
- 点击“发布并进入世界”前仍会同步到 SpacetimeDB reducer,由后端重新计算最终发布门禁;若仍有非结构质量 blocker,按钮仍保持阻断。
|
||||
|
||||
Reference in New Issue
Block a user