# 拼图本地运行态通关排行榜误请求修复记录 ## 问题现象 拼图关卡完成后,右下角会弹出错误提示,内容表现为拼图 `run` 不存在。 ## 根因 当前拼图玩法仍有一条前端本地兜底链路: 1. 进入拼图测试或公开作品体验时,前端先创建 `local-puzzle-run-*` 形式的本地运行态。 2. 这类 `run` 只存在于前端内存,不存在后端持久化记录。 3. 通关副作用里却统一调用了后端 `submitPuzzleLeaderboard(runId, payload)`。 4. 后端拿到本地 `runId` 后无法找到真实记录,于是返回“run 不存在”,最终在运行时右下角暴露成错误提示。 ## 修复口径 本次不改后端接口,也不把本地兜底 run 强行持久化到后端,而是先把边界收口到前端: 1. 显式识别 `local-puzzle-run-*` 这类本地 run。 2. 本地 run 通关后不再请求后端排行榜接口。 3. 直接在前端本地生成只包含当前玩家成绩的排行榜数据,保证结算弹窗仍可展示成绩。 4. 真实后端 run 仍继续走正式排行榜提交流程,不影响后续 Rust / SpacetimeDB 版本的统一收口。 ## 经验结论 只要某条玩法链路还保留“本地 run / 本地快照”兜底,就不能在通关、副作用、排行榜、下一关等后置动作里默认把它当成后端真 run 使用。必须先做运行态来源分流,再决定是否调用依赖真实 runId 的接口。