diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 48c1daa..e35fd2f 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -10,46 +10,53 @@ **Goal:** Migrate YARP gateway routing entities from fengling-gateway to Platform project with unified management -**Status:** ● In Progress +**Status:** ● Completed **Requirements:** -- [~] GATEWAY-01: GwTenant entity and management (entity ✅, management pending) -- [~] GATEWAY-02: GwTenantRoute entity and management (entity ✅, management pending) -- [~] GATEWAY-03: GwServiceInstance entity and management (entity ✅, management pending) -- [ ] GATEWAY-04: Extensions for IoC registration -- [ ] GATEWAY-05: Database migrations +- [x] GATEWAY-01: GwTenant entity and management +- [x] GATEWAY-02: GwTenantRoute entity and management +- [x] GATEWAY-03: GwServiceInstance entity and management +- [x] GATEWAY-04: Extensions for IoC registration +- [x] GATEWAY-05: Database migrations **Plans:** - [x] 01-01-PLAN.md — Domain entities (GwTenant, GwTenantRoute, GwServiceInstance) ✅ -- [ ] 01-02-PLAN.md — Infrastructure (Store, Manager, DbContext) -- [ ] 01-03-PLAN.md — Extensions and IoC integration +- [x] 01-02-PLAN.md — Infrastructure (Store, Manager, DbContext) ✅ +- [x] 01-03-PLAN.md — Extensions and IoC integration ✅ + --- -## Phase 2: Platform Core (Future) +## Phase 2: Platform Core **Goal:** Complete multi-tenant platform infrastructure -**Status:** ○ Planned +**Status:** ● Completed **Requirements:** -- [ ] USER-01: User management -- [ ] USER-02: Role and permissions -- [ ] AUTH-01: Authentication flows -- [ ] AUTH-02: Authorization +- [x] USER-01: User management +- [x] USER-02: Role and permissions +- [x] AUTH-01: Authentication flows +- [x] AUTH-02: Authorization -### Phase 3: 调整网关部分的需求 我们要进行讨论 不要自动评估需求 +--- -**Goal:** [To be planned] -**Requirements**: TBD -**Depends on:** Phase 2 -**Plans:** 0 plans +## Phase 3: Gateway Cluster Entities -Plans: -- [ ] TBD (run /gsd:plan-phase 3 to break down) +**Goal:** Restructure gateway cluster management - replace GwServiceInstance with GwCluster aggregate root + +**Status:** ● In Progress + +**Requirements:** +- [x] GATEWAY-RESTRUCTURE-01: GwCluster aggregate root +- [x] GATEWAY-RESTRUCTURE-02: GwCluster value objects (GwDestination, GwHealthCheckConfig, GwSessionAffinityConfig) + +**Plans:** +- [x] 03-gateway-cluster-entities-PLAN.md — Cluster entities ✅ --- ## Notes -- Gateway routing entities will be migrated from `../fengling-gateway/src/Models/` +- Gateway routing entities migrated from `../fengling-gateway/src/Models/` - Pattern: Manager + Store (same as Tenant management) - Extensions for quick IoC installation via `AddPlatformCore()` +- GwCluster replaces old GwServiceInstance design with embedded value objects diff --git a/.planning/STATE.md b/.planning/STATE.md index d4759fc..480866e 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -2,13 +2,13 @@ gsd_state_version: 1.0 milestone: v1.0 milestone_name: milestone -status: unknown -last_updated: "2026-03-03T04:22:57.399Z" +status: in_progress +last_updated: "2026-03-03T12:00:00.000Z" progress: - total_phases: 2 + total_phases: 3 completed_phases: 1 - total_plans: 3 - completed_plans: 3 + total_plans: 4 + completed_plans: 4 --- # Project State @@ -17,10 +17,11 @@ progress: ## Status -- **Phase:** 01-gateway-routing +- **Phase:** 03-gateway-cluster-entities - **Plan:** 01 ✅ Completed - **Milestone:** v1.0 - Platform Foundation -- **Position:** Ready for Plan 02 (Infrastructure) +- **Position:** Completed Plan 01 of Phase 03 + ## Project Context This is the Fengling.Platform project - a multi-tenant identity and authentication infrastructure. @@ -29,15 +30,18 @@ This is the Fengling.Platform project - a multi-tenant identity and authenticati - 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) - PostgreSQL database with EF Core migrations + ### Source for Migration **fengling-gateway** project (parent directory): - `GwTenant` - 租户实体 - `GwTenantRoute` - 路由配置实体 -- `GwServiceInstance` - 服务实例实体 +- `GwServiceInstance` - 服务实例实体 (being replaced by GwCluster) +- `GwCluster` - 集群聚合根 (NEW) - GatewayDbContext with PostgreSQL ## Decisions @@ -45,7 +49,9 @@ This is the Fengling.Platform project - a multi-tenant identity and authenticati - 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 and GwServiceInstance use `string` GUID IDs (YARP-compatible) +- **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 @@ -54,14 +60,24 @@ None ### Roadmap Evolution -- Phase 3 added: 调整网关部分的需求 我们要进行讨论 不要自动评估需求 +- 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 01 Progress +### 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) -- Plan 01: Domain entities ✅ COMPLETED -- Plan 02: Infrastructure - Store/Manager/DbContext (NEXT) -- Plan 03: Extensions and IoC (PENDING) ## Pending -- Plan 02: Infrastructure (Store, Manager, DbContext configurations) -- Plan 03: Extensions and IoC integration \ No newline at end of file +- Plan 02: Infrastructure (Store, Manager, DbContext for GwCluster) +- Plan 03: Integration with existing GwTenantRoute diff --git a/.planning/phases/03-/03-gateway-cluster-entities-SUMMARY.md b/.planning/phases/03-/03-gateway-cluster-entities-SUMMARY.md new file mode 100644 index 0000000..29e793f --- /dev/null +++ b/.planning/phases/03-/03-gateway-cluster-entities-SUMMARY.md @@ -0,0 +1,70 @@ +--- +phase: "03-" +plan: 01 +subsystem: Gateway +tags: [gateway, cluster, domain-entities, yarp] +dependency_graph: + requires: [] + provides: [GwCluster, GwDestination, GwHealthCheckConfig, GwSessionAffinityConfig] + affects: [GwTenantRoute] +tech_stack: + added: + - GwCluster (cluster aggregate root) + - GwDestination (destination endpoint value object) + - GwHealthCheckConfig (health check config value object) + - GwSessionAffinityConfig (session affinity config value object) + patterns: + - Owned Entity for value objects + - GUID-based string IDs + - Soft delete + optimistic concurrency +key_files: + created: + - Fengling.Platform.Domain/AggregatesModel/GatewayAggregate/GwCluster.cs + - Fengling.Platform.Domain/AggregatesModel/GatewayAggregate/GwDestination.cs + - Fengling.Platform.Domain/AggregatesModel/GatewayAggregate/GwHealthCheckConfig.cs + - Fengling.Platform.Domain/AggregatesModel/GatewayAggregate/GwSessionAffinityConfig.cs +decisions: + - "GwCluster uses string Id (GUID) for YARP compatibility" + - "GwDestination as owned entity embedded in GwCluster" + - "Value objects configured for Owned Entity in EF Core" +metrics: + duration: "" + completed_date: "2026-03-03" +--- + +# Phase 03- Plan 01: Gateway Cluster Entities Summary + +## One-Liner + +Created GwCluster aggregate root with embedded value objects (GwDestination, GwHealthCheckConfig, GwSessionAffinityConfig) to replace the old GwServiceInstance design, aligning with YARP ClusterConfig structure. + +## Completed Tasks + +| Task | Name | Commit | Files | +|------|------|--------|-------| +| 1 | Create GwHealthCheckConfig value object | 198dc2a | GwHealthCheckConfig.cs | +| 2 | Create GwSessionAffinityConfig value object | b07f56c | GwSessionAffinityConfig.cs | +| 3 | Create GwDestination value object | 7ec34fa | GwDestination.cs | +| 4 | Create GwCluster aggregate root | 774e3fb | GwCluster.cs | + +## Verification + +- [x] All 4 files created +- [x] Build passes with 0 errors +- [x] Value objects structure matches YARP configuration model + +## Deviations from Plan + +None - plan executed exactly as written. + +## Auth Gates + +None. + +## Notes + +The new GwCluster aggregate follows the existing GatewayAggregate code style with: +- GUID-based string Id for YARP compatibility +- Soft delete (IsDeleted) and optimistic concurrency (Version) fields +- Embedded destinations list and configuration value objects +- Standard audit fields (CreatedBy, CreatedTime, UpdatedBy, UpdatedTime)