Files
aiot-platform-cloud/sql/mysql/video.sql
lzh 54250f2f5a feat(video): video_media_server 补齐 deleted 列对齐 BaseDO
- DO 继承 BaseDO(含 @TableLogic),但建表脚本初版漏了 deleted 列,
  MyBatis Plus 自动生成的 UPDATE/SELECT 语句会报
  "Unknown column 'deleted' in 'where clause'"。
- 同步更新 video.sql 中的建表脚本与段落注释,增量脚本放到
  sql/mysql/migrations/2026-04-22_video_media_server_deleted.sql,
  已部署库手动执行即可。
2026-04-23 14:59:31 +08:00

966 lines
68 KiB
SQL
Raw Permalink 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.

/*
Viewsh AIoT Platform — viewsh-module-video 建表脚本(最终融合版)
融合来源:
- aiot-video.sql框架字段标准写法datetime、bigint、creator/updater/deleted/tenant_id
- video.sql业务字段AI扩展表字段、video_ 表前缀)
规范:
- 业务数据表23张ProjectBaseDO含 project_id + tenant_id + BaseDO 字段
- 租户字典表2张TenantBaseDO含 tenant_id + BaseDO 字段,不含 project_id
- 全局共享表1张BaseDO只含 creator/create_time/updater/update_time不含 tenant_id/deleted
- 唯一索引包含 deleted 字段支持逻辑删除后重新添加
- 时间字段统一 datetimeWVP 原 varchar(50) 时间字段移除
- 不含 wvp_user / wvp_user_role / wvp_user_api_key由 viewsh-module-system 管理)
- 不含 wvp_jt_terminal / wvp_jt_channelJT1078 Phase 2 迁移)
表清单26张
业务数据17张video_device, video_device_channel, video_device_alarm,
video_device_mobile_position, video_platform, video_platform_channel,
video_platform_group, video_platform_region, video_common_gb_channel,
video_common_group, video_common_region, video_stream_proxy, video_stream_push,
video_cloud_record, video_record_plan, video_record_plan_item, video_ai_alert
AI 业务数据6张video_ai_edge_device, video_ai_roi, video_ai_roi_algo_bind,
video_ai_config_log, video_ai_config_snapshot, video_ai_camera_snapshot
租户字典2张video_ai_algorithm, video_ai_algo_template
全局共享1张video_media_server
维护者AI Assistant
生成日期2026-04-20
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ============================================================================
-- 一、GB/T 28181 设备与通道
-- ============================================================================
-- ----------------------------
-- 国标设备基础信息ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_device`;
CREATE TABLE `video_device` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`device_id` varchar(50) NOT NULL COMMENT '国标设备编号',
`name` varchar(255) NULL COMMENT '设备名称',
`manufacturer` varchar(255) NULL COMMENT '设备厂商',
`model` varchar(255) NULL COMMENT '设备型号',
`firmware` varchar(255) NULL COMMENT '固件版本号',
`transport` varchar(50) NULL COMMENT '信令传输协议TCP/UDP',
`stream_mode` varchar(50) NULL COMMENT '拉流方式(主动/被动)',
`on_line` tinyint(1) NOT NULL DEFAULT 0 COMMENT '在线状态',
`register_time` varchar(50) NULL COMMENT '注册时间',
`keepalive_time` varchar(50) NULL COMMENT '最近心跳时间',
`ip` varchar(50) NULL COMMENT '设备IP地址',
`port` int NULL COMMENT '信令端口',
`expires` int NULL COMMENT '注册有效期',
`subscribe_cycle_for_catalog` int NOT NULL DEFAULT 0 COMMENT '目录订阅周期',
`subscribe_cycle_for_mobile_position` int NOT NULL DEFAULT 0 COMMENT '移动位置订阅周期',
`mobile_position_submission_interval` int NOT NULL DEFAULT 5 COMMENT '移动位置上报间隔',
`subscribe_cycle_for_alarm` int NOT NULL DEFAULT 0 COMMENT '报警订阅周期',
`host_address` varchar(50) NULL COMMENT '设备域名/主机地址',
`charset` varchar(50) NULL COMMENT '信令字符集',
`ssrc_check` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否校验SSRC',
`geo_coord_sys` varchar(50) NULL COMMENT '坐标系类型',
`media_server_id` varchar(50) NOT NULL DEFAULT 'auto' COMMENT '绑定的流媒体服务ID',
`custom_name` varchar(255) NULL COMMENT '自定义显示名称',
`sdp_ip` varchar(50) NULL COMMENT 'SDP中携带的IP',
`local_ip` varchar(50) NULL COMMENT '本地局域网IP',
`password` varchar(255) NULL COMMENT '设备鉴权密码',
`as_message_channel` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否作为消息通道',
`heart_beat_interval` int NULL COMMENT '心跳间隔',
`heart_beat_count` int NULL COMMENT '心跳失败次数',
`position_capability` int NULL COMMENT '定位能力标识',
`channel_count` int NOT NULL DEFAULT 0 COMMENT '通道数量',
`broadcast_push_after_ack` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'ACK后是否自动推流',
`server_id` varchar(50) NULL COMMENT '所属信令服务器ID',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_device_id_deleted` (`device_id`, `deleted`) COMMENT '设备ID唯一含逻辑删除'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='国标设备基础信息';
-- ----------------------------
-- 设备通道信息ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_device_channel`;
CREATE TABLE `video_device_channel` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`device_id` varchar(50) NULL COMMENT '所属设备ID',
`name` varchar(255) NULL COMMENT '通道名称',
`manufacturer` varchar(50) NULL COMMENT '厂商',
`model` varchar(50) NULL COMMENT '型号',
`owner` varchar(50) NULL COMMENT '归属单位',
`civil_code` varchar(50) NULL COMMENT '行政区划代码',
`block` varchar(50) NULL COMMENT '区域/小区编号',
`address` varchar(50) NULL COMMENT '安装地址',
`parental` int NULL COMMENT '是否有子节点',
`parent_id` varchar(50) NULL COMMENT '父级通道ID',
`safety_way` int NULL COMMENT '安全防范等级',
`register_way` int NULL COMMENT '注册方式',
`cert_num` varchar(50) NULL COMMENT '证书编号',
`certifiable` int NULL COMMENT '是否可认证',
`err_code` int NULL COMMENT '故障状态码',
`end_time` varchar(50) NULL COMMENT '服务截止时间',
`secrecy` int NULL COMMENT '保密级别',
`ip_address` varchar(50) NULL COMMENT '设备IP地址',
`port` int NULL COMMENT '设备端口',
`password` varchar(255) NULL COMMENT '访问密码',
`status` varchar(50) NULL COMMENT '在线状态',
`longitude` double NULL COMMENT '经度',
`latitude` double NULL COMMENT '纬度',
`ptz_type` int NULL COMMENT '云台类型',
`position_type` int NULL COMMENT '点位类型',
`room_type` int NULL COMMENT '房间类型',
`use_type` int NULL COMMENT '使用性质',
`supply_light_type` int NULL COMMENT '补光方式',
`direction_type` int NULL COMMENT '朝向',
`resolution` varchar(255) NULL COMMENT '分辨率',
`business_group_id` varchar(255) NULL COMMENT '业务分组ID',
`download_speed` varchar(255) NULL COMMENT '下载/码流速率',
`svc_space_support_mod` int NULL COMMENT '空域SVC能力',
`svc_time_support_mode` int NULL COMMENT '时域SVC能力',
`sub_count` int NULL COMMENT '子节点数量',
`stream_id` varchar(255) NULL COMMENT '绑定的流ID',
`has_audio` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否有音频',
`gps_time` varchar(50) NULL COMMENT 'GPS定位时间',
`stream_identification` varchar(50) NULL COMMENT '流标识',
`channel_type` int NOT NULL DEFAULT 0 COMMENT '通道类型',
`map_level` int NOT NULL DEFAULT 0 COMMENT '地图层级',
`gb_device_id` varchar(50) NULL COMMENT 'GB内的设备ID',
`gb_name` varchar(255) NULL COMMENT 'GB上报的名称',
`gb_manufacturer` varchar(255) NULL COMMENT 'GB厂商',
`gb_model` varchar(255) NULL COMMENT 'GB型号',
`gb_owner` varchar(255) NULL COMMENT 'GB归属',
`gb_civil_code` varchar(255) NULL COMMENT 'GB行政区划',
`gb_block` varchar(255) NULL COMMENT 'GB区域',
`gb_address` varchar(255) NULL COMMENT 'GB地址',
`gb_parental` int NULL COMMENT 'GB子节点标识',
`gb_parent_id` varchar(255) NULL COMMENT 'GB父通道',
`gb_safety_way` int NULL COMMENT 'GB安全防范',
`gb_register_way` int NULL COMMENT 'GB注册方式',
`gb_cert_num` varchar(50) NULL COMMENT 'GB证书编号',
`gb_certifiable` int NULL COMMENT 'GB认证标志',
`gb_err_code` int NULL COMMENT 'GB错误码',
`gb_end_time` varchar(50) NULL COMMENT 'GB截止时间',
`gb_secrecy` int NULL COMMENT 'GB保密级别',
`gb_ip_address` varchar(50) NULL COMMENT 'GB IP',
`gb_port` int NULL COMMENT 'GB端口',
`gb_password` varchar(50) NULL COMMENT 'GB接入密码',
`gb_status` varchar(50) NULL COMMENT 'GB状态',
`gb_longitude` double NULL COMMENT 'GB经度',
`gb_latitude` double NULL COMMENT 'GB纬度',
`gb_business_group_id` varchar(50) NULL COMMENT 'GB业务分组',
`gb_ptz_type` int NULL COMMENT 'GB云台类型',
`gb_position_type` int NULL COMMENT 'GB点位类型',
`gb_room_type` int NULL COMMENT 'GB房间类型',
`gb_use_type` int NULL COMMENT 'GB用途',
`gb_supply_light_type` int NULL COMMENT 'GB补光',
`gb_direction_type` int NULL COMMENT 'GB朝向',
`gb_resolution` varchar(255) NULL COMMENT 'GB分辨率',
`gb_download_speed` varchar(255) NULL COMMENT 'GB码流速率',
`gb_svc_space_support_mod` int NULL COMMENT 'GB空域SVC',
`gb_svc_time_support_mode` int NULL COMMENT 'GB时域SVC',
`record_plan_id` int NULL COMMENT '绑定的录像计划ID',
`data_type` int NOT NULL COMMENT '数据类型标识',
`data_device_id` int NOT NULL COMMENT '数据来源设备主键',
`gps_speed` double NULL COMMENT 'GPS速度',
`gps_altitude` double NULL COMMENT 'GPS海拔',
`gps_direction` double NULL COMMENT 'GPS方向',
`enable_broadcast` int NOT NULL DEFAULT 0 COMMENT '是否支持广播',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_gb_device_id_deleted` (`gb_device_id`, `deleted`) COMMENT 'GB通道ID唯一含逻辑删除',
INDEX `idx_data_type` (`data_type`),
INDEX `idx_data_device_id` (`data_device_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备通道信息';
-- ----------------------------
-- 设备报警记录ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_device_alarm`;
CREATE TABLE `video_device_alarm` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`device_id` varchar(50) NOT NULL COMMENT '国标设备ID',
`channel_id` varchar(50) NOT NULL COMMENT '报警关联的通道ID',
`alarm_priority` varchar(50) NULL COMMENT '报警级别',
`alarm_method` varchar(50) NULL COMMENT '报警方式(视频/语音等)',
`alarm_time` varchar(50) NULL COMMENT '报警发生时间',
`alarm_description` varchar(255) NULL COMMENT '报警描述',
`longitude` double NULL COMMENT '报警经度',
`latitude` double NULL COMMENT '报警纬度',
`alarm_type` varchar(50) NULL COMMENT '报警类型',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据入库时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_device_id` (`device_id`) COMMENT '设备ID索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备报警记录';
-- ----------------------------
-- 移动位置订阅上报数据ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_device_mobile_position`;
CREATE TABLE `video_device_mobile_position` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`device_id` varchar(50) NOT NULL COMMENT '设备ID',
`channel_id` bigint NULL COMMENT '通道表主键FK→video_device_channel.id',
`device_name` varchar(255) NULL COMMENT '设备名称',
`time` varchar(50) NULL COMMENT '上报时间',
`longitude` double NULL COMMENT '经度',
`latitude` double NULL COMMENT '纬度',
`altitude` double NULL COMMENT '海拔',
`speed` double NULL COMMENT '速度',
`direction` double NULL COMMENT '方向角',
`report_source` varchar(50) NULL COMMENT '上报来源',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入库时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_device_channel` (`device_id`, `channel_id`) COMMENT '设备+通道索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='移动位置订阅上报数据';
-- ----------------------------
-- 通用 GB 通道统一视图ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_common_gb_channel`;
CREATE TABLE `video_common_gb_channel` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`gb_device_id` varchar(50) NULL COMMENT 'GB通道编号',
`name` varchar(255) NULL COMMENT '通道名称',
`manufacturer` varchar(255) NULL COMMENT '厂商',
`model` varchar(255) NULL COMMENT '型号',
`owner` varchar(255) NULL COMMENT '归属单位',
`civil_code` varchar(50) NULL COMMENT '行政区划代码',
`block` varchar(50) NULL COMMENT '区域/小区编号',
`address` varchar(255) NULL COMMENT '安装地址',
`parental` int NULL COMMENT '是否有子节点',
`parent_id` varchar(50) NULL COMMENT '父级通道ID',
`safety_way` int NULL COMMENT '安全防范等级',
`register_way` int NULL COMMENT '注册方式',
`cert_num` varchar(50) NULL COMMENT '证书编号',
`certifiable` int NULL COMMENT '是否可认证',
`err_code` int NULL COMMENT '故障状态码',
`end_time` varchar(50) NULL COMMENT '服务截止时间',
`secrecy` int NULL COMMENT '保密级别',
`ip_address` varchar(50) NULL COMMENT '设备IP地址',
`port` int NULL COMMENT '设备端口',
`password` varchar(255) NULL COMMENT '访问密码',
`status` varchar(50) NULL COMMENT '在线状态',
`longitude` double NULL COMMENT '经度',
`latitude` double NULL COMMENT '纬度',
`ptz_type` int NULL COMMENT '云台类型',
`position_type` int NULL COMMENT '点位类型',
`room_type` int NULL COMMENT '房间类型',
`use_type` int NULL COMMENT '使用性质',
`supply_light_type` int NULL COMMENT '补光方式',
`direction_type` int NULL COMMENT '朝向',
`resolution` varchar(255) NULL COMMENT '分辨率',
`business_group_id` varchar(255) NULL COMMENT '业务分组ID',
`download_speed` varchar(255) NULL COMMENT '下载/码流速率',
`svc_space_support_mod` int NULL COMMENT '空域SVC能力',
`svc_time_support_mode` int NULL COMMENT '时域SVC能力',
`has_audio` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否有音频',
`stream_identification` varchar(50) NULL COMMENT '流标识',
`data_type` int NOT NULL DEFAULT 0 COMMENT '数据类型0=GB设备 1=拉流代理 2=推流)',
`data_device_id` bigint NOT NULL DEFAULT 0 COMMENT '数据来源设备主键',
`record_plan_id` bigint NULL COMMENT '绑定的录像计划ID',
`stream_id` varchar(255) NULL COMMENT '绑定的流ID',
`map_level` int NOT NULL DEFAULT 0 COMMENT '地图层级',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_gb_device_id_deleted` (`gb_device_id`, `deleted`) COMMENT 'GB通道编号唯一含逻辑删除',
INDEX `idx_data_type` (`data_type`),
INDEX `idx_data_device_id` (`data_device_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通用 GB 通道统一视图';
-- ----------------------------
-- 通用分组表ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_common_group`;
CREATE TABLE `video_common_group` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`device_id` varchar(50) NOT NULL COMMENT '分组对应的平台或设备ID',
`name` varchar(255) NOT NULL COMMENT '分组名称',
`parent_id` bigint NULL COMMENT '父级分组ID',
`parent_device_id` varchar(50) NULL COMMENT '父级分组对应的设备ID',
`business_group` varchar(50) NOT NULL COMMENT '业务分组编码',
`civil_code` varchar(50) NULL COMMENT '行政区划代码',
`alias` varchar(255) NULL COMMENT '别名',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_device_id_deleted` (`device_id`, `deleted`) COMMENT '分组设备ID唯一含逻辑删除'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通用分组表';
-- ----------------------------
-- 通用行政区域表ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_common_region`;
CREATE TABLE `video_common_region` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`device_id` varchar(50) NOT NULL COMMENT '区域对应的平台或设备ID',
`name` varchar(255) NOT NULL COMMENT '区域名称',
`parent_id` bigint NULL COMMENT '父级区域ID',
`parent_device_id` varchar(50) NULL COMMENT '父级区域的设备ID',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_device_id_deleted` (`device_id`, `deleted`) COMMENT '区域设备ID唯一含逻辑删除'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通用行政区域表';
-- ============================================================================
-- 二、上级平台级联
-- ============================================================================
-- ----------------------------
-- 上级国标平台注册信息ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_platform`;
CREATE TABLE `video_platform` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`enable` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用该平台注册',
`name` varchar(255) NULL COMMENT '平台名称',
`server_gb_id` varchar(50) NULL COMMENT '上级平台国标编码',
`server_gb_domain` varchar(50) NULL COMMENT '上级平台域编码',
`server_ip` varchar(50) NULL COMMENT '上级平台IP',
`server_port` int NULL COMMENT '上级平台注册端口',
`device_gb_id` varchar(50) NULL COMMENT '本平台向上注册的国标编码',
`device_ip` varchar(50) NULL COMMENT '本平台信令IP',
`device_port` int NULL COMMENT '本平台信令端口',
`username` varchar(255) NULL COMMENT '注册用户名',
`password` varchar(50) NULL COMMENT '注册密码',
`expires` int NULL COMMENT '注册有效期(秒)',
`keep_timeout` int NULL COMMENT '心跳超时时间(秒)',
`transport` varchar(50) NULL COMMENT '传输协议UDP/TCP',
`civil_code` varchar(50) NULL COMMENT '行政区划代码',
`manufacturer` varchar(255) NULL COMMENT '厂商',
`model` varchar(255) NULL COMMENT '型号',
`address` varchar(255) NULL COMMENT '地址',
`character_set` varchar(50) NULL COMMENT '字符集',
`ptz` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否支持PTZ',
`rtcp` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否开启RTCP',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '注册状态',
`channel_count` int NOT NULL DEFAULT 0 COMMENT '已同步通道数量',
`catalog_subscribe` tinyint(1) NOT NULL DEFAULT 0 COMMENT '已被订阅目录信息',
`alarm_subscribe` tinyint(1) NOT NULL DEFAULT 0 COMMENT '已被订阅报警信息',
`mobile_position_subscribe` tinyint(1) NOT NULL DEFAULT 0 COMMENT '已被订阅移动位置信息',
`catalog_group` int NULL COMMENT '目录分组方式',
`register_way` int NULL COMMENT '注册方式',
`secrecy` int NULL COMMENT '保密级别',
`as_message_channel` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否作为消息通道',
`catalog_with_platform` int NOT NULL DEFAULT 1 COMMENT '是否推送平台目录',
`catalog_with_group` int NOT NULL DEFAULT 1 COMMENT '是否推送分组目录',
`catalog_with_region` int NOT NULL DEFAULT 1 COMMENT '是否推送区域目录',
`auto_push_channel` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否自动推送通道',
`send_stream_ip` varchar(50) NULL COMMENT '推流时使用的IP',
`server_id` varchar(50) NULL COMMENT '对应信令服务器ID',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_server_gb_id_deleted` (`server_gb_id`, `deleted`) COMMENT '上级平台国标编码唯一(含逻辑删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='上级国标平台注册信息';
-- ----------------------------
-- 国标平台通道映射关系ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_platform_channel`;
CREATE TABLE `video_platform_channel` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`platform_id` bigint NULL COMMENT '平台ID',
`device_channel_id` bigint NULL COMMENT '本地通道表主键',
`custom_device_id` varchar(50) NULL COMMENT '自定义国标编码',
`custom_name` varchar(255) NULL COMMENT '自定义名称',
`custom_manufacturer` varchar(50) NULL COMMENT '自定义厂商',
`custom_model` varchar(50) NULL COMMENT '自定义型号',
`custom_owner` varchar(50) NULL COMMENT '自定义归属',
`custom_civil_code` varchar(50) NULL COMMENT '自定义行政区划',
`custom_block` varchar(50) NULL COMMENT '自定义区域',
`custom_address` varchar(50) NULL COMMENT '自定义地址',
`custom_parental` int NULL COMMENT '自定义父/子标识',
`custom_parent_id` varchar(50) NULL COMMENT '自定义父节点',
`custom_safety_way` int NULL COMMENT '自定义安全防范',
`custom_register_way` int NULL COMMENT '自定义注册方式',
`custom_cert_num` int NULL COMMENT '自定义证书编号',
`custom_certifiable` int NULL COMMENT '自定义可认证标志',
`custom_err_code` int NULL COMMENT '自定义错误码',
`custom_end_time` int NULL COMMENT '自定义终止时间',
`custom_secrecy` int NULL COMMENT '自定义保密级别',
`custom_ip_address` varchar(50) NULL COMMENT '自定义IP',
`custom_port` int NULL COMMENT '自定义端口',
`custom_password` varchar(255) NULL COMMENT '自定义密码',
`custom_status` varchar(50) NULL COMMENT '自定义状态',
`custom_longitude` double NULL COMMENT '自定义经度',
`custom_latitude` double NULL COMMENT '自定义纬度',
`custom_ptz_type` int NULL COMMENT '自定义云台类型',
`custom_position_type` int NULL COMMENT '自定义点位类型',
`custom_room_type` int NULL COMMENT '自定义房间类型',
`custom_use_type` int NULL COMMENT '自定义用途',
`custom_supply_light_type` int NULL COMMENT '自定义补光',
`custom_direction_type` int NULL COMMENT '自定义朝向',
`custom_resolution` varchar(255) NULL COMMENT '自定义分辨率',
`custom_business_group_id` varchar(255) NULL COMMENT '自定义业务分组',
`custom_download_speed` varchar(255) NULL COMMENT '自定义码流速率',
`custom_svc_space_support_mod` int NULL COMMENT '自定义空域SVC',
`custom_svc_time_support_mode` int NULL COMMENT '自定义时域SVC',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_platform_channel_deleted` (`platform_id`, `device_channel_id`, `deleted`) COMMENT '平台+通道唯一(含逻辑删除)',
UNIQUE KEY `uk_custom_device_id_deleted` (`custom_device_id`, `deleted`) COMMENT '自定义设备ID唯一含逻辑删除'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='国标平台通道映射关系';
-- ----------------------------
-- 平台与分组关联ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_platform_group`;
CREATE TABLE `video_platform_group` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`platform_id` bigint NULL COMMENT '平台ID',
`group_id` bigint NULL COMMENT '分组ID',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_platform_group_deleted` (`platform_id`, `group_id`, `deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台与分组关联';
-- ----------------------------
-- 平台与区域关联ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_platform_region`;
CREATE TABLE `video_platform_region` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`platform_id` bigint NULL COMMENT '平台ID',
`region_id` bigint NULL COMMENT '区域ID',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_platform_region_deleted` (`platform_id`, `region_id`, `deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台与区域关联';
-- ============================================================================
-- 三、媒体服务器全局共享BaseDO无 tenant_id / project_id带逻辑删除
-- ============================================================================
DROP TABLE IF EXISTS `video_media_server`;
CREATE TABLE `video_media_server` (
`id` varchar(255) NOT NULL COMMENT '媒体服务器ID',
`ip` varchar(50) NULL COMMENT '服务器IP',
`hook_ip` varchar(50) NULL COMMENT 'hook回调IP',
`sdp_ip` varchar(50) NULL COMMENT 'SDP中使用的IP',
`stream_ip` varchar(50) NULL COMMENT '推流使用的IP',
`http_port` int NULL COMMENT 'HTTP端口',
`http_ssl_port` int NULL COMMENT 'HTTPS端口',
`rtmp_port` int NULL COMMENT 'RTMP端口',
`rtmp_ssl_port` int NULL COMMENT 'RTMPS端口',
`rtp_proxy_port` int NULL COMMENT 'RTP代理端口',
`rtsp_port` int NULL COMMENT 'RTSP端口',
`rtsp_ssl_port` int NULL COMMENT 'RTSPS端口',
`flv_port` int NULL COMMENT 'FLV端口',
`flv_ssl_port` int NULL COMMENT 'FLV HTTPS端口',
`mp4_port` int NULL COMMENT 'MP4点播端口',
`mp4_ssl_port` int NULL COMMENT 'MP4 HTTPS端口',
`ws_flv_port` int NULL COMMENT 'WS-FLV端口',
`ws_flv_ssl_port` int NULL COMMENT 'WS-FLV HTTPS端口',
`jtt_proxy_port` int NULL COMMENT 'JT/T代理端口',
`auto_config` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否自动配置',
`secret` varchar(50) NULL COMMENT 'ZLM校验密钥',
`type` varchar(50) NOT NULL DEFAULT 'zlm' COMMENT '节点类型',
`rtp_enable` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否开启RTP',
`rtp_port_range` varchar(50) NULL COMMENT 'RTP端口范围',
`send_rtp_port_range` varchar(50) NULL COMMENT '发送RTP端口范围',
`record_assist_port` int NULL COMMENT '录像辅助端口',
`default_server` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否默认节点',
`hook_alive_interval` int NULL COMMENT 'hook心跳间隔',
`record_path` varchar(255) NULL COMMENT '录像目录',
`record_day` int NOT NULL DEFAULT 7 COMMENT '录像保留天数',
`transcode_suffix` varchar(255) NULL COMMENT '转码指令后缀',
`server_id` varchar(50) NULL COMMENT '对应信令服务器ID',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '媒体服务器在线状态0离线,1在线',
`last_keepalive_time` datetime NULL COMMENT '最近心跳时间',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除0-未删除,1-已删除',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_ip_http_port_server_id` (`ip`, `http_port`, `server_id`) COMMENT '节点IP+端口+服务器唯一'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体服务器节点配置(全局共享,带逻辑删除)';
-- ============================================================================
-- 四、流媒体 / 云录像
-- ============================================================================
-- ----------------------------
-- 拉流代理/转推配置ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_stream_proxy`;
CREATE TABLE `video_stream_proxy` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`type` varchar(50) NULL COMMENT '代理类型(拉流/推流)',
`app` varchar(255) NULL COMMENT '应用名',
`stream` varchar(255) NULL COMMENT '流ID',
`src_url` varchar(255) NULL COMMENT '源地址',
`timeout` int NULL COMMENT '拉流超时时间',
`ffmpeg_cmd_key` varchar(255) NULL COMMENT 'FFmpeg命令模板键',
`rtsp_type` varchar(50) NULL COMMENT 'RTSP拉流方式',
`media_server_id` varchar(50) NULL COMMENT '指定媒体服务器ID',
`enable_audio` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用音频',
`enable_mp4` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否录制MP4',
`pulling` tinyint(1) NOT NULL DEFAULT 0 COMMENT '当前是否在拉流',
`enable` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用该代理',
`name` varchar(255) NULL COMMENT '代理名称',
`stream_key` varchar(255) NULL COMMENT '唯一流标识',
`server_id` varchar(50) NULL COMMENT '信令服务器ID',
`enable_disable_none_reader` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否无人观看时自动停流',
`relates_media_server_id` varchar(50) NULL COMMENT '关联的媒体服务器ID',
`camera_code` varchar(64) NOT NULL DEFAULT '' COMMENT '摄像头编码',
`camera_name` varchar(100) NULL COMMENT '摄像头名称',
`area_id` bigint NULL COMMENT '所属区域ID',
`edge_device_id` varchar(64) NULL COMMENT '绑定的边缘设备ID',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_app_stream_deleted` (`app`, `stream`, `deleted`) COMMENT '应用+流ID唯一含逻辑删除',
UNIQUE KEY `uk_camera_code_deleted` (`camera_code`, `deleted`) COMMENT '摄像头编码唯一(含逻辑删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='拉流代理/转推配置';
-- ----------------------------
-- 推流会话记录ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_stream_push`;
CREATE TABLE `video_stream_push` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`app` varchar(255) NULL COMMENT '应用名',
`stream` varchar(255) NULL COMMENT '流ID',
`media_server_id` varchar(50) NULL COMMENT '推流所在媒体服务器',
`server_id` varchar(50) NULL COMMENT '信令服务器ID',
`push_time` varchar(50) NULL COMMENT '推流开始时间',
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '推流状态',
`pushing` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否正在推流',
`self` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否本地发起',
`start_offline_push` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否离线后自动重推',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_app_stream_deleted` (`app`, `stream`, `deleted`) COMMENT '应用+流ID唯一含逻辑删除'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='推流会话记录';
-- ----------------------------
-- 云端录像记录ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_cloud_record`;
CREATE TABLE `video_cloud_record` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`app` varchar(255) NULL COMMENT '应用名',
`stream` varchar(255) NULL COMMENT '流ID',
`call_id` varchar(255) NULL COMMENT '会话ID',
`start_time` bigint NULL COMMENT '录像开始时间',
`end_time` bigint NULL COMMENT '录像结束时间',
`media_server_id` varchar(50) NULL COMMENT '媒体服务器ID',
`server_id` varchar(50) NULL COMMENT '信令服务器ID',
`file_name` varchar(255) NULL COMMENT '文件名',
`folder` varchar(500) NULL COMMENT '目录',
`file_path` varchar(500) NULL COMMENT '完整路径',
`collect` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否收藏',
`reserve` tinyint(1) NULL DEFAULT 0 COMMENT '是否保留(保留的文件不自动清除)',
`file_size` bigint NULL COMMENT '文件大小',
`time_len` double NULL COMMENT '时长',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_app_stream` (`app`, `stream`) COMMENT '应用+流ID索引',
INDEX `idx_call_id` (`call_id`) COMMENT '会话ID索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='云端录像记录';
-- ============================================================================
-- 五、录像计划
-- ============================================================================
-- ----------------------------
-- 录像计划基础信息ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_record_plan`;
CREATE TABLE `video_record_plan` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`snap` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否抓图计划',
`name` varchar(255) NOT NULL COMMENT '计划名称',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='录像计划基础信息';
-- ----------------------------
-- 录像计划条目ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_record_plan_item`;
CREATE TABLE `video_record_plan_item` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`start` int NULL COMMENT '开始时间(分钟)',
`stop` int NULL COMMENT '结束时间(分钟)',
`week_day` int NULL COMMENT '星期0-6',
`plan_id` bigint NULL COMMENT '所属录像计划ID',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_plan_id` (`plan_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='录像计划条目';
-- ============================================================================
-- 六、AI 智能视频分析
-- ============================================================================
-- ----------------------------
-- AI 告警记录ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_ai_alert`;
CREATE TABLE `video_ai_alert` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`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` datetime NULL COMMENT '接收时间',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_alert_id_deleted` (`alert_id`, `deleted`) COMMENT '告警UUID唯一含逻辑删除',
INDEX `idx_camera_id` (`camera_id`),
INDEX `idx_alert_type` (`alert_type`),
INDEX `idx_received_at` (`received_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 告警记录';
-- ----------------------------
-- AI 边缘设备状态ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_ai_edge_device`;
CREATE TABLE `video_ai_edge_device` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`device_id` varchar(64) NOT NULL COMMENT '设备唯一ID',
`status` varchar(20) NOT NULL DEFAULT 'offline' COMMENT '状态online/offline',
`last_heartbeat` datetime NULL COMMENT '最后心跳时间',
`uptime_seconds` bigint NULL COMMENT '运行时长(秒)',
`frames_processed` bigint NULL COMMENT '已处理帧数',
`alerts_generated` bigint NULL COMMENT '已生成告警数',
`stream_stats` text NULL COMMENT '流统计 JSON',
`stream_count` int NULL COMMENT '活跃视频流数量',
`config_version` varchar(64) NULL COMMENT '当前配置版本',
`updated_at` datetime NULL COMMENT '更新时间',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_device_id_deleted` (`device_id`, `deleted`) COMMENT '边缘设备ID唯一含逻辑删除'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 边缘设备状态';
-- ----------------------------
-- ROI 区域配置ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_ai_roi`;
CREATE TABLE `video_ai_roi` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`roi_id` varchar(50) NOT NULL COMMENT 'UUID与 FastAPI 端同步用',
`camera_id` varchar(50) NOT NULL COMMENT '通道国标编号',
`channel_db_id` int NULL COMMENT '视频通道表 ID',
`device_id` varchar(50) NULL COMMENT '设备国标编号',
`name` varchar(100) NULL COMMENT 'ROI 名称',
`roi_type` varchar(20) NOT NULL DEFAULT 'rectangle' COMMENT '形状rectangle/polygon',
`coordinates` text NOT NULL COMMENT '归一化坐标 JSON',
`color` varchar(20) NULL DEFAULT '#FF0000' COMMENT '显示颜色',
`priority` int NOT NULL DEFAULT 0 COMMENT '优先级',
`enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '启用状态',
`extra_params` text NULL COMMENT '扩展参数 JSON',
`description` varchar(500) NULL COMMENT '描述',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_roi_id_deleted` (`roi_id`, `deleted`) COMMENT 'ROI UUID唯一含逻辑删除',
INDEX `idx_camera_id` (`camera_id`),
INDEX `idx_device_id` (`device_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI ROI 区域配置';
-- ----------------------------
-- ROI-算法绑定ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_ai_roi_algo_bind`;
CREATE TABLE `video_ai_roi_algo_bind` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`bind_id` varchar(50) NOT NULL COMMENT 'UUID同步用',
`roi_id` varchar(50) NOT NULL COMMENT 'ROI 的 UUID',
`algo_code` varchar(100) NOT NULL COMMENT '算法编码',
`params` text NULL COMMENT '自定义参数 JSON',
`priority` int NOT NULL DEFAULT 0 COMMENT '优先级',
`enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '启用状态',
`template_id` varchar(64) NULL COMMENT '引用的模板 ID',
`param_override` text NULL COMMENT '覆盖模板的局部参数 JSON',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_bind_id_deleted` (`bind_id`, `deleted`) COMMENT '绑定UUID唯一含逻辑删除',
INDEX `idx_roi_id` (`roi_id`),
INDEX `idx_algo_code` (`algo_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI ROI-算法绑定';
-- ----------------------------
-- 配置变更日志ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_ai_config_log`;
CREATE TABLE `video_ai_config_log` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`config_type` varchar(30) NOT NULL COMMENT '类型ROI/ALGORITHM/BIND',
`config_id` varchar(50) NOT NULL COMMENT '目标ID',
`old_value` text NULL COMMENT '变更前 JSON',
`new_value` text NULL COMMENT '变更后 JSON',
`updated_by` varchar(100) NULL COMMENT '操作人',
`updated_at` datetime NULL COMMENT '操作时间',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_config_type` (`config_type`),
INDEX `idx_config_id` (`config_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 配置变更日志';
-- ----------------------------
-- AI 配置版本快照ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_ai_config_snapshot`;
CREATE TABLE `video_ai_config_snapshot` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`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` datetime NULL COMMENT '创建时间',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
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='AI 配置版本快照';
-- ----------------------------
-- AI 摄像头截图持久化ProjectBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_ai_camera_snapshot`;
CREATE TABLE `video_ai_camera_snapshot` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`camera_code` varchar(64) NOT NULL COMMENT '摄像头编码',
`cos_key` varchar(512) NOT NULL COMMENT 'COS 对象键(永久有效)',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
`project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_camera_code_deleted` (`camera_code`, `deleted`) COMMENT '摄像头编码唯一(含逻辑删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 摄像头截图持久化';
-- ============================================================================
-- 七、租户级字典TenantBaseDO无 project_id
-- ============================================================================
-- ----------------------------
-- AI 算法注册表TenantBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_ai_algorithm`;
CREATE TABLE `video_ai_algorithm` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`algo_code` varchar(100) NOT NULL COMMENT '算法编码',
`algo_name` varchar(200) NULL COMMENT '算法名称',
`target_class` varchar(50) NULL COMMENT '目标类别',
`param_schema` text NULL COMMENT '参数模板 JSON',
`global_params` text NULL COMMENT '用户自定义的全局默认参数 JSON',
`description` varchar(500) NULL COMMENT '描述',
`is_active` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否可用',
`sync_time` datetime NULL COMMENT '最后同步时间',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_algo_code_deleted` (`algo_code`, `deleted`) COMMENT '算法编码唯一(含逻辑删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 算法注册表';
-- ----------------------------
-- AI 算法参数模板TenantBaseDO
-- ----------------------------
DROP TABLE IF EXISTS `video_ai_algo_template`;
CREATE TABLE `video_ai_algo_template` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`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 '描述',
`creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_template_id_deleted` (`template_id`, `deleted`) COMMENT '模板ID唯一含逻辑删除',
INDEX `idx_algo_code` (`algo_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 算法参数模板';
-- ============================================================================
-- 初始数据
-- ============================================================================
-- 预置算法(与 FastAPI 边缘端保持一致)
-- 幂等:已存在则更新 name/target_class/param_schema/description保持 is_active 与用户设置
INSERT INTO `video_ai_algorithm` (`algo_code`, `algo_name`, `target_class`, `param_schema`, `description`, `is_active`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES
('leave_post', '离岗检测', 'person',
'{"leave_countdown_sec":{"type":"int","default":300,"min":0},"working_hours":{"type":"list","default":[]}}',
'检测人员是否在岗支持工作时间段配置。算法抽帧频率3帧/秒(固定)',
1, '1', NOW(), '1', NOW(), b'0', 0),
('intrusion', '周界入侵检测', 'person',
'{"cooldown_seconds":{"type":"int","default":300,"min":0},"confirm_seconds":{"type":"int","default":5,"min":1},"confirm_intrusion_seconds":{"type":"int","default":5,"min":1},"confirm_clear_seconds":{"type":"int","default":180,"min":1}}',
'检测人员进入指定区域。算法抽帧频率1帧/秒固定。持续检测到人5秒触发告警持续无人180秒自动结束告警。消失确认期间短暂有人(<5秒)不影响倒计时。',
1, '1', NOW(), '1', NOW(), b'0', 0),
('illegal_parking', '车辆违停检测', 'car,truck,bus,motorcycle',
'{"confirm_vehicle_sec":{"type":"int","default":15,"min":5},"parking_countdown_sec":{"type":"int","default":300,"min":60},"confirm_clear_sec":{"type":"int","default":30,"min":10},"cooldown_sec":{"type":"int","default":600,"min":0}}',
'检测禁停区域内是否有车辆违规停放。确认车辆停留15秒后开始5分钟倒计时超时触发告警。车辆离开30秒后自动结束告警。',
1, '1', NOW(), '1', NOW(), b'0', 0),
('vehicle_congestion', '车辆拥堵检测', 'car,truck,bus,motorcycle',
'{"count_threshold":{"type":"int","default":3,"min":1},"confirm_congestion_sec":{"type":"int","default":60,"min":10},"confirm_clear_sec":{"type":"int","default":120,"min":10},"cooldown_sec":{"type":"int","default":600,"min":0}}',
'检测区域内车辆是否拥堵。当平均车辆数达到阈值并持续60秒触发告警车辆减少并持续120秒后自动结束告警。',
1, '1', NOW(), '1', NOW(), b'0', 0)
ON DUPLICATE KEY UPDATE
`algo_name` = VALUES(`algo_name`),
`target_class` = VALUES(`target_class`),
`param_schema` = VALUES(`param_schema`),
`description` = VALUES(`description`),
`updater` = VALUES(`updater`),
`update_time` = NOW();
SET FOREIGN_KEY_CHECKS = 1;