docs: keep frontend on axum in phase one

This commit is contained in:
2026-04-21 00:21:33 +08:00
parent 682df9f8b5
commit ae4ad46c65
3 changed files with 37 additions and 2 deletions

View File

@@ -23,7 +23,8 @@
交付物:[M0_REPOSITORY_BOUNDARY_DECISIONS_2026-04-20.md](./M0_REPOSITORY_BOUNDARY_DECISIONS_2026-04-20.md)
- [x] 确认旧 `server-node/` 在迁移期继续保留,不提前删除
交付物:[M0_REPOSITORY_BOUNDARY_DECISIONS_2026-04-20.md](./M0_REPOSITORY_BOUNDARY_DECISIONS_2026-04-20.md)
- [ ] 确认前端第一阶段仍然只访问 Axum不直连 SpacetimeDB
- [x] 确认前端第一阶段仍然只访问 Axum不直连 SpacetimeDB
交付物:[M0_REPOSITORY_BOUNDARY_DECISIONS_2026-04-20.md](./M0_REPOSITORY_BOUNDARY_DECISIONS_2026-04-20.md)
- [ ] 确认外部副作用统一收口在 Axum不放进 SpacetimeDB 模块
### 交付物

View File

@@ -20,7 +20,7 @@
| --- | --- | --- |
| Rust 后端新目录名与根目录落位方案 | 已确认 | 新 Rust 后端固定为仓库根目录下的 `server-rs/`,与 `server-node/` 同级。 |
| 旧 `server-node/` 在迁移期继续保留,不提前删除 | 已确认 | `server-node/``M0 ~ M6` 期间持续保留,直到 `M7` 切流与回退验证完成后再评估清理。 |
| 前端第一阶段仍然只访问 Axum不直连 SpacetimeDB | 确认 | 后续补充。 |
| 前端第一阶段仍然只访问 Axum不直连 SpacetimeDB | 确认 | `M0 ~ M6` 前端统一只访问 Axum 暴露的 `/api/*``/healthz`、SSE 与静态资源兼容层,不新增直连 SpacetimeDB 原生协议路径。 |
| 外部副作用统一收口在 Axum不放进 SpacetimeDB 模块 | 待确认 | 后续补充。 |
## 3. 已确认决议一:`server-rs/` 固定落在仓库根目录
@@ -123,3 +123,36 @@ Genarrative/
1. `M1` 搭建 `server-rs/` 时,不改动 `server-node/` 的存在性。
2. `M2 ~ M6` 迁移功能时,旧 `server-node/` 继续作为验收基线与回退锚点。
3. 真正评估清理旧 Node 后端的动作,只能放到 `M7` 切流完成之后。
## 6. 已确认决议三:前端第一阶段只访问 Axum
### 6.1 决议内容
`M0 ~ M6` 迁移期内,前端访问新后端的唯一入口固定为 Axum。
第一阶段允许前端继续访问的面固定为:
1. `/api/*`
2. `/healthz`
3. 当前已冻结的 SSE 路由
4. 当前已冻结的 `/generated-*` 静态资源兼容前缀
第一阶段明确不做的事:
1. 不让 Web 前端直接接 SpacetimeDB 原生 HTTP 接口。
2. 不让 Web 前端直接接 SpacetimeDB 订阅协议。
3. 不要求前端新增一套“Axum + SpacetimeDB 双后端并行直连”调用模式。
### 6.2 这样决议的原因
1. 当前前端已经直接依赖现有 `/api/*` 路由、response envelope、SSE、`/generated-*` 路径习惯。
2. 如果在第一阶段就让前端同时认识 Axum 与 SpacetimeDB会把迁移面从“后端平移”扩大成“前后端协议双重重写”。
3. Axum 需要承担统一鉴权、cookie、JWT、OSS 签名、错误格式与 contract 兼容职责,这些都不应分散到前端直连多个后端协议。
### 6.3 对后续任务的直接约束
从这一条决议开始,后续任务必须遵守:
1. `M1 ~ M2` 的 Axum 中间件与鉴权必须先跑通,再谈前端联调。
2. `M3 ~ M6` 新增的 SpacetimeDB reducer/view 先通过 Axum facade 暴露,不直接要求前端改成原生 SpacetimeDB 客户端。
3. 若后续要让前端直连 SpacetimeDB只能作为第二阶段优化事项不能混入当前重写主链。