- Remove GwTenantRoute (old tenant-specific route entity)
- Add GwRoute with string Id (Guid.CreateVersion7)
- Update IRouteManager and IRouteStore interfaces
- Update PlatformDbContext configuration for new schema
- GwRoute is now global, tenant-specific routing moved to GwDestination.TenantCode
BREAKING CHANGE: Database schema change requires table recreation
- Created cluster aggregate root with string Id (GUID)
- Includes ClusterId, Name, Description, Destinations list
- Embeds GwHealthCheckConfig and GwSessionAffinityConfig
- Includes audit fields: CreatedBy, CreatedTime, UpdatedBy, UpdatedTime
- Supports IsDeleted soft delete and Version for optimistic concurrency
- Created destination endpoint value object embedded in GwCluster
- Includes DestinationId, Address, Health, Weight, HealthStatus, Status fields
- Compatible with YARP Destination config structure
- Created health check configuration value object
- Includes Enabled, Path, IntervalSeconds, TimeoutSeconds fields
- Matches YARP ClusterConfig health check structure
- Convert Tenant to anemia model with long Id (no strong-typed ID)
- Add ApplicationUser, ApplicationRole to Platform.Domain (inherit Identity)
- Add TenantInfo value object for user-tenant redundancy
- Implement TenantManager/TenantStore in Platform.Infrastructure
- Update PlatformDbContext to inherit IdentityDbContext
- Migrate AuthService and Console to use Platform entities
- Remove old TenantRepository (replaced by TenantManager)
- Update AGENTS.md documentation
- Add Fengling.Platform domain and infrastructure projects
- Move Tenant aggregate from AuthService/Console to Platform.Domain
- Add TenantRepository and SeedData to Platform
- Remove duplicate Tenant/TenantInfo models from AuthService and Console
- Update controllers and services to use Platform.Domain.Tenant
- Add new migrations for PlatformDbContext
BREAKING CHANGE: Tenant entity now uses strongly-typed ID (TenantId)