Files
TakeoutSaaS.Docs/Document/16_仓库拆分与子模块使用说明.md
2026-01-29 05:57:48 +00:00

2.7 KiB
Raw Blame History

仓库拆分与子模块使用说明

目的:将 AdminApi 与 TenantApi 解耦,减少多租户对管理端的影响;同时沉淀共享基础库与文档运维资产,便于复用与独立发布。

1. 仓库划分

  • TakeoutSaaS.AdminApi:管理后台 API运营/客服/平台管理),允许跨租户查询(以路由 tenantId 作为单租户操作入口)。
  • TakeoutSaaS.TenantApi:租户端 APIMiniApi/UserApi强制租户隔离面向小程序/用户端。
  • TakeoutSaaS.GatewayYARP 反向代理网关路由、CORS、限流、可观测性
  • TakeoutSaaS.BuildingBlocks:共享基础组件库(Shared.Abstractions / Shared.Kernel / Shared.Web)。
  • TakeoutSaaS.Docs:文档与运维资产(架构、边界、部署、脚本等)。

2. 子模块策略

  • AdminApi 通过 git submodule 引入:
    • TakeoutSaaS.BuildingBlocksTakeoutSaaS.BuildingBlocks/
    • TakeoutSaaS.DocsTakeoutSaaS.Docs/
    • TakeoutSaaS.Gatewaysrc/Gateway/TakeoutSaaS.ApiGateway/(网关独立仓库,暂以子模块形式挂回)
  • TenantApi 通过 git submodule 引入:
    • TakeoutSaaS.BuildingBlocksTakeoutSaaS.BuildingBlocks/
    • TakeoutSaaS.DocsTakeoutSaaS.Docs/

3. 克隆与初始化

3.1 新克隆(推荐)

# 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 已有仓库补齐子模块

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可选

git submodule update --remote --merge

注意:--remote 会移动子模块引用,需要在宿主仓库提交。

5. 常用运行入口

# 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