docs(03-gateway-infrastructure-update): complete plan 03 of phase 03
- Created SUMMARY.md with plan execution details - Updated STATE.md with current position Plan 03 COMPLETE - Infrastructure layer updated for GwCluster.
This commit is contained in:
parent
a6558137af
commit
38f71d7274
@ -8,7 +8,7 @@ progress:
|
|||||||
total_phases: 3
|
total_phases: 3
|
||||||
completed_phases: 1
|
completed_phases: 1
|
||||||
total_plans: 4
|
total_plans: 4
|
||||||
completed_plans: 5
|
completed_plans: 6
|
||||||
---
|
---
|
||||||
|
|
||||||
# Project State
|
# Project State
|
||||||
@ -17,10 +17,10 @@ progress:
|
|||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
- **Phase:** 03-gateway-route-update
|
- **Phase:** 03-gateway-infrastructure-update
|
||||||
- **Plan:** 02 ✅ Completed
|
- **Plan:** 03 ✅ Completed
|
||||||
- **Milestone:** v1.0 - Platform Foundation
|
- **Milestone:** v1.0 - Platform Foundation
|
||||||
- **Position:** Completed Plan 02 of Phase 03
|
- **Position:** Completed Plan 03 of Phase 03
|
||||||
|
|
||||||
## Project Context
|
## Project Context
|
||||||
|
|
||||||
@ -31,8 +31,9 @@ This is the Fengling.Platform project - a multi-tenant identity and authenticati
|
|||||||
- Platform layer initialized with Tenant, User, Role aggregates
|
- Platform layer initialized with Tenant, User, Role aggregates
|
||||||
- **GatewayAggregate updated** - GwTenantRoute extended, GwTenant and GwServiceInstance removed
|
- **GatewayAggregate updated** - GwTenantRoute extended, GwTenant and GwServiceInstance removed
|
||||||
- **NEW: GwCluster aggregate** added with embedded value objects (GwDestination, GwHealthCheckConfig, GwSessionAffinityConfig)
|
- **NEW: GwCluster aggregate** added with embedded value objects (GwDestination, GwHealthCheckConfig, GwSessionAffinityConfig)
|
||||||
- Manager + Store pattern established (ITenantStore, ITenantManager)
|
- **NEW: IClusterStore/ClusterStore** - Store pattern for GwCluster
|
||||||
- Extensions for DI registration (AddPlatformCore<TContext>)
|
- Manager + Store pattern established (ITenantStore, ITenantManager, IRouteStore, IClusterStore)
|
||||||
|
- Extensions for DI registration (AddPlatformCore<TContext>, AddGatewayCore<TContext>)
|
||||||
- PostgreSQL database with EF Core migrations
|
- PostgreSQL database with EF Core migrations
|
||||||
|
|
||||||
### Source for Migration
|
### Source for Migration
|
||||||
@ -55,7 +56,7 @@ This is the Fengling.Platform project - a multi-tenant identity and authenticati
|
|||||||
|
|
||||||
## Blockers
|
## Blockers
|
||||||
|
|
||||||
- Infrastructure layer references to deleted entities (to be addressed in subsequent plan)
|
None.
|
||||||
|
|
||||||
## Accumulated Context
|
## Accumulated Context
|
||||||
|
|
||||||
@ -65,8 +66,8 @@ This is the Fengling.Platform project - a multi-tenant identity and authenticati
|
|||||||
- Phase 2: Platform infrastructure ✅
|
- Phase 2: Platform infrastructure ✅
|
||||||
- Phase 3: Gateway cluster entities (current)
|
- Phase 3: Gateway cluster entities (current)
|
||||||
- Plan 01: Cluster entities ✅
|
- Plan 01: Cluster entities ✅
|
||||||
- Plan 02: Route update ✅ (just completed)
|
- Plan 02: Route update ✅
|
||||||
- Plan 03: Infrastructure cleanup (PENDING)
|
- Plan 03: Infrastructure cleanup ✅ (just completed)
|
||||||
|
|
||||||
### Phase 03 Progress
|
### Phase 03 Progress
|
||||||
|
|
||||||
@ -79,90 +80,11 @@ This is the Fengling.Platform project - a multi-tenant identity and authenticati
|
|||||||
- Extended GwTenantRoute with YARP fields
|
- Extended GwTenantRoute with YARP fields
|
||||||
- Removed obsolete GwTenant entity
|
- Removed obsolete GwTenant entity
|
||||||
- Removed obsolete GwServiceInstance entity
|
- Removed obsolete GwServiceInstance entity
|
||||||
- Plan 03: Infrastructure cleanup (PENDING)
|
- **Plan 03: Infrastructure Update** ✅ COMPLETED
|
||||||
|
- Updated PlatformDbContext with GwCluster DbSet
|
||||||
|
- Created IClusterStore/ClusterStore
|
||||||
|
- Deleted IInstanceStore/InstanceStore
|
||||||
|
|
||||||
## Pending
|
## Pending
|
||||||
|
|
||||||
- Plan 03: Infrastructure cleanup (update PlatformDbContext, remove InstanceStore references)
|
- Plan 04: Gateway DI registration (update DI registration for IClusterStore)
|
||||||
gsd_state_version: 1.0
|
|
||||||
milestone: v1.0
|
|
||||||
milestone_name: milestone
|
|
||||||
status: in_progress
|
|
||||||
last_updated: "2026-03-03T12:00:00.000Z"
|
|
||||||
progress:
|
|
||||||
total_phases: 3
|
|
||||||
completed_phases: 1
|
|
||||||
total_plans: 4
|
|
||||||
completed_plans: 4
|
|
||||||
---
|
|
||||||
|
|
||||||
# Project State
|
|
||||||
|
|
||||||
**Last Updated:** 2026-03-03
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- **Phase:** 03-gateway-cluster-entities
|
|
||||||
- **Plan:** 01 ✅ Completed
|
|
||||||
- **Milestone:** v1.0 - Platform Foundation
|
|
||||||
- **Position:** Completed Plan 01 of Phase 03
|
|
||||||
|
|
||||||
## Project Context
|
|
||||||
|
|
||||||
This is the Fengling.Platform project - a multi-tenant identity and authentication infrastructure.
|
|
||||||
|
|
||||||
### Current State
|
|
||||||
|
|
||||||
- Platform layer initialized with Tenant, User, Role aggregates
|
|
||||||
- **GatewayAggregate created** with GwTenant, GwTenantRoute, GwServiceInstance entities
|
|
||||||
- **NEW: GwCluster aggregate** added with embedded value objects (GwDestination, GwHealthCheckConfig, GwSessionAffinityConfig)
|
|
||||||
- Manager + Store pattern established (ITenantStore, ITenantManager)
|
|
||||||
- Extensions for DI registration (AddPlatformCore<TContext>)
|
|
||||||
- PostgreSQL database with EF Core migrations
|
|
||||||
|
|
||||||
### Source for Migration
|
|
||||||
|
|
||||||
**fengling-gateway** project (parent directory):
|
|
||||||
- `GwTenant` - 租户实体
|
|
||||||
- `GwTenantRoute` - 路由配置实体
|
|
||||||
- `GwServiceInstance` - 服务实例实体 (being replaced by GwCluster)
|
|
||||||
- `GwCluster` - 集群聚合根 (NEW)
|
|
||||||
- GatewayDbContext with PostgreSQL
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- Using Manager + Store pattern from existing Tenant implementation
|
|
||||||
- Extensions-based DI registration for quick IoC setup
|
|
||||||
- Align with existing Platform coding conventions
|
|
||||||
- **ID Strategy:** GwTenant uses `long` ID (Platform convention); GwTenantRoute, GwCluster use `string` GUID IDs (YARP-compatible)
|
|
||||||
- **Cluster Design:** GwCluster uses embedded value objects (Owned Entity pattern) for Destinations, HealthCheck, SessionAffinity
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
## Accumulated Context
|
|
||||||
|
|
||||||
### Roadmap Evolution
|
|
||||||
|
|
||||||
- Phase 1: Gateway routing entities ✅
|
|
||||||
- Phase 2: Platform infrastructure ✅
|
|
||||||
- Phase 3: Gateway cluster entities (current)
|
|
||||||
- Plan 01: Cluster entities ✅ (just completed)
|
|
||||||
- Plan 02: Infrastructure for cluster (PENDING)
|
|
||||||
- Plan 03: Gateway route integration (PENDING)
|
|
||||||
|
|
||||||
### Phase 03 Progress
|
|
||||||
|
|
||||||
- **Plan 01: Gateway Cluster Entities** ✅ COMPLETED
|
|
||||||
- Created GwCluster aggregate root
|
|
||||||
- Created GwDestination value object
|
|
||||||
- Created GwHealthCheckConfig value object
|
|
||||||
- Created GwSessionAffinityConfig value object
|
|
||||||
- Plan 02: Infrastructure (PENDING)
|
|
||||||
- Plan 03: Gateway route integration (PENDING)
|
|
||||||
|
|
||||||
## Pending
|
|
||||||
|
|
||||||
- Plan 02: Infrastructure (Store, Manager, DbContext for GwCluster)
|
|
||||||
- Plan 03: Integration with existing GwTenantRoute
|
|
||||||
|
|||||||
@ -0,0 +1,86 @@
|
|||||||
|
---
|
||||||
|
phase: "03-"
|
||||||
|
plan: 03
|
||||||
|
subsystem: Gateway
|
||||||
|
tags: [gateway, infrastructure, cluster, store, efcore]
|
||||||
|
dependency_graph:
|
||||||
|
requires: [GwCluster (from plan 01)]
|
||||||
|
provides: [IClusterStore, ClusterStore, PlatformDbContext update]
|
||||||
|
affects: [Extensions, GatewayExtensions]
|
||||||
|
tech_stack:
|
||||||
|
added:
|
||||||
|
- IClusterStore interface
|
||||||
|
- ClusterStore<TContext> implementation
|
||||||
|
patterns:
|
||||||
|
- Manager + Store pattern (ASP.NET Core Identity style)
|
||||||
|
- Generic DbContext constraint
|
||||||
|
- Soft delete
|
||||||
|
- Owned Entity for embedded collections
|
||||||
|
key_files:
|
||||||
|
created:
|
||||||
|
- Fengling.Platform.Infrastructure/IClusterStore.cs
|
||||||
|
- Fengling.Platform.Infrastructure/ClusterStore.cs
|
||||||
|
modified:
|
||||||
|
- Fengling.Platform.Infrastructure/PlatformDbContext.cs
|
||||||
|
- Fengling.Platform.Infrastructure/Extensions.cs
|
||||||
|
- Fengling.Platform.Infrastructure/GatewayExtensions.cs
|
||||||
|
deleted:
|
||||||
|
- Fengling.Platform.Infrastructure/IInstanceStore.cs
|
||||||
|
- Fengling.Platform.Infrastructure/InstanceStore.cs
|
||||||
|
decisions:
|
||||||
|
- "IClusterStore follows IRouteStore pattern for consistency"
|
||||||
|
- "ClusterStore uses soft delete for GwCluster entities"
|
||||||
|
- "OwnsMany used for embedded Destinations collection in EF Core"
|
||||||
|
metrics:
|
||||||
|
duration: ""
|
||||||
|
completed_date: "2026-03-03"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 03- Plan 03: Gateway Infrastructure Update Summary
|
||||||
|
|
||||||
|
## One-Liner
|
||||||
|
|
||||||
|
Updated PlatformDbContext with GwCluster DbSet and EF Core configuration, created IClusterStore/ClusterStore to replace obsolete IInstanceStore/InstanceStore.
|
||||||
|
|
||||||
|
## Completed Tasks
|
||||||
|
|
||||||
|
| Task | Name | Commit | Files |
|
||||||
|
|------|------|--------|-------|
|
||||||
|
| 1 | Update PlatformDbContext | a655813 | PlatformDbContext.cs |
|
||||||
|
| 2 | Create IClusterStore interface | a655813 | IClusterStore.cs |
|
||||||
|
| 3 | Create ClusterStore implementation | a655813 | ClusterStore.cs |
|
||||||
|
| 4 | Delete IInstanceStore and InstanceStore | a655813 | IInstanceStore.cs, InstanceStore.cs (deleted) |
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
- [x] PlatformDbContext updated - removed GwTenant/GwServiceInstance DbSets, added GwCluster with EF Core config
|
||||||
|
- [x] IClusterStore interface created with all CRUD + Destination management methods
|
||||||
|
- [x] ClusterStore<TContext> implementation created with soft delete support
|
||||||
|
- [x] Old IInstanceStore/InstanceStore deleted (replaced by IClusterStore)
|
||||||
|
- [x] Build passes with 0 errors
|
||||||
|
|
||||||
|
## Deviations from Plan
|
||||||
|
|
||||||
|
**1. [Rule 2 - Auto-add missing functionality] Fixed DI registration references**
|
||||||
|
- **Found during:** Build verification
|
||||||
|
- **Issue:** Extensions.cs and GatewayExtensions.cs still referenced deleted IInstanceStore
|
||||||
|
- **Fix:** Updated both files to register IClusterStore/ClusterStore instead
|
||||||
|
- **Files modified:** Extensions.cs, GatewayExtensions.cs
|
||||||
|
|
||||||
|
**2. [Rule 1 - Auto-fix bug] Fixed EF Core OwnsMany configuration**
|
||||||
|
- **Found during:** Build verification
|
||||||
|
- **Issue:** PlatformDbContext had incorrect OwnsMany builder usage
|
||||||
|
- **Fix:** Corrected configuration to use proper OwnedMany pattern with shadow property for foreign key
|
||||||
|
- **Files modified:** PlatformDbContext.cs
|
||||||
|
|
||||||
|
## Auth Gates
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
The Infrastructure layer is now ready for the next phase:
|
||||||
|
- GwCluster aggregate is properly configured in DbContext
|
||||||
|
- IClusterStore follows the established Manager + Store pattern
|
||||||
|
- All obsolete IInstanceStore references have been removed
|
||||||
|
- DI registration updated in both Extensions.cs and GatewayExtensions.cs
|
||||||
Loading…
Reference in New Issue
Block a user