-- ============================================================ -- AIoT 方案B升级脚本 - Redis+MQTT混合对接 -- 新增表:config_snapshot, alert, edge_device, algo_template -- 修改表:roi_algo_bind 新增 template_id, param_override -- ============================================================ -- 1. 配置版本快照表 CREATE TABLE IF NOT EXISTS wvp_ai_config_snapshot ( id BIGINT PRIMARY KEY AUTO_INCREMENT, version INT NOT NULL COMMENT '自增版本号', scope_type VARCHAR(20) NOT NULL COMMENT 'CAMERA|ROI|BIND', scope_id VARCHAR(64) NOT NULL COMMENT 'camera_id/roi_id/bind_id', camera_id VARCHAR(64) NOT NULL COMMENT '所属摄像头', snapshot LONGTEXT NOT NULL COMMENT '完整JSON快照', change_type VARCHAR(20) NOT NULL COMMENT 'CREATE|UPDATE|DELETE|ROLLBACK|PUSH', change_desc VARCHAR(255) NULL COMMENT '变更描述', created_by VARCHAR(64) NULL COMMENT '操作人', created_at VARCHAR(50) NOT NULL COMMENT '创建时间', INDEX idx_scope (scope_type, scope_id), INDEX idx_camera (camera_id), INDEX idx_version (scope_type, scope_id, version DESC) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置版本快照'; -- 2. AI告警表 CREATE TABLE IF NOT EXISTS wvp_ai_alert ( id BIGINT PRIMARY KEY AUTO_INCREMENT, alert_id VARCHAR(128) NOT NULL COMMENT '告警唯一ID', camera_id VARCHAR(64) NOT NULL COMMENT '摄像头ID', roi_id VARCHAR(64) NOT NULL COMMENT 'ROI区域ID', bind_id VARCHAR(64) NULL COMMENT '绑定ID', alert_type VARCHAR(50) NOT NULL COMMENT 'leave_post/intrusion/crowd_detection', target_class VARCHAR(50) NULL COMMENT '目标类别', confidence DOUBLE NULL COMMENT '置信度', bbox VARCHAR(255) NULL COMMENT 'JSON: [x1,y1,x2,y2]', message TEXT NULL COMMENT '告警消息', image_path VARCHAR(255) NULL COMMENT '告警图片路径', duration_minutes DOUBLE NULL COMMENT '持续时长(分钟)', extra_data TEXT NULL COMMENT 'JSON扩展', received_at VARCHAR(50) NOT NULL COMMENT '接收时间', UNIQUE KEY uk_alert_id (alert_id), INDEX idx_camera (camera_id), INDEX idx_type (alert_type), INDEX idx_time (received_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI告警记录'; -- 3. 边缘设备状态表 CREATE TABLE IF NOT EXISTS wvp_ai_edge_device ( id INT PRIMARY KEY AUTO_INCREMENT, device_id VARCHAR(64) NOT NULL COMMENT '设备唯一ID', status VARCHAR(20) DEFAULT 'offline' COMMENT 'online/offline', last_heartbeat VARCHAR(50) NULL COMMENT '最后心跳时间', uptime_seconds BIGINT NULL COMMENT '运行时长(秒)', frames_processed BIGINT NULL COMMENT '已处理帧数', alerts_generated BIGINT NULL COMMENT '已生成告警数', stream_stats TEXT NULL COMMENT 'JSON流统计', updated_at VARCHAR(50) NULL COMMENT '更新时间', UNIQUE KEY uk_device_id (device_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='边缘设备状态'; -- 4. 算法参数模板表 CREATE TABLE IF NOT EXISTS wvp_ai_algo_template ( id INT PRIMARY KEY AUTO_INCREMENT, template_id VARCHAR(64) NOT NULL COMMENT '模板唯一ID', template_name VARCHAR(100) NOT NULL COMMENT '模板名称', algo_code VARCHAR(50) NOT NULL COMMENT '关联算法代码', params TEXT NOT NULL COMMENT 'JSON参数', description VARCHAR(255) NULL COMMENT '描述', create_time VARCHAR(50) NULL COMMENT '创建时间', update_time VARCHAR(50) NULL COMMENT '更新时间', UNIQUE KEY uk_template_id (template_id), INDEX idx_algo (algo_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='算法参数模板'; -- 5. wvp_ai_roi_algo_bind 新增模板引用字段 ALTER TABLE wvp_ai_roi_algo_bind ADD COLUMN template_id VARCHAR(64) DEFAULT NULL COMMENT '引用的模板ID', ADD COLUMN param_override TEXT DEFAULT NULL COMMENT '覆盖模板的局部参数JSON';