From b0df1485adedaa85b57183175fae7a060ca55030 Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Thu, 5 Feb 2026 13:31:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(aiot):=20=E6=96=B0=E5=A2=9E=E6=96=B9?= =?UTF-8?q?=E6=A1=88B=E5=AE=9E=E4=BD=93=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AiAlert: AI告警实体 - AiAlgoTemplate: 算法参数模板实体 - AiConfigSnapshot: 配置版本快照实体 - AiEdgeDevice: 边缘设备状态实体 - AiRoiAlgoBind: 新增 templateId 和 paramOverride 字段 Co-Authored-By: Claude Opus 4.5 --- .../genersoft/iot/vmp/aiot/bean/AiAlert.java | 51 +++++++++++++++++++ .../iot/vmp/aiot/bean/AiAlgoTemplate.java | 33 ++++++++++++ .../iot/vmp/aiot/bean/AiConfigSnapshot.java | 39 ++++++++++++++ .../iot/vmp/aiot/bean/AiEdgeDevice.java | 36 +++++++++++++ .../iot/vmp/aiot/bean/AiRoiAlgoBind.java | 6 +++ 5 files changed, 165 insertions(+) create mode 100644 src/main/java/com/genersoft/iot/vmp/aiot/bean/AiAlert.java create mode 100644 src/main/java/com/genersoft/iot/vmp/aiot/bean/AiAlgoTemplate.java create mode 100644 src/main/java/com/genersoft/iot/vmp/aiot/bean/AiConfigSnapshot.java create mode 100644 src/main/java/com/genersoft/iot/vmp/aiot/bean/AiEdgeDevice.java diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiAlert.java b/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiAlert.java new file mode 100644 index 000000000..1cef4b12d --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiAlert.java @@ -0,0 +1,51 @@ +package com.genersoft.iot.vmp.aiot.bean; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "AI告警记录") +public class AiAlert { + + @Schema(description = "数据库自增ID") + private Long id; + + @Schema(description = "告警唯一ID") + private String alertId; + + @Schema(description = "摄像头ID") + private String cameraId; + + @Schema(description = "ROI区域ID") + private String roiId; + + @Schema(description = "绑定ID") + private String bindId; + + @Schema(description = "告警类型:leave_post/intrusion/crowd_detection") + private String alertType; + + @Schema(description = "目标类别") + private String targetClass; + + @Schema(description = "置信度") + private Double confidence; + + @Schema(description = "边界框JSON: [x1,y1,x2,y2]") + private String bbox; + + @Schema(description = "告警消息") + private String message; + + @Schema(description = "告警图片路径") + private String imagePath; + + @Schema(description = "持续时长(分钟)") + private Double durationMinutes; + + @Schema(description = "扩展数据JSON") + private String extraData; + + @Schema(description = "接收时间") + private String receivedAt; +} diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiAlgoTemplate.java b/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiAlgoTemplate.java new file mode 100644 index 000000000..848db49e3 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiAlgoTemplate.java @@ -0,0 +1,33 @@ +package com.genersoft.iot.vmp.aiot.bean; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "算法参数模板") +public class AiAlgoTemplate { + + @Schema(description = "数据库自增ID") + private Integer id; + + @Schema(description = "模板唯一ID") + private String templateId; + + @Schema(description = "模板名称") + private String templateName; + + @Schema(description = "关联算法代码") + private String algoCode; + + @Schema(description = "JSON参数") + private String params; + + @Schema(description = "描述") + private String description; + + @Schema(description = "创建时间") + private String createTime; + + @Schema(description = "更新时间") + private String updateTime; +} diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiConfigSnapshot.java b/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiConfigSnapshot.java new file mode 100644 index 000000000..0189e8f14 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiConfigSnapshot.java @@ -0,0 +1,39 @@ +package com.genersoft.iot.vmp.aiot.bean; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "配置版本快照") +public class AiConfigSnapshot { + + @Schema(description = "数据库自增ID") + private Long id; + + @Schema(description = "版本号(同scope维度自增)") + private Integer version; + + @Schema(description = "范围类型:CAMERA/ROI/BIND") + private String scopeType; + + @Schema(description = "范围ID:camera_id/roi_id/bind_id") + private String scopeId; + + @Schema(description = "所属摄像头ID") + private String cameraId; + + @Schema(description = "完整JSON快照") + private String snapshot; + + @Schema(description = "变更类型:CREATE/UPDATE/DELETE/ROLLBACK/PUSH") + private String changeType; + + @Schema(description = "变更描述") + private String changeDesc; + + @Schema(description = "操作人") + private String createdBy; + + @Schema(description = "创建时间") + private String createdAt; +} diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiEdgeDevice.java b/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiEdgeDevice.java new file mode 100644 index 000000000..8951cd4d9 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiEdgeDevice.java @@ -0,0 +1,36 @@ +package com.genersoft.iot.vmp.aiot.bean; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "边缘设备状态") +public class AiEdgeDevice { + + @Schema(description = "数据库自增ID") + private Integer id; + + @Schema(description = "设备唯一ID") + private String deviceId; + + @Schema(description = "状态:online/offline") + private String status; + + @Schema(description = "最后心跳时间") + private String lastHeartbeat; + + @Schema(description = "运行时长(秒)") + private Long uptimeSeconds; + + @Schema(description = "已处理帧数") + private Long framesProcessed; + + @Schema(description = "已生成告警数") + private Long alertsGenerated; + + @Schema(description = "流统计信息JSON") + private String streamStats; + + @Schema(description = "更新时间") + private String updatedAt; +} diff --git a/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiRoiAlgoBind.java b/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiRoiAlgoBind.java index 21061d471..bb300d162 100644 --- a/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiRoiAlgoBind.java +++ b/src/main/java/com/genersoft/iot/vmp/aiot/bean/AiRoiAlgoBind.java @@ -28,6 +28,12 @@ public class AiRoiAlgoBind { @Schema(description = "启用状态") private Integer enabled; + @Schema(description = "引用的模板ID,NULL表示独立参数") + private String templateId; + + @Schema(description = "覆盖模板的局部参数JSON") + private String paramOverride; + @Schema(description = "创建时间") private String createTime;