CMVR-IOT/sql/inspection_module.sql
lixiaolong 05992d1980 feat(aima): 实现智能测试任务执行队列和媒体录制功能
- 新增 SYSTEM_EXECUTE_ACTION_QUEUE 枚举值支持边缘设备动作队列执行
- 修改 aima_task_test_case 表主键为 task_id 和 sort_order 组合
- 添加 AimaFlowExecutionListener 监听器实现任务执行进度跟踪
- 引入并发安全的 Map 结构存储任务执行状态避免并发问题
- 实现测试用例绑定顺序管理和执行进度计算逻辑
- 集成 FlowMediaParamResolver 处理图像和视频媒体参数
- 完善 AimaTaskInstanceService 支持测试用例顺序执行
- 添加 AimaTestLog 记录实际执行结果、截图和视频链接
- 更新 EdgeCameraService 支持工作流录像会话管理
- 实现后端本地录像功能包括开始/停止录制操作
- 添加定时清理过期录像会话和 WebSocket 实时推送支持
2026-08-12 17:58:44 +08:00

285 lines
17 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.

-- ----------------------------
-- 智能巡检模块数据库表结构
-- ----------------------------
-- 1. 巡检机器人表
DROP TABLE IF EXISTS `inspection_robot`;
CREATE TABLE `inspection_robot` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`robot_id` varchar(128) DEFAULT NULL COMMENT 'QUIC上报的永久机器人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 'AGV运行模式(0未知 1断开 2空闲 3手动 4自动 5充电 6暂停 7停止 8故障 9急停)',
`battery_level` int(3) DEFAULT NULL COMMENT '电量百分比',
`current_position` varchar(200) DEFAULT NULL COMMENT '当前位置',
`connect_status` char(1) NOT NULL DEFAULT '0' COMMENT '连接状态(0离线 1在线)',
`quic_node_id` varchar(128) DEFAULT NULL COMMENT '当前QUIC节点实例',
`quic_session_id` varchar(128) DEFAULT NULL COMMENT '当前QUIC会话',
`quic_boot_id` varchar(128) DEFAULT NULL COMMENT '边缘端启动ID',
`observed_ip` varchar(64) DEFAULT NULL COMMENT 'QUIC连接来源IP',
`software_version` varchar(64) DEFAULT NULL COMMENT '边缘端软件版本',
`last_heartbeat_time` datetime(3) DEFAULT NULL COMMENT '最后心跳时间',
`archived_status` char(1) NOT NULL DEFAULT '0' COMMENT '归档状态(0正常 1归档)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_robot_code` (`robot_code`),
KEY `idx_inspection_robot_robot_id` (`robot_id`),
KEY `idx_inspection_robot_connect_status` (`connect_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检机器人表';
-- 1.1 QUIC自动发现的机器人设备表(逻辑唯一性由后端校验)
DROP TABLE IF EXISTS `inspection_robot_device`;
CREATE TABLE `inspection_robot_device` (
`id` varchar(64) NOT NULL COMMENT '主键ID',
`robot_id` varchar(128) NOT NULL COMMENT '永久机器人ID',
`device_id` varchar(128) NOT NULL COMMENT '边缘端设备ID',
`device_name` varchar(128) DEFAULT NULL COMMENT '设备显示名称',
`device_kind` int DEFAULT NULL COMMENT '设备类型',
`type_name` varchar(128) DEFAULT NULL COMMENT '设备实现类型',
`enabled` char(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
`manager_state` int DEFAULT NULL COMMENT '设备管理状态',
`health_status` int DEFAULT NULL COMMENT '健康状态',
`online_status` char(1) NOT NULL DEFAULT '0' COMMENT '在线状态',
`has_error` char(1) NOT NULL DEFAULT '0' COMMENT '是否有错误',
`error_message` varchar(1000) DEFAULT NULL COMMENT '错误信息',
`status_updated_time` datetime(3) DEFAULT NULL COMMENT '边缘端状态更新时间',
`last_seen_time` datetime(3) DEFAULT NULL COMMENT '最后发现时间',
`offline_time` datetime(3) DEFAULT NULL COMMENT '离线时间',
`create_by` varchar(64) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_by` varchar(64) DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`remark` varchar(500) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_robot_device_robot_id` (`robot_id`),
UNIQUE KEY `uk_robot_device_identity` (`robot_id`, `device_id`),
KEY `idx_robot_device_online` (`robot_id`, `online_status`)
) 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`, `sort_order`),
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='巡检结果媒体证据表';