docs(M02-A): 记录多租户模型验收结果
This commit is contained in:
@@ -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 与可撤销会话。
|
||||
Reference in New Issue
Block a user