78 lines
2.7 KiB
Markdown
78 lines
2.7 KiB
Markdown
# 仓库拆分与子模块使用说明
|
||
|
||
> 目的:将 AdminApi 与 TenantApi 解耦,减少多租户对管理端的影响;同时沉淀共享基础库与文档运维资产,便于复用与独立发布。
|
||
|
||
## 1. 仓库划分
|
||
|
||
- **TakeoutSaaS.AdminApi**:管理后台 API(运营/客服/平台管理),允许跨租户查询(以路由 `tenantId` 作为单租户操作入口)。
|
||
- **TakeoutSaaS.TenantApi**:租户端 API(MiniApi/UserApi),强制租户隔离,面向小程序/用户端。
|
||
- **TakeoutSaaS.Gateway**:YARP 反向代理网关(路由、CORS、限流、可观测性)。
|
||
- **TakeoutSaaS.BuildingBlocks**:共享基础组件库(`Shared.Abstractions` / `Shared.Kernel` / `Shared.Web`)。
|
||
- **TakeoutSaaS.Docs**:文档与运维资产(架构、边界、部署、脚本等)。
|
||
|
||
## 2. 子模块策略
|
||
|
||
- **AdminApi** 通过 `git submodule` 引入:
|
||
- `TakeoutSaaS.BuildingBlocks` → `TakeoutSaaS.BuildingBlocks/`
|
||
- `TakeoutSaaS.Docs` → `TakeoutSaaS.Docs/`
|
||
- `TakeoutSaaS.Gateway` → `src/Gateway/TakeoutSaaS.ApiGateway/`(网关独立仓库,暂以子模块形式挂回)
|
||
- **TenantApi** 通过 `git submodule` 引入:
|
||
- `TakeoutSaaS.BuildingBlocks` → `TakeoutSaaS.BuildingBlocks/`
|
||
- `TakeoutSaaS.Docs` → `TakeoutSaaS.Docs/`
|
||
|
||
## 3. 克隆与初始化
|
||
|
||
### 3.1 新克隆(推荐)
|
||
|
||
```bash
|
||
# AdminApi
|
||
git clone --recurse-submodules -b dev git@github.com:msumshk/TakeoutSaaS.AdminApi.git
|
||
|
||
# TenantApi
|
||
git clone --recurse-submodules -b dev git@github.com:msumshk/TakeoutSaaS.TenantApi.git
|
||
```
|
||
|
||
### 3.2 已有仓库补齐子模块
|
||
|
||
```bash
|
||
git submodule update --init --recursive
|
||
```
|
||
|
||
## 4. 子模块更新流程(推荐)
|
||
|
||
> 原则:**子模块自身先提交**,再由宿主仓库提交“子模块指针变更”。
|
||
|
||
### 4.1 更新 Docs/BuildingBlocks 内容
|
||
|
||
1. 进入子模块目录(如 `TakeoutSaaS.Docs/`),正常 `git add/commit/push`。
|
||
2. 回到宿主仓库根目录,提交子模块引用更新:
|
||
- `git add TakeoutSaaS.Docs`
|
||
- `git commit -m "docs: 更新文档子模块引用"`
|
||
3. 其他成员拉取宿主仓库后执行:
|
||
- `git submodule update --init --recursive`
|
||
|
||
### 4.2 拉取子模块最新 dev(可选)
|
||
|
||
```bash
|
||
git submodule update --remote --merge
|
||
```
|
||
|
||
> 注意:`--remote` 会移动子模块引用,需要在宿主仓库提交。
|
||
|
||
## 5. 常用运行入口
|
||
|
||
```bash
|
||
# AdminApi
|
||
dotnet run --project src/Api/TakeoutSaaS.AdminApi/TakeoutSaaS.AdminApi.csproj
|
||
|
||
# TenantApi - MiniApi
|
||
dotnet run --project src/Api/TakeoutSaaS.MiniApi/TakeoutSaaS.MiniApi.csproj
|
||
|
||
# TenantApi - UserApi
|
||
dotnet run --project src/Api/TakeoutSaaS.UserApi/TakeoutSaaS.UserApi.csproj
|
||
|
||
# Gateway(独立仓库)
|
||
dotnet run --project TakeoutSaaS.ApiGateway.csproj
|
||
```
|
||
|