fengling-platform/.planning/phases/03-/03-gateway-infrastructure-update-PLAN.md

128 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
phase: 03-
plan: 03
type: execute
wave: 2
depends_on:
- 03-gateway-cluster-entities
- 03-gateway-route-update
files_modified:
- Fengling.Platform.Infrastructure/PlatformDbContext.cs
- Fengling.Platform.Infrastructure/IInstanceStore.cs
- Fengling.Platform.Infrastructure/InstanceStore.cs
- Fengling.Platform.Infrastructure/IClusterStore.cs
- Fengling.Platform.Infrastructure/ClusterStore.cs
autonomous: true
requirements:
- GATEWAY-RESTRUCTURE-05
- GATEWAY-RESTRUCTURE-06
must_haves:
truths:
- "PlatformDbContext 包含GwCluster DbSet"
- "IClusterStore 替代 IInstanceStore"
artifacts:
- path: "Fengling.Platform.Infrastructure/PlatformDbContext.cs"
provides: "更新的 DbContext"
- path: "Fengling.Platform.Infrastructure/IClusterStore.cs"
provides: "集群存储接口"
min_lines: 40
---
# 计划 03: 更新 Infrastructure 层
## 目标
更新 PlatformDbContext 配置,创建 IClusterStore 接口和实现,替换原有的 IInstanceStore。
**目的:** 支持新的 GwCluster 聚合根,移除已废弃的实体 DbSet。
**输出:** 更新的 PlatformDbContext、IClusterStore/ClusterStore。
## 上下文
@Fengling.Platform.Infrastructure/PlatformDbContext.cs
@Fengling.Platform.Infrastructure/IInstanceStore.cs
@Fengling.Platform.Infrastructure/RouteStore.cs (参考模式)
## 任务
<task type="auto">
<name>任务 1: 更新 PlatformDbContext</name>
<files>Fengling.Platform.Infrastructure/PlatformDbContext.cs</files>
<action>
1. 移除 DbSet
- 移除 DbSet&lt;GwTenant&gt; GwTenants
- 移除 DbSet&lt;GwServiceInstance&gt; GwServiceInstances
2. 添加 DbSet
- 添加 DbSet&lt;GwCluster&gt; GwClusters
3. 在 OnModelCreating 中配置:
- GwCluster 聚合根配置
- OwnsMany GwDestinations 配置
- OwnsOne GwHealthCheckConfig 配置
- OwnsOne GwSessionAffinityConfig 配置
参考 03-RESEARCH.md 中的 EF Core 配置代码。
</action>
<verify>dotnet build 通过</verify>
<done>PlatformDbContext 已更新</done>
</task>
<task type="auto">
<name>任务 2: 创建 IClusterStore 接口</name>
<files>Fengling.Platform.Infrastructure/IClusterStore.cs</files>
<action>
创建 IClusterStore 接口,包含:
- FindByIdAsync, FindByClusterIdAsync
- GetAllAsync, GetPagedAsync, GetCountAsync
- CreateAsync, UpdateAsync, DeleteAsync
- AddDestinationAsync, UpdateDestinationAsync, RemoveDestinationAsync
参考 IRouteStore 模式。
</action>
<verify>文件可编译</verify>
<done>IClusterStore 接口已创建</done>
</task>
<task type="auto">
<name>任务 3: 创建 ClusterStore 实现</name>
<files>Fengling.Platform.Infrastructure/ClusterStore.cs</files>
<action>
创建 ClusterStore&lt;TContext&gt; 实现 IClusterStore
- 泛型约束: where TContext : PlatformDbContext
- 实现所有接口方法
- 支持软删除
- 支持内嵌 Destination 的 CRUD
参考 RouteStore 模式。
</action>
<verify>dotnet build 通过</verify>
<done>ClusterStore 实现已创建</done>
</task>
<task type="auto">
<name>任务 4: 删除 IInstanceStore 和 InstanceStore</name>
<files>
Fengling.Platform.Infrastructure/IInstanceStore.cs
Fengling.Platform.Infrastructure/InstanceStore.cs
</files>
<action>
删除这两个文件:
- 已被 IClusterStore/ClusterStore 替代
- 确认无其他引用
</action>
<verify>dotnet build 通过</verify>
<done>旧文件已删除</done>
</task>
## 验证
- [ ] PlatformDbContext 已更新
- [ ] IClusterStore/ClusterStore 已创建
- [ ] 旧文件已删除
- [ ] Build 无错误通过
## 成功标准
Infrastructure 层更新完成,准备更新 DI 注册。