# 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<TContext>()` 扩展方法
- 注册: 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<TContext>(this IServiceCollection services) 
    where TContext : GatewayDbContext;
```

## Deferred Ideas

- 服务发现集成 (后续阶段)
- 动态配置热加载 (后续阶段)
- 复杂的负载均衡策略 (后续阶段)

## Claude's Discretion

- 实体命名: 保持 Gw 前缀还是简化? (建议保留以避免冲突)
- 是否复用现有 TenantStore? (建议新建独立 Store)
- 是否需要 YARP 集成? (仅实体层，先不包含 YARP 特定配置)
