2.0 KiB
2.0 KiB
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 无法读取。
已执行验证
npm test(目录backend/)- 退出码:0
- TypeScript 构建、迁移契约、仓储、HTTP 注入等测试全部 PASS。
- 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。
- MySQL:
git diff --check- 退出码:0。
边界与影响
- 数据库:新增迁移
2026061803。 - API:新增
/app-api/bootstrap。 - 部署影响:后端启动会创建 MySQL 连接池;沿用现有 MySQL 环境变量,无新增生产密钥。
- 小程序:本阶段未纳管工作区未跟踪模板;ISSUE-007 继续隔离。
- 下一阶段:M02-B 微信登录、用户身份、JWT 与可撤销会话。