docs(M02-A): 记录多租户模型验收结果

This commit is contained in:
Codex
2026-06-18 10:31:16 +08:00
parent 8b8fb28c36
commit 0db9505553
7 changed files with 103 additions and 11 deletions
@@ -0,0 +1,44 @@
# M02-A 多小程序/租户模型
- 日期:2026-06-18
- 起始 commit`9d13f75`
- 工程 commit`8b8fb28`
- 推送校验:`HEAD == origin/main == 8b8fb28c36c7a27e34bde3dcb60eada45025913e`
- ENGINEERING_DELTA=YES
- 子阶段状态:DONE
## 工程增量
- 新增 `qipai_platform_apps``qipai_tenant_apps``qipai_tenant_configs` 迁移、验证和回滚 SQL。
- 新增 `PlatformConfigRepository`,按 AppID 与租户绑定读取品牌启动配置。
- 新增 `GET /app-api/bootstrap`,提供 AppID/租户解析、格式校验和明确的 400/404/409 错误。
- 后端进程创建 MySQL 连接池并在关闭时释放;启动配置路由使用正式仓储。
- 增加迁移契约、仓储隔离、HTTP 注入和真实 MySQL 往返测试。
## 验收结果
- 一个 AppID 可绑定一个或多个租户;首期一对一无需传 `tenant-id`,多租户绑定必须明确选择。
- 租户配置唯一键包含 `tenant_id`,读取 SQL 同时校验应用绑定与租户归属。
- 品牌、Logo、主题、电话、分享配置按 AppID/tenant 返回。
- 同一 AppID 下两个租户读取到各自品牌配置;不存在的跨租户 ID 无法读取。
## 已执行验证
1. `npm test`(目录 `backend/`
- 退出码:0
- TypeScript 构建、迁移契约、仓储、HTTP 注入等测试全部 PASS。
2. WSL 原生临时副本执行 `bash scripts/dev/wsl/mysql-migration-roundtrip.sh`
- MySQL`8.4.9-0ubuntu0.26.04.1`
- 序列:`up → verify → down → up → verify`
- 退出码:0
- 18 条 up、9 条 verify、17 条 down;应用绑定、跨租户拒绝和旧库兼容均 PASS。
3. `git diff --check`
- 退出码:0。
## 边界与影响
- 数据库:新增迁移 `2026061803`
- API:新增 `/app-api/bootstrap`
- 部署影响:后端启动会创建 MySQL 连接池;沿用现有 MySQL 环境变量,无新增生产密钥。
- 小程序:本阶段未纳管工作区未跟踪模板;ISSUE-007 继续隔离。
- 下一阶段:M02-B 微信登录、用户身份、JWT 与可撤销会话。