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