Files
Genarrative/docs/technical/RUST_WORKSPACE_DEPENDENCY_CONSOLIDATION_2026-05-07.md
kdletters df80876f60
Some checks failed
CI / verify (push) Has been cancelled
Consolidate workspace deps and migrate sha1 to sha2
2026-05-07 21:11:14 +08:00

3.5 KiB
Raw Blame History

Rust workspace 依赖集中配置记录

日期:2026-05-07

1. 背景

server-rs workspace 已经包含 api-serverspacetime-modulespacetime-client、多个 module-* 领域 crate、platform-* 适配 crate 和共享 crate。随着 DDD 收口推进,成员 Cargo.toml 中重复散写了第三方 crate 版本和本地 path 依赖,后续升级 serdereqwesttokiotime、SpacetimeDB SDK 或内部 crate 路径时容易出现漂移。

本次只做 Cargo 配置收敛不改变业务代码、表结构、reducer/procedure 签名、HTTP contract 或前端绑定。

2. 配置规则

  1. 共享第三方依赖版本统一维护在 server-rs/Cargo.toml[workspace.dependencies]
  2. workspace 内部 crate 的 path 也统一维护在根 server-rs/Cargo.toml
  3. 成员 crate 默认使用 { workspace = true } 继承依赖。
  4. 成员 crate 只保留自身需要表达的差异,例如 featuresoptional = true 或 target-specific dependency。
  5. 需要关闭 default features 的依赖,应优先在 workspace 根依赖中声明;成员 crate 不再重复覆盖同一项。
  6. module-assets 这类有默认服务端 feature 的领域 crate在 workspace 根内按 default-features = false 维护;需要服务端 OSS/HTTP 能力的 adapter crate 显式启用 features = ["server-service"]

3. 本次收敛范围

已上提到 workspace 根的依赖包括:

  1. 本地路径依赖:module-*platform-*shared-*spacetime-client
  2. 常用第三方依赖:serdeserde_jsonserde_urlencodedreqwesttokiotimetracingbase64hmacsha2uuidurl 等。
  3. SpacetimeDB 相关依赖:spacetimedbspacetimedb-sdkspacetimedb-lib

spacetimedb-lib 在 workspace 根统一关闭 default featuresspacetime-module 只继承并补充 features = ["serde"]。这样避免成员 crate 尝试覆盖 workspace default-feature 设定导致 manifest 解析失败。

阿里云 OSS 相关签名不再依赖不推荐的 sha1 crate统一使用 sha2::Sha256

  1. 浏览器直传 ticket 使用 OSS V4 表单签名字段:x-oss-signature-version=OSS4-HMAC-SHA256x-oss-credentialx-oss-datex-oss-signature
  2. 服务端 OSS 读写请求和测试辅助签名统一使用 OSS4-HMAC-SHA256 Authorization。
  3. 阿里云短信 OpenAPI 请求统一使用 ACS3-HMAC-SHA256 请求头签名,不再在表单中传旧 SignatureMethod=HMAC-SHA1 / SignatureVersion=1.0

4. 不在本次范围

  1. 不新增或删除 crate。
  2. 不修改 server-rs workspace members / default-members 语义。
  3. 不修改 SpacetimeDB 表、reducer、procedure、migration 白名单或生成绑定。
  4. 不改变 module-* 的 DDD 依赖方向。

5. 验收口径

配置改动后至少执行:

cargo metadata --manifest-path server-rs\Cargo.toml --format-version 1 --no-deps
cargo check -p api-server --manifest-path server-rs\Cargo.toml
cargo check -p spacetime-module --manifest-path server-rs\Cargo.toml
npm.cmd run check:server-rs-ddd
npm.cmd run check:encoding -- docs/technical/RUST_WORKSPACE_DEPENDENCY_CONSOLIDATION_2026-05-07.md docs/technical/README.md server-rs/README.md .hermes/shared-memory/decision-log.md .hermes/shared-memory/project-overview.md

若仅改 Cargo 依赖配置且未触碰 API smoke 相关代码,不强制启动 npm run api-server;若后续改动同时涉及 API 路由、SpacetimeDB facade 或运行时行为,仍按 AGENTS.md 和 DDD 文档执行后端 smoke。