CMVR-IOT/sql/inspection_detection_alert.sql
lixiaolong 922d30632b feat(inspection): 添加边缘端gRPC服务IP字段并优化报警去重逻辑
- 在AlertEnvelope中添加grpcIp字段用于前端展示和问题定位
- 将数据库表inspection_detection_alert的幂等键改为仅记录模式,使用event_id进行重复过滤
- 移除检测框明细表及相关处理逻辑,简化数据结构
- 更新麦克风和扬声器控制器的参数传递方式,统一使用RequestBody
- 新增EdgeSpeakerPlayAudioVO类用于扬声器播放音频接口参数传递
2026-07-22 14:46:32 +08:00

75 lines
3.7 KiB
SQL
Raw 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.

-- PPE违规报警接收表。
-- 本脚本用于已有数据库增量部署,不会删除现有巡检数据。
CREATE TABLE IF NOT EXISTS `inspection_detection_alert` (
`id` varchar(32) NOT NULL COMMENT '主键ID',
`event_id` varchar(128) NOT NULL COMMENT '边缘端事件ID用于重复过滤',
`idempotency_key` varchar(191) DEFAULT NULL COMMENT 'HTTP幂等键仅记录',
`schema_version` varchar(64) NOT NULL COMMENT '消息结构版本',
`source_id` varchar(128) DEFAULT NULL COMMENT '视频源标识',
`grpc_ip` varchar(64) DEFAULT NULL COMMENT '边缘端gRPC服务IP',
`source_sequence` bigint DEFAULT NULL COMMENT '视频源内消息序号',
`captured_at_ns` bigint DEFAULT NULL COMMENT '采集时间Unix纳秒',
`received_at_ns` bigint DEFAULT NULL COMMENT '边缘端接收时间Unix纳秒',
`trace_id` varchar(128) DEFAULT NULL COMMENT '链路追踪ID',
`session_id` varchar(128) DEFAULT NULL COMMENT '边缘推理会话ID',
`input_port` varchar(128) DEFAULT NULL COMMENT '消息输入端口',
`rule_id` varchar(128) DEFAULT NULL COMMENT '命中的规则ID',
`model_id` varchar(255) DEFAULT NULL COMMENT '模型版本ID',
`model_name` varchar(255) DEFAULT NULL COMMENT '模型名称',
`labels_json` text COMMENT '命中标签JSON',
`detection_scope` varchar(64) DEFAULT NULL COMMENT '规则统计范围',
`scope_id` varchar(128) DEFAULT NULL COMMENT '统计范围对象ID',
`hit_count` int DEFAULT NULL COMMENT '窗口内命中次数',
`window_ms` decimal(12,3) DEFAULT NULL COMMENT '统计窗口毫秒',
`first_seen_ns` bigint DEFAULT NULL COMMENT '首次命中时间Unix纳秒',
`last_seen_ns` bigint DEFAULT NULL COMMENT '最后命中时间Unix纳秒',
`triggered_at_ns` bigint DEFAULT NULL COMMENT '报警触发时间Unix纳秒',
`max_confidence` decimal(8,6) DEFAULT NULL COMMENT '最大置信度',
`image_path` varchar(1000) DEFAULT NULL COMMENT 'MinIO图片URL',
`raw_json` mediumtext COMMENT '已移除Base64图片数据的原始协议JSON',
`created_at` datetime(3) NOT NULL COMMENT '平台接收时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_detection_alert_event_id` (`event_id`),
KEY `idx_detection_alert_source_id` (`source_id`),
KEY `idx_detection_alert_rule_id` (`rule_id`),
KEY `idx_detection_alert_triggered_at` (`triggered_at_ns`),
KEY `idx_detection_alert_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检PPE违规报警主表';
SET @exist_grpc_ip := (
SELECT COUNT(1)
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name = 'inspection_detection_alert'
AND column_name = 'grpc_ip'
);
SET @add_grpc_ip_sql := IF(
@exist_grpc_ip = 0,
'ALTER TABLE `inspection_detection_alert` ADD COLUMN `grpc_ip` varchar(64) DEFAULT NULL COMMENT ''边缘端gRPC服务IP'' AFTER `source_id`',
'SELECT 1'
);
PREPARE add_grpc_ip_stmt FROM @add_grpc_ip_sql;
EXECUTE add_grpc_ip_stmt;
DEALLOCATE PREPARE add_grpc_ip_stmt;
SET @exist_idempotency_unique := (
SELECT COUNT(1)
FROM information_schema.statistics
WHERE table_schema = DATABASE()
AND table_name = 'inspection_detection_alert'
AND index_name = 'uk_detection_alert_idempotency_key'
);
SET @drop_idempotency_unique_sql := IF(
@exist_idempotency_unique > 0,
'ALTER TABLE `inspection_detection_alert` DROP INDEX `uk_detection_alert_idempotency_key`',
'SELECT 1'
);
PREPARE drop_idempotency_unique_stmt FROM @drop_idempotency_unique_sql;
EXECUTE drop_idempotency_unique_stmt;
DEALLOCATE PREPARE drop_idempotency_unique_stmt;
ALTER TABLE `inspection_detection_alert`
MODIFY COLUMN `event_id` varchar(128) NOT NULL COMMENT '边缘端事件ID用于重复过滤',
MODIFY COLUMN `idempotency_key` varchar(191) DEFAULT NULL COMMENT 'HTTP幂等键仅记录';