4.2 KiB
4.2 KiB
网关自动注册机制整改 — 任务清单
版本: 1.0 日期: 2026-06-03 基准:
doc/设计文档/网关自动注册机制整改方案_v1.0.md+doc/设计文档/网关自动注册机制检查报告20260603.md原则: 分阶段分步骤执行,每步骤完成编译复查后提交,不合并主分支
阶段 G1: Gateway 端修复(3 步骤)
步骤 G1.1 — 修复 BaseUrl 硬编码
- 编辑
gateway/src/IntegrationGateway.Host/Program.cs - 将
BaseUrl = $"http://localhost:..."改为读取gwCfg["SelfUrl"],不填降级 localhost - 编辑
gateway/src/IntegrationGateway.Host/appsettings.json,Gateway 段新增"SelfUrl": null dotnet build gateway/IntegrationGateway.slnx→ 0 错误- 复查:
BaseUrl不再硬编码 localhost,可从配置注入真实 IP
G1.1 提交点:
Fix-G1.1: Gateway A1 BaseUrl 改为读取 SelfUrl 配置
步骤 G1.2 — A1 注册后追加 A3 设备同步
- 编辑
gateway/src/IntegrationGateway.Host/Program.cs - A1 注册成功后:遍历
registry.All,IHasFlatDevices→GetDevicesAsync,IHasOwnDeviceTree→GetObjectTreeAsync+ 展平 - 新增
FlattenTree辅助函数(MC4 对象树展平) - 调
clientFactory.SyncDevicesAsync(nodeCode, nodeToken, allDevices) dotnet build→ 0 错误- 复查:A1 成功后立即执行 A3,注册完成时 Vol.Pro 已有设备数据
G1.2 提交点:
Fix-G1.2: A1注册后立即A3同步全部适配器设备列表
步骤 G1.3 — 启动 A2 心跳 + 自动重注册
- 编辑
gateway/src/IntegrationGateway.Host/Program.cs - A1/A3 完成后启动
Task.Run心跳循环 PeriodicTimer每 15s →clientFactory.HeartbeatAsync- 连续失败 ≥ 3 次 → 触发 A1+A3 重注册
- 新增
SyncAllDevicesAsync辅助函数(复用 A3 逻辑) dotnet build→ 0 错误- 复查:心跳成功重置
failCount,失败累积到 3 次自动恢复
G1.3 提交点:
Fix-G1.3: A2心跳+自动重注册(连续3次失败触发A1+A3)
阶段 G2: Vol.Pro 端修复(2 步骤)
步骤 G2.1 — RegisterNodeAsync 语法规范化
- 编辑
api_sqlsugar/Warehouse/Services/device_manager/Partial/gateway_nodesService.cs RegisterNodeAsync:DbContext.Queryable.First()→FindAsIQueryable.FirstOrDefaultAsync()UpdateHeartbeatAsync:同样替换dotnet build api_sqlsugar/Warehouse→ 0 错误- 复查:两个方法使用统一 Vol.Pro 查询语法,
.First()不抛异常
G2.1 提交点:
Fix-G2.1: gateway_nodesService 统一 FindAsIQueryable 语法
步骤 G2.2 — 标记 UpsertDeviceAsync 为废弃
- 编辑
api_sqlsugar/Warehouse/Services/device_manager/Partial/base_deviceService.cs UpsertDeviceAsync加[Obsolete]标记 + 注释说明- 检查接口文件
Ibase_deviceService是否暴露此方法,同步标记 dotnet build→ 0 错误(允许 [Obsolete] 警告)- 复查:重复逻辑已标记,新代码不会误用
G2.2 提交点:
Fix-G2.2: base_deviceService.UpsertDeviceAsync 标记 [Obsolete]
阶段 G3: 全量验证(1 步骤)
步骤 G3.1 — 全量编译 + 联调场景验证
dotnet build gateway/IntegrationGateway.slnx→ 0 错误dotnet build api_sqlsugar/VolPro.WebApi→ 0 错误- 网关启动 → 控制台输出 A1 注册 → A3 同步 N 台 → A2 心跳启动
gateway_nodes表有记录,LastHeartbeat持续更新base_device表有对应设备- 网关先启动(Vol.Pro 未启动)→ 45 秒后自动恢复
- 复查:全链路 A1→A3→A2 闭环正常
G3.1 提交点:
Fix-G3: 全量编译验证通过 注册机制闭环完成
任务总览
| 阶段 | 步骤 | 文件 | 预计 |
|---|---|---|---|
| G1 | G1.1 BaseUrl 修复 | Program.cs + appsettings.json | 10min |
| G1 | G1.2 A3 设备同步 | Program.cs | 30min |
| G1 | G1.3 心跳+重注册 | Program.cs | 20min |
| G2 | G2.1 语法规范化 | gateway_nodesService.cs | 5min |
| G2 | G2.2 标记废弃方法 | base_deviceService.cs | 10min |
| G3 | G3.1 全量验证 | 全项目 | 15min |
| 合计 | 6 步骤 | 5 文件 | ~1.5h |