Files
SecMPS/doc/设计文档/网关项目代码审查报告20260604.md

4.0 KiB
Raw Blame History

网关项目代码审查报告 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 的联调待办项(时间范围参数)已在代码中注释标注。