docs: fix rust backend root layout decision
This commit is contained in:
@@ -19,7 +19,8 @@
|
|||||||
|
|
||||||
### 仓库边界
|
### 仓库边界
|
||||||
|
|
||||||
- [ ] 确认 Rust 后端新目录名与根目录落位方案
|
- [x] 确认 Rust 后端新目录名与根目录落位方案
|
||||||
|
交付物:[M0_REPOSITORY_BOUNDARY_DECISIONS_2026-04-20.md](./M0_REPOSITORY_BOUNDARY_DECISIONS_2026-04-20.md)
|
||||||
- [ ] 确认旧 `server-node/` 在迁移期继续保留,不提前删除
|
- [ ] 确认旧 `server-node/` 在迁移期继续保留,不提前删除
|
||||||
- [ ] 确认前端第一阶段仍然只访问 Axum,不直连 SpacetimeDB
|
- [ ] 确认前端第一阶段仍然只访问 Axum,不直连 SpacetimeDB
|
||||||
- [ ] 确认外部副作用统一收口在 Axum,不放进 SpacetimeDB 模块
|
- [ ] 确认外部副作用统一收口在 Axum,不放进 SpacetimeDB 模块
|
||||||
|
|||||||
@@ -0,0 +1,82 @@
|
|||||||
|
# M0:仓库边界决议
|
||||||
|
|
||||||
|
日期:`2026-04-20`
|
||||||
|
|
||||||
|
依据来源:
|
||||||
|
|
||||||
|
- [../docs/technical/SPACETIMEDB_AXUM_OSS_BACKEND_REWRITE_DESIGN_2026-04-20.md](../docs/technical/SPACETIMEDB_AXUM_OSS_BACKEND_REWRITE_DESIGN_2026-04-20.md)
|
||||||
|
- [00_MASTER_TASKLIST.md](./00_MASTER_TASKLIST.md)
|
||||||
|
- [01_M0_M2_FOUNDATION_AND_AUTH.md](./01_M0_M2_FOUNDATION_AND_AUTH.md)
|
||||||
|
|
||||||
|
## 1. 文档目的
|
||||||
|
|
||||||
|
这份文档用于持续冻结 `M0` 中与仓库边界直接相关的决策,避免进入 `M1` 后再反复改目录、改职责口径。
|
||||||
|
|
||||||
|
当前已确认的事项只包含第一条;后续几条会继续在这份文档上追加。
|
||||||
|
|
||||||
|
## 2. 边界决议状态
|
||||||
|
|
||||||
|
| 事项 | 当前状态 | 当前结论 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Rust 后端新目录名与根目录落位方案 | 已确认 | 新 Rust 后端固定为仓库根目录下的 `server-rs/`,与 `server-node/` 同级。 |
|
||||||
|
| 旧 `server-node/` 在迁移期继续保留,不提前删除 | 待确认 | 后续补充。 |
|
||||||
|
| 前端第一阶段仍然只访问 Axum,不直连 SpacetimeDB | 待确认 | 后续补充。 |
|
||||||
|
| 外部副作用统一收口在 Axum,不放进 SpacetimeDB 模块 | 待确认 | 后续补充。 |
|
||||||
|
|
||||||
|
## 3. 已确认决议一:`server-rs/` 固定落在仓库根目录
|
||||||
|
|
||||||
|
### 3.1 决议内容
|
||||||
|
|
||||||
|
本次重写固定采用以下仓库落位:
|
||||||
|
|
||||||
|
1. 新后端目录名固定为 `server-rs/`
|
||||||
|
2. 目录位置固定在仓库根目录
|
||||||
|
3. 与以下目录保持同级:
|
||||||
|
- `server-node/`
|
||||||
|
- `src/`
|
||||||
|
- `docs/`
|
||||||
|
- `packages/`
|
||||||
|
|
||||||
|
目标形态:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Genarrative/
|
||||||
|
├─ server-node/
|
||||||
|
├─ server-rs/
|
||||||
|
├─ src/
|
||||||
|
├─ packages/
|
||||||
|
├─ docs/
|
||||||
|
└─ backend-rewrite-tasklist/
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.2 不采用的落位方案
|
||||||
|
|
||||||
|
以下方案当前明确不采用:
|
||||||
|
|
||||||
|
1. 不放进 `server-node/` 子目录中做“Node + Rust 混编后端”。
|
||||||
|
2. 不放进 `packages/`,避免被前端 package/workspace 语义误导。
|
||||||
|
3. 不使用过于泛化的根目录名如 `server/`、`backend/`,避免和当前 `server-node/` 职责混淆。
|
||||||
|
|
||||||
|
### 3.3 这样落位的原因
|
||||||
|
|
||||||
|
1. 与当前重写设计文档、任务清单、后续 `M1` crate 规划保持一致。
|
||||||
|
2. 允许 `server-node/` 与 `server-rs/` 在迁移期并行存在,便于逐阶段切流。
|
||||||
|
3. 让 Rust 工作区边界清晰,不污染现有前端 `src/`、`packages/`、Vite 工具链。
|
||||||
|
4. 后续新增 `server-rs/scripts/*`、`Cargo.toml`、`crates/*` 时路径最直接,不需要额外中间层。
|
||||||
|
|
||||||
|
### 3.4 对后续任务的直接约束
|
||||||
|
|
||||||
|
从这一条决议开始,后续任务必须统一按以下路径落位:
|
||||||
|
|
||||||
|
1. `M1` 的工作区初始化在 `server-rs/`
|
||||||
|
2. Axum 入口在 `server-rs/crates/api-server`
|
||||||
|
3. SpacetimeDB 模块在 `server-rs/crates/spacetime-module`
|
||||||
|
4. 相关脚本在 `server-rs/scripts/`
|
||||||
|
|
||||||
|
## 4. 本条任务完成定义
|
||||||
|
|
||||||
|
当以下条件成立时,这一条边界任务视为完成:
|
||||||
|
|
||||||
|
1. 新 Rust 后端目录名已经书面固定为 `server-rs/`
|
||||||
|
2. 目录位置已经书面固定为仓库根目录
|
||||||
|
3. 后续 `M1` 的工作区初始化不会再出现 `server-rs/`、`backend-rs/`、`server/` 等多套候选名并存
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
- [M0_SSE_INTERFACE_BASELINE_2026-04-20.md](./M0_SSE_INTERFACE_BASELINE_2026-04-20.md):当前 `6` 条 SSE 接口及其事件格式冻结基线,用于 Axum SSE 兼容和前端 contract 回归。
|
- [M0_SSE_INTERFACE_BASELINE_2026-04-20.md](./M0_SSE_INTERFACE_BASELINE_2026-04-20.md):当前 `6` 条 SSE 接口及其事件格式冻结基线,用于 Axum SSE 兼容和前端 contract 回归。
|
||||||
- [M0_GENERATED_STATIC_PREFIX_BASELINE_2026-04-20.md](./M0_GENERATED_STATIC_PREFIX_BASELINE_2026-04-20.md):当前正式 `/generated-*` 静态资源前缀冻结基线,用于 Axum 静态资源兼容层与 OSS 对象键规划。
|
- [M0_GENERATED_STATIC_PREFIX_BASELINE_2026-04-20.md](./M0_GENERATED_STATIC_PREFIX_BASELINE_2026-04-20.md):当前正式 `/generated-*` 静态资源前缀冻结基线,用于 Axum 静态资源兼容层与 OSS 对象键规划。
|
||||||
- [M0_FRONTEND_RESPONSE_CONTRACT_BASELINE_2026-04-20.md](./M0_FRONTEND_RESPONSE_CONTRACT_BASELINE_2026-04-20.md):当前前端直接依赖的响应头、envelope 与错误格式冻结基线,用于 Axum 中间件与错误响应兼容。
|
- [M0_FRONTEND_RESPONSE_CONTRACT_BASELINE_2026-04-20.md](./M0_FRONTEND_RESPONSE_CONTRACT_BASELINE_2026-04-20.md):当前前端直接依赖的响应头、envelope 与错误格式冻结基线,用于 Axum 中间件与错误响应兼容。
|
||||||
|
- [M0_REPOSITORY_BOUNDARY_DECISIONS_2026-04-20.md](./M0_REPOSITORY_BOUNDARY_DECISIONS_2026-04-20.md):`M0` 仓库边界决议文档,用于持续冻结 `server-rs/` 落位、迁移期双栈共存、Axum 边界与副作用收口原则。
|
||||||
|
|
||||||
## 维护规则
|
## 维护规则
|
||||||
|
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ SpacetimeDB 官方文档对自动迁移的限制很强:
|
|||||||
|
|
||||||
## 6. 推荐工程结构
|
## 6. 推荐工程结构
|
||||||
|
|
||||||
建议新增 Rust 工作区,例如 `server-rs/`:
|
本次重写固定在仓库根目录新增 Rust 工作区 `server-rs/`,并与 `server-node/` 同级:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
server-rs/
|
server-rs/
|
||||||
|
|||||||
Reference in New Issue
Block a user