修复钱包流水枚举追加顺序

将会员周期流水枚举追加到已发布枚举末尾

重新生成 SpacetimeDB Rust 绑定保持枚举判别序号兼容

补充 SpacetimeDB 持久化枚举追加约束文档
This commit is contained in:
2026-07-09 20:12:16 +08:00
parent 12ba0e95f3
commit 6ddde830ef
4 changed files with 22 additions and 13 deletions
@@ -1495,6 +1495,14 @@
- 验证:发布前运行 `npm run check:spacetime-schema`,完成 schema 检查、bindings 生成、表目录更新和相关 smoke。
- 关联:`docs/technical/SPACETIMEDB_SCHEMA_CHANGE_CONSTRAINTS.md``docs/technical/SPACETIMEDB_TABLE_CATALOG.md`
## SpacetimeDB 持久化 enum 新 variant 只能末尾追加
- 现象:生产发布时 schema 迁移失败,或旧数据中的 enum 判别序号被新代码解释成其它业务枚举值。
- 原因:SpacetimeDB schema 会保存 enum variant 顺序;在已有持久化 enum 中间插入新 variant,会让后续 variant 的判别序号整体移动。即使 Rust 代码能编译,发布到已有数据库也可能炸。
- 处理:给已发布并持久化的 enum 增加 variant 时,只能追加到 enum 末尾;同步运行 `npm run spacetime:generate` 刷新 bindings,不能手工把 generated bindings 改成另一套顺序。需要调整既有 variant 顺序、删除或重命名时,必须先确认数据迁移方案。
- 验证:`npm run check:spacetime-schema` 应通过;对照本次修改前后的 enum,所有旧 variant 顺序必须完全不变,新 variant 只出现在末尾。
- 关联:`server-rs/crates/module-runtime/src/domain.rs``server-rs/crates/spacetime-client/src/module_bindings/``docs/technical/SPACETIMEDB_SCHEMA_CHANGE_CONSTRAINTS.md`
## SpacetimeDB publish 报 wasm-bindgen 时先查 shared-contracts feature
- 现象:发布 `spacetime-module` 时报 `wasm-bindgen detected`,提示 `wasm-bindgen is only for webassembly modules that target the web platform`