-- ---------------------------- -- 智能巡检模块数据库表结构 -- ---------------------------- -- 1. 巡检机器人表 DROP TABLE IF EXISTS `inspection_robot`; CREATE TABLE `inspection_robot` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `robot_code` varchar(64) DEFAULT NULL COMMENT '机器人编码', `robot_name` varchar(100) NOT NULL COMMENT '机器人名称', `robot_model` varchar(100) DEFAULT NULL COMMENT '机器人型号', `robot_type` varchar(50) DEFAULT NULL COMMENT '机器人类型', `ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址', `port` int(11) DEFAULT NULL COMMENT '端口号', `current_map_id` varchar(64) DEFAULT NULL COMMENT '当前地图ID', `status` char(1) DEFAULT '0' COMMENT '状态(0在线 1离线 2充电中 3巡检中)', `battery_level` int(3) DEFAULT NULL COMMENT '电量百分比', `current_position` varchar(200) DEFAULT NULL COMMENT '当前位置', `terminal_id` varchar(64) DEFAULT NULL COMMENT '终端ID', PRIMARY KEY (`id`), UNIQUE KEY `uk_robot_code` (`robot_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检机器人表'; -- 2. 巡检地图表 DROP TABLE IF EXISTS `inspection_map`; CREATE TABLE `inspection_map` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `map_name` varchar(100) NOT NULL COMMENT '地图名称', `map_source_robot_id` varchar(64) DEFAULT NULL COMMENT '地图来源的机器人id', `map_source_name` varchar(100) DEFAULT NULL COMMENT '地图来源的地图名称', `map_file_path` varchar(500) DEFAULT NULL COMMENT '地图文件路径', `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', `map_desc` varchar(500) DEFAULT NULL COMMENT '地图描述', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检地图表'; -- 3. 巡检任务表(不再包含机器人信息) DROP TABLE IF EXISTS `inspection_task`; CREATE TABLE `inspection_task` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `task_code` varchar(64) DEFAULT NULL COMMENT '任务编码', `task_name` varchar(100) NOT NULL COMMENT '任务名称', `task_type` char(1) DEFAULT '1' COMMENT '任务类型(1巡检任务 2讲解任务)', `task_config_id` varchar(64) DEFAULT NULL COMMENT '任务配置ID', `map_id` varchar(64) DEFAULT NULL COMMENT '地图ID', `waypoint_count` int(11) DEFAULT '0' COMMENT '点位总数', PRIMARY KEY (`id`), UNIQUE KEY `uk_task_code` (`task_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检任务表'; -- 4. 巡检点位表(不再包含任务ID,通过关联表关联) DROP TABLE IF EXISTS `inspection_waypoint`; CREATE TABLE `inspection_waypoint` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `waypoint_name` varchar(100) NOT NULL COMMENT '点位名称', `enabled` char(1) DEFAULT '0' COMMENT '是否启用(0启用 1禁用)', `sort_order` int(11) DEFAULT '0' COMMENT '排序号', `detect_item_id` varchar(64) DEFAULT NULL COMMENT '检测项ID', `map_id` varchar(64) DEFAULT NULL COMMENT '地图ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检点位表'; -- 4.1 任务与点位关联表(多对多) DROP TABLE IF EXISTS `inspection_task_waypoint`; CREATE TABLE `inspection_task_waypoint` ( `task_id` varchar(64) NOT NULL COMMENT '任务ID', `waypoint_id` varchar(64) NOT NULL COMMENT '点位ID', `sort_order` int(11) DEFAULT '0' COMMENT '排序号', PRIMARY KEY (`task_id`, `waypoint_id`), KEY `idx_task_id` (`task_id`), KEY `idx_waypoint_id` (`waypoint_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务与点位关联表'; -- 4.2 巡检任务执行实例表 DROP TABLE IF EXISTS `inspection_task_instance`; CREATE TABLE `inspection_task_instance` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `task_id` varchar(64) NOT NULL COMMENT '任务ID', `robot_id` varchar(64) DEFAULT NULL COMMENT '机器人ID', `status` char(1) DEFAULT '0' COMMENT '执行状态(0待执行 1执行中 2已完成 3已取消 4执行失败 5已暂停)', `start_time` datetime DEFAULT NULL COMMENT '开始时间', `end_time` datetime DEFAULT NULL COMMENT '结束时间', `task_ins_id` varchar(64) DEFAULT NULL COMMENT '检测任务id', `waypoint_count` int(11) DEFAULT '0' COMMENT '点位总数', PRIMARY KEY (`id`), KEY `idx_task_id` (`task_id`), KEY `idx_robot_id` (`robot_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检任务执行实例表'; -- 5. 巡检告警表(增加任务执行实例ID) DROP TABLE IF EXISTS `inspection_alarm`; CREATE TABLE `inspection_alarm` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `alarm_code` varchar(64) DEFAULT NULL COMMENT '告警编码', `task_instance_id` varchar(64) DEFAULT NULL COMMENT '任务执行实例ID', `result_id` varchar(64) DEFAULT NULL COMMENT '关联巡检结果ID', `alarm_source` varchar(20) DEFAULT NULL COMMENT '告警来源(PPE/METER/MANUAL)', `item_id` varchar(64) DEFAULT NULL COMMENT '检测项ID', `node_id` varchar(64) DEFAULT NULL COMMENT '工作流节点ID', `task_id` varchar(64) DEFAULT NULL COMMENT '任务ID', `task_name` varchar(100) DEFAULT NULL COMMENT '任务名称', `robot_id` varchar(64) DEFAULT NULL COMMENT '机器人ID', `robot_name` varchar(100) DEFAULT NULL COMMENT '机器人名称', `alarm_level` char(1) DEFAULT '2' COMMENT '告警级别(1提示 2警告 3严重)', `alarm_type` char(1) DEFAULT NULL COMMENT '告警类型(1设备异常 2环境异常 3任务异常 4通信异常)', `alarm_title` varchar(200) DEFAULT NULL COMMENT '告警标题', `alarm_content` text COMMENT '告警内容', `alarm_location` varchar(200) DEFAULT NULL COMMENT '告警位置', `alarm_time` datetime DEFAULT NULL COMMENT '告警时间', `handle_status` char(1) DEFAULT '0' COMMENT '处理状态(0未处理 1处理中 2已处理 3已忽略)', `handler` varchar(64) DEFAULT NULL COMMENT '处理人', `handle_time` datetime DEFAULT NULL COMMENT '处理时间', `handle_remark` varchar(500) DEFAULT NULL COMMENT '处理说明', `evidence_image` varchar(500) DEFAULT NULL COMMENT '图片证据', PRIMARY KEY (`id`), UNIQUE KEY `uk_alarm_code` (`alarm_code`), UNIQUE KEY `uk_alarm_result_id` (`result_id`), KEY `idx_task_instance_id` (`task_instance_id`), KEY `idx_task_id` (`task_id`), KEY `idx_robot_id` (`robot_id`), KEY `idx_alarm_time` (`alarm_time`), KEY `idx_handle_status` (`handle_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检告警表'; -- ---------------------------- -- 巡检任务执行日志表 -- ---------------------------- DROP TABLE IF EXISTS `inspection_task_log`; CREATE TABLE `inspection_task_log` ( `id` varchar(64) NOT NULL COMMENT '主键ID', `task_instance_id` varchar(64) DEFAULT NULL COMMENT '任务实例ID', `task_id` varchar(64) DEFAULT NULL COMMENT '任务ID', `item_id` varchar(64) DEFAULT NULL COMMENT '检测项id', `node_id` varchar(64) DEFAULT NULL COMMENT '节点ID', `node_name` varchar(255) DEFAULT NULL COMMENT '节点名称', `log_type` int(11) DEFAULT '1' COMMENT '日志类型(1文字 2图片 3视频 4音频)', `log_content` text COMMENT '日志内容/文字描述', `media_url` varchar(500) DEFAULT NULL COMMENT '媒体文件URL(图片/视频/音频)', `status` int(11) DEFAULT '1' COMMENT '执行状态(0待执行 1执行中 2已完成 3已取消 4执行失败 5已暂停)', `progress` DECIMAL(5,2) DEFAULT NULL COMMENT '执行进度(百分比,保留2位小数)', `log_time` datetime DEFAULT NULL COMMENT '日志时间', `extra_info` text COMMENT '扩展信息(JSON格式)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`), KEY `idx_task_instance_id` (`task_instance_id`), KEY `idx_task_id` (`task_id`), KEY `idx_log_time` (`log_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检任务执行日志表'; -- 6. 统一巡检结果表 DROP TABLE IF EXISTS `inspection_result_media`; DROP TABLE IF EXISTS `inspection_result`; CREATE TABLE `inspection_result` ( `id` varchar(32) NOT NULL COMMENT '主键ID', `result_code` varchar(64) NOT NULL COMMENT '结果编码', `dedupe_key` varchar(255) NOT NULL COMMENT '结果幂等键', `task_instance_id` varchar(64) DEFAULT NULL COMMENT '巡检任务实例数据库ID', `flow_instance_id` varchar(64) DEFAULT NULL COMMENT '工作流实例ID', `task_id` varchar(64) DEFAULT NULL COMMENT '巡检任务ID', `item_id` varchar(64) DEFAULT NULL COMMENT '检测项ID', `node_id` varchar(64) DEFAULT NULL COMMENT '工作流节点ID', `node_name` varchar(255) DEFAULT NULL COMMENT '工作流节点名称', `iteration_path` varchar(255) DEFAULT NULL COMMENT '循环迭代路径JSON', `result_type` varchar(20) NOT NULL COMMENT '结果类型(PPE/METER/MANUAL)', `result_status` varchar(32) NOT NULL COMMENT 'PENDING/NORMAL/ABNORMAL/RECOGNIZE_FAILED', `result_name` varchar(255) NOT NULL COMMENT '检查名称', `value_number` decimal(20,8) DEFAULT NULL COMMENT '结构化数值', `value_text` varchar(1000) DEFAULT NULL COMMENT '文本结果', `unit` varchar(32) DEFAULT NULL COMMENT '单位', `alarm_level` tinyint DEFAULT NULL COMMENT '告警级别(1提示 2警告 3严重)', `alarm_message` varchar(1000) DEFAULT NULL COMMENT '告警描述', `confidence` decimal(10,8) DEFAULT NULL COMMENT '模型置信度', `source_event_id` varchar(128) DEFAULT NULL COMMENT '外部PPE事件ID', `evidence_url` varchar(1000) DEFAULT NULL COMMENT '主要MinIO证据地址', `evidence_type` varchar(20) DEFAULT NULL COMMENT '主要证据类型(IMAGE/VIDEO)', `raw_result` mediumtext COMMENT '模型或边缘端原始返回', `matched_rule_json` text COMMENT '最终命中的报警规则快照', `rule_snapshot_json` mediumtext COMMENT '本次执行使用的完整规则快照', `reviewer` varchar(64) DEFAULT NULL COMMENT '人工复核人', `review_time` datetime DEFAULT NULL COMMENT '人工复核时间', `review_remark` varchar(1000) DEFAULT NULL COMMENT '人工复核说明', `review_version` int NOT NULL DEFAULT 0 COMMENT '人工复核乐观锁版本', `alarm_id` varchar(64) DEFAULT NULL COMMENT '关联告警ID', `occurred_time` datetime NOT NULL COMMENT '结果发生时间', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`), UNIQUE KEY `uk_inspection_result_code` (`result_code`), UNIQUE KEY `uk_inspection_result_dedupe` (`dedupe_key`), KEY `idx_result_task_instance` (`task_instance_id`), KEY `idx_result_flow_instance` (`flow_instance_id`), KEY `idx_result_status` (`result_status`), KEY `idx_result_type` (`result_type`), KEY `idx_result_occurred_time` (`occurred_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='统一巡检结果表'; -- 7. 巡检结果媒体证据表 CREATE TABLE `inspection_result_media` ( `id` varchar(32) NOT NULL COMMENT '主键ID', `result_id` varchar(32) NOT NULL COMMENT '巡检结果ID', `media_type` varchar(20) NOT NULL COMMENT 'IMAGE或VIDEO', `media_url` varchar(1000) NOT NULL COMMENT 'MinIO媒体地址', `sort_order` int NOT NULL DEFAULT 0 COMMENT '排序号', `create_time` datetime NOT NULL COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_result_media_result_id` (`result_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检结果媒体证据表';