Files
Genarrative/server-rs/crates/spacetime-module
2026-04-21 19:17:31 +08:00
..
2026-04-21 19:17:31 +08:00
2026-04-21 19:17:31 +08:00
2026-04-21 19:17:31 +08:00

spacetime-module 主工程 crate 占位说明

日期:2026-04-20

1. crate 职责

spacetime-module 是新后端的 SpacetimeDB 主工程 crate后续负责

  1. 聚合各独立模块 crate 的表定义
  2. 聚合各独立模块 crate 的 reducer
  3. 聚合各独立模块 crate 的 view / 读模型
  4. 生成可发布的 SpacetimeDB wasm 模块
  5. ../../scripts/spacetime-dev.ps1../../scripts/spacetime-dev.sh 驱动的本地 standalone 启动链路

2. 当前阶段说明

当前阶段已落下第一批真实 schema 骨架,并已补齐本地 standalone 启动脚本,先把 SpacetimeDB 进程入口与首版资产对象表固定下来。

后续与本 crate 直接相关的任务包括:

  1. 继续扩充模块聚合入口
  2. 继续设计表、reducer、view 的聚合方式
  3. 接入身份 claims 透传
  4. 在当前 scaffold 基础上接入 publish / dev 循环

当前已落地:

  1. spacetime-module 真实 cdylib crate scaffold
  2. asset_object 首版表骨架
  3. bucket + object_key 双列对象定位索引
  4. module-assets 的访问策略与字段校验类型接入
  5. 面向 Axum 的 asset_object 确认持久化入口
  6. asset_entity_binding 通用绑定表
  7. 面向 Axum 的 bind_asset_object_to_entity_and_return 绑定 procedure

asset_object 的详细设计见:

  1. ../../../docs/technical/SPACETIMEDB_ASSET_OBJECT_TABLE_DESIGN_2026-04-21.md
  2. ../../../docs/technical/ASSET_ENTITY_BINDING_REDUCER_DESIGN_2026-04-21.md

当前身份透传设计依据:

  1. ../../../docs/technical/OIDC_JWT_CLAIMS_DESIGN_2026-04-21.md

当前本地开发脚本约定:

  1. ../../scripts/spacetime-dev.ps1../../scripts/spacetime-dev.sh 当前固定执行 spacetime start 的 standalone 模式。
  2. 默认监听 127.0.0.1:3000,与 spacetime CLI 的 local server 默认口径保持一致。
  3. 本地数据目录固定到 server-rs/.spacetimedb/local,避免污染全局 SpacetimeDB 根目录。
  4. 当前阶段暂不自动 publish crates/spacetime-module,待 module 实体 scaffold 与聚合入口落地后再扩展。

3. 边界约束

  1. spacetime-module 只聚合状态模型,不直接承接 HTTP、Cookie、Header、OSS、短信、微信、LLM 等外部副作用。
  2. 每个业务模块优先在自己的 crates/module-* 中定义状态与规则,再由主工程聚合。
  3. 主工程不重新吞并各模块实现细节,避免回到单大包结构。