# Phase 1: Gateway Routing Migration - Context **Gathered:** 2026-02-28 **Status:** Ready for planning **Source:** User request (YARP gateway migration) ## Phase Boundary Migrate YARP gateway routing entities from fengling-gateway to Platform project: - GwTenant - 租户在网关中的配置 - GwTenantRoute - 路由规则配置 - GwServiceInstance - 服务实例管理 Output: Domain entities, Infrastructure (Store/Manager), Extensions for IoC ## Implementation Decisions ### Architecture Pattern - **Manager + Store 模式**: 与现有 Tenant 管理一致 - ITenantStore → ITenantRouteStore - ITenantManager → ITenantRouteManager - 参考: `Fengling.Platform.Infrastructure/TenantStore.cs`, `TenantManager.cs` ### Entity Design - **GwTenant**: 租户网关配置 (继承现有 Tenant 概念) - **GwTenantRoute**: 路由规则 (ClusterId, PathPattern, Priority) - **GwServiceInstance**: 服务实例 (Address, Health, Weight) ### Extensions Pattern - 参考现有: `Fengling.Platform.Infrastructure/Extensions.cs` - 新增: `AddGatewayCore()` 扩展方法 - 注册: DbContext, IRouteStore, IRouteManager, IServiceInstanceStore ### Database - PostgreSQL (已有) - 新迁移: Gateway 实体相关表 ## Specific Ideas ### 从 fengling-gateway 迁移的实体 ``` ../fengling-gateway/src/Models/GwTenant.cs ../fengling-gateway/src/Models/GwTenantRoute.cs ../fengling-gateway/src/Models/GwServiceInstance.cs ../fengling-gateway/src/Data/GatewayDbContext.cs ``` ### Manager/Store 接口命名建议 ``` ITenantRouteStore / TenantRouteStore ITenantRouteManager / TenantRouteManager IServiceInstanceStore / ServiceInstanceStore IServiceInstanceManager / ServiceInstanceManager ``` ### 扩展方法签名 ```csharp public static IServiceCollection AddGatewayCore(this IServiceCollection services) where TContext : GatewayDbContext; ``` ## Deferred Ideas - 服务发现集成 (后续阶段) - 动态配置热加载 (后续阶段) - 复杂的负载均衡策略 (后续阶段) ## Claude's Discretion - 实体命名: 保持 Gw 前缀还是简化? (建议保留以避免冲突) - 是否复用现有 TenantStore? (建议新建独立 Store) - 是否需要 YARP 集成? (仅实体层,先不包含 YARP 特定配置)