# M7:联调、回归、部署与切流任务清单 ## 1. 测试体系 - [ ] 为 Axum handler 补接口测试 - [ ] 为 SpacetimeDB reducer 补规则测试 - [ ] 为 view / projection 补数据一致性测试 - [ ] 为 auth 主链补集成测试 - [ ] 为 runtime snapshot 主链补集成测试 - [ ] 为 story action 主链补集成测试 - [ ] 为 custom world / agent 主链补集成测试 - [ ] 为 assets / OSS 主链补集成测试 - [ ] 为兼容 contract 补回归测试 ## 2. 部署准备 - [ ] 设计 Axum 部署方式 - [ ] 设计 SpacetimeDB 发布方式 - [ ] 设计 OSS bucket / CDN / 域名方案 - [ ] 设计环境变量清单 - [ ] 设计灰度环境 - [ ] 设计数据迁移脚本 - [ ] 设计回滚策略 ## 3. 观测能力 - [ ] 接入 tracing / request id / structured logs - [ ] 接入慢请求追踪 - [ ] 接入上游 LLM / OSS / 短信 / 微信失败日志 - [ ] 接入关键 reducer 执行日志 - [ ] 接入资产任务状态日志 ## 4. 切流准备 - [ ] 准备旧 Node 与新 Rust 双跑窗口 - [ ] 准备 API 对比脚本 - [ ] 准备主流程 smoke 清单 - [ ] 准备前端切换开关 - [ ] 准备回退开关 ## 5. 主工程结构收口 - [ ] 拆分 `server-rs/crates/spacetime-module/src/lib.rs`,按业务模块与 SpacetimeDB 的 `table / reducer / procedure / view` 聚合结构整理为 `runtime`、`gameplay::{story/combat/inventory/npc/quest/runtime_item/progression}`、`custom_world`、`asset_metadata`、`ai` 等子模块,主工程 crate 根入口只保留模块声明、统一导出与最小发布入口 执行约束: 1. 这是切流前的工程结构收口,不是新功能扩张;拆分过程中不得改变既有 table schema、reducer / procedure 名称、对外 contract 与 publish 行为。 2. 拆分后的模块边界必须与 `M0` 已冻结的模块迁移归属一致,避免 `spacetime-module` 再回退成单大包。 3. 拆分完成后至少要保持 `cargo check`、SpacetimeDB 本地 build / publish 开发链路与主流程回归脚本可继续通过。 ## 6. 阶段验收 - [ ] 全链路 smoke 通过 - [ ] 主流程回归通过 - [ ] 关键 SSE 接口联调通过 - [ ] 可在灰度环境完成切流