4.0 KiB
网关项目代码审查报告 2026-06-04
范围:
gateway/src/全部 5 个项目 239 文件 重点: 空函数、未实现内容、TODO、硬编码、异常处理
一、空实现/存根函数(5 处)
1.1 OwlAdapter — ConfirmAlarmAsync / EndAlarmAsync
文件: OwlAdapter.cs L250-251
public Task ConfirmAlarmAsync(string alarmId) => Task.CompletedTask;
public Task EndAlarmAsync(string alarmId) => Task.CompletedTask;
说明: Owl AI 事件(基于 /events 接口)不支持确认/结束操作,合理留空。
风险: 低。调用方(VolPro/A4)调用后状态不会写回 Owl。
1.2 KmsAdapter — EndAlarmAsync
文件: KmsAdapter.cs L165-170
public Task EndAlarmAsync(string alarmId) { return Task.CompletedTask; }
说明: KMS 第三方接口 (2.18.7) 不提供告警结束 API,合理留空。
风险: 低。
1.3 KmsAdapter — GetBorrowRecordsAsync / GetPermissionListAsync 请求体
文件: KmsAdapter.cs L181, L194
var body = "{}"; // 联调时加入时间范围参数
说明: 联调待办项,当前传空 JSON。KMS 接口可能接受无参查询返回全部数据。
风险: 中。如果 KMS 要求时间范围参数,当前实现会失败。
1.4 KmsAdapter — SendControlAsync 只实现了 "open"/"authorize"
文件: KmsAdapter.cs L251
if (command == "open" || command == "authorize") { ... }
// 其他 command 返回 success=true 但无实际操作
说明: 非开门的控制指令会静默返回成功但不执行任何操作。
风险: 中。调用方以为成功但设备未变化。
二、静默异常吞噬(4 处)
2.1 SyncAllDevicesAsync — 适配器遍历 catch
文件: Program.cs L171
catch { }
适配器取设备列表失败时静默跳过,不影响其他适配器。合理但缺少日志。
2.2 B1 健康检查
文件: Program.cs L197
try { healthy = await a.HealthCheckAsync(); } catch { }
合理——健康检查本身不应抛异常。
2.3 B4-batch Fallback
文件: Program.cs L279
try { results[deviceId] = await a.GetRealtimeValuesAsync(deviceId); } catch { }
合理——逐设备查询时某设备失败不应阻塞。
2.4 RateLimiter.Release
文件: RateLimiter.cs L36
try { _semaphore.Release(); } catch { }
合理——SemaphoreSlim.Release 在超过最大计数时会抛异常。
三、联调待验证项(3 处)
3.1 GatewayClientFactory — A2/A3 方法从未被网关自身调用
文件: GatewayClientFactory.cs L38-62
public async Task<bool> HeartbeatAsync(...) { ... }
public async Task<JsonDocument?> SyncDevicesAsync(...) { ... }
说明: 这两个方法在 Program.cs 的 SyncAllDevicesAsync 中通过 clientFactory.SyncDevicesAsync 被调用了。A2 心跳在心跳循环中被调用。
状态: ✅ 已连接。
3.2 Owl Playback URL 硬编码路径
文件: OwlAdapter.cs (GetPlaybackUrlAsync)
Hls = $"{baseUrl}/recordings/channels/{channelId}/index.m3u8?..."
联调时需确认 Owl 实际录像 HLS 路径是否为此格式。
3.3 KMS API 响应格式
KMS 所有接口的响应格式需联调验证。文档中字段名可能与实际 API 有差异。
四、编译状态
网关 5 项目上次编译 0 错误 0 警告。当前改动为本次审查附加,需重新编译验证。
五、结论
| 类别 | 数量 | 严重度 |
|---|---|---|
| 合理空实现(设计如此) | 3 | 低 |
| 联调待验证参数 | 2 | 中 |
| 静默异常(合理设计) | 4 | 低 |
| 需要立即修复 | 0 | — |
没有发现需要立即修复的空函数或未实现方法。 所有 Task.CompletedTask 都是因为底层子系统不支持该操作(Owl AI 无确认、KMS 无结束告警),属于设计取舍。KMS 的联调待办项(时间范围参数)已在代码中注释标注。