-- Resource center foundation. Safe to run repeatedly on the isolated development database. CREATE TABLE IF NOT EXISTS iot_robot ( id varchar(64) NOT NULL, robot_id varchar(128) NOT NULL, robot_code varchar(128) DEFAULT NULL, robot_name varchar(255) DEFAULT NULL, robot_model varchar(128) DEFAULT NULL, robot_type varchar(64) DEFAULT NULL, ip_address varchar(128) DEFAULT NULL, port bigint DEFAULT NULL, active_map_id varchar(64) DEFAULT NULL, runtime_status varchar(32) DEFAULT NULL, battery_level int DEFAULT NULL, current_position text, connect_status varchar(16) DEFAULT NULL, quic_node_id varchar(128) DEFAULT NULL, quic_session_id varchar(128) DEFAULT NULL, quic_boot_id varchar(128) DEFAULT NULL, observed_ip varchar(128) DEFAULT NULL, software_version varchar(128) DEFAULT NULL, last_heartbeat_time datetime DEFAULT NULL, archived_status varchar(16) DEFAULT '0', 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), UNIQUE KEY uk_iot_robot_robot_id (robot_id), KEY idx_iot_robot_connect_status (connect_status), KEY idx_iot_robot_active_map (active_map_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Platform robots'; CREATE TABLE IF NOT EXISTS iot_device ( id varchar(64) NOT NULL, robot_id varchar(128) NOT NULL, device_id varchar(128) NOT NULL, device_name varchar(255) DEFAULT NULL, device_kind int DEFAULT NULL, device_type varchar(64) DEFAULT NULL, device_role varchar(128) DEFAULT NULL, device_index int DEFAULT NULL, terminal_id varchar(64) DEFAULT NULL, enabled varchar(16) DEFAULT '1', manager_state int DEFAULT NULL, health_status int DEFAULT NULL, online_status varchar(16) DEFAULT NULL, has_error varchar(16) DEFAULT NULL, error_message varchar(1000) DEFAULT NULL, status_updated_time datetime DEFAULT NULL, last_seen_time datetime DEFAULT NULL, offline_time datetime DEFAULT NULL, 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), UNIQUE KEY uk_iot_device_identity (robot_id, device_id), KEY idx_iot_device_robot (robot_id), KEY idx_iot_device_kind_status (device_kind, online_status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Platform robot devices'; CREATE TABLE IF NOT EXISTS iot_terminal ( id varchar(64) NOT NULL, terminal_code varchar(128) NOT NULL, terminal_name varchar(255) DEFAULT NULL, ip_address varchar(128) DEFAULT NULL, port bigint DEFAULT NULL, software_version varchar(128) DEFAULT NULL, connect_status varchar(16) DEFAULT NULL, last_heartbeat_time datetime DEFAULT NULL, status varchar(16) DEFAULT NULL, 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), UNIQUE KEY uk_iot_terminal_code (terminal_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Edge terminals'; CREATE TABLE IF NOT EXISTS iot_robot_terminal ( id varchar(64) NOT NULL, robot_id varchar(128) NOT NULL, terminal_id varchar(64) NOT NULL, active varchar(16) DEFAULT '1', bind_time datetime DEFAULT NULL, unbind_time datetime DEFAULT NULL, create_time datetime DEFAULT NULL, update_time datetime DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY uk_iot_robot_terminal (robot_id, terminal_id), KEY idx_iot_robot_terminal_active (robot_id, active) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Robot terminal bindings'; CREATE TABLE IF NOT EXISTS iot_map ( id varchar(64) NOT NULL, map_name varchar(255) NOT NULL, map_version varchar(64) DEFAULT NULL, map_type varchar(64) DEFAULT NULL, coordinate_system varchar(128) DEFAULT NULL, source_type varchar(32) DEFAULT NULL, source_robot_id varchar(128) DEFAULT NULL, source_map_name varchar(255) DEFAULT NULL, map_file_path varchar(1000) DEFAULT NULL, status varchar(16) DEFAULT '0', map_desc varchar(1000) DEFAULT NULL, 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_iot_map_source_robot (source_robot_id), KEY idx_iot_map_status (status) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Platform maps'; SET @source_map_name_exists = ( SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'iot_map' AND column_name = 'source_map_name' ); SET @source_map_name_sql = IF( @source_map_name_exists = 0, 'ALTER TABLE iot_map ADD COLUMN source_map_name varchar(255) DEFAULT NULL AFTER source_robot_id', 'SELECT 1' ); PREPARE source_map_name_stmt FROM @source_map_name_sql; EXECUTE source_map_name_stmt; DEALLOCATE PREPARE source_map_name_stmt; CREATE TABLE IF NOT EXISTS iot_robot_map ( id varchar(64) NOT NULL, robot_id varchar(128) NOT NULL, map_id varchar(64) NOT NULL, enabled varchar(16) DEFAULT '1', is_default varchar(16) DEFAULT '0', loaded_status varchar(32) DEFAULT 'NOT_LOADED', compatibility_status varchar(32) DEFAULT 'UNKNOWN', last_loaded_time datetime DEFAULT NULL, remark varchar(500) DEFAULT NULL, create_by varchar(64) DEFAULT NULL, create_time datetime DEFAULT NULL, update_by varchar(64) DEFAULT NULL, update_time datetime DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY uk_iot_robot_map (robot_id, map_id), KEY idx_iot_robot_map_default (robot_id, is_default) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Robot map bindings';