
CREATE TABLE `device_group` (
    `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    `uuid` VARCHAR(36) NOT NULL UNIQUE COMMENT '唯一标识UUID',
    `name` VARCHAR(255) NOT NULL COMMENT '分组名称',
    `notes` TEXT COMMENT '备注信息',
    `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态（0: 停用, 1: 正常）',
    `creator_name` VARCHAR(255) COMMENT '创建人姓名',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `creator_uuid` VARCHAR(255) COMMENT '创建人编码'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备分组表';

CREATE TABLE `device_list` (
    `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    `uuid` VARCHAR(36) NOT NULL UNIQUE COMMENT '唯一标识UUID',
    `serial_number` VARCHAR(255) NOT NULL COMMENT '设备编号',
    `notes` TEXT COMMENT '备注信息',
    `ip` VARCHAR(15) COMMENT '设备IP地址',
    `group_name` VARCHAR(255) COMMENT '分组名称',
    `group_uuid` VARCHAR(36) COMMENT '分组UUID',
    `brand` VARCHAR(255) COMMENT '设备品牌',
    `model` VARCHAR(255) COMMENT '设备机型',
    `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态（0: 停用, 1: 正常）',
    `creator_name` VARCHAR(255) COMMENT '创建人姓名',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `creator_uuid` VARCHAR(255) COMMENT '创建人编码'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备列表表';

CREATE TABLE `platform` (
    `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    `uuid` VARCHAR(36) NOT NULL UNIQUE COMMENT '唯一标识UUID',
    `name` VARCHAR(255) NOT NULL COMMENT '平台名称',
    `notes` TEXT COMMENT '备注信息',
    `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态（0: 停用, 1: 正常）',
    `creator_name` VARCHAR(255) COMMENT '创建人姓名',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `creator_uuid` VARCHAR(255) COMMENT '创建人编码'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台表';

CREATE TABLE `script` (
    `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    `uuid` VARCHAR(36) NOT NULL UNIQUE COMMENT '唯一标识UUID',
    `name` VARCHAR(255) NOT NULL COMMENT '脚本名称',
    `script_type` VARCHAR(50) NOT NULL COMMENT '脚本类型',
    `notes` TEXT COMMENT '备注信息',
    `version` VARCHAR(50) COMMENT '脚本版本',
    `version_content` TEXT COMMENT '版本内容',
    `popup_flag` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '弹窗标识（0: 否, 1: 是）',
    `force_update_flag` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '强更标识（0: 否, 1: 是）',
    `md5` VARCHAR(32) COMMENT '脚本MD5',
    `download_url` VARCHAR(255) COMMENT '下载地址',
    `platform` VARCHAR(255) COMMENT '适用平台',
    `status` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '状态（0: 停用, 1: 正常）',
    `creator_name` VARCHAR(255) COMMENT '创建人姓名',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `creator_uuid` VARCHAR(255) COMMENT '创建人编码'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='脚本表';

CREATE TABLE `script_parameter` (
    `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    `uuid` VARCHAR(36) NOT NULL UNIQUE COMMENT '唯一标识UUID',
    `parameter_name` VARCHAR(255) NOT NULL COMMENT '参数名称',
    `english_name` VARCHAR(255) NOT NULL COMMENT '参数英文名',
    `description` TEXT COMMENT '参数描述',
    `default_value` VARCHAR(255) COMMENT '默认值',
    `type` VARCHAR(50) COMMENT '参数类型',
    `optional_flag` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '缺省标识（0: 否, 1: 可）',
    `sub_type` VARCHAR(255) COMMENT '子级类型（当为对象或数组时有效）',
    `script_uuid` VARCHAR(36) NOT NULL COMMENT '脚本UUID',
    `family_id` VARCHAR(255) COMMENT '家族ID',
    `parent_id` VARCHAR(255) COMMENT '父ID',
    `pedigree` VARCHAR(255) COMMENT '谱系',
    `generation` INT COMMENT '代数'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='脚本参数表';

CREATE TABLE `script_task` (
    `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    `uuid` VARCHAR(36) NOT NULL UNIQUE COMMENT '唯一标识UUID',
    `platform` VARCHAR(255) COMMENT '适用平台',
    `script` VARCHAR(255) COMMENT '脚本名称',
    `scope` TINYINT(1) NOT NULL COMMENT '适用范围（1: 设备, 2: 所有设备）',
    `status` TINYINT(1) NOT NULL COMMENT '状态（1: 正常, 2: 停用, 3: 过期）',
    `priority` INT NOT NULL COMMENT '优先级（值越大越优先）',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `creator_uuid` VARCHAR(255) COMMENT '创建人编码',
    `creator_name` VARCHAR(255) COMMENT '创建人姓名',
    `effective_start_time` DATETIME COMMENT '生效开始时间',
    `effective_end_time` DATETIME COMMENT '生效结束时间',
    `task_type` VARCHAR(50) COMMENT '任务类型'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='脚本任务表';

CREATE TABLE `script_task_device` (
    `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    `uuid` VARCHAR(36) NOT NULL UNIQUE COMMENT '唯一标识UUID',
    `device_uuid` VARCHAR(36) NOT NULL COMMENT '设备UUID',
    `device_code` VARCHAR(255) NOT NULL COMMENT '设备编码',
    `device_name` VARCHAR(255) NOT NULL COMMENT '设备名称',
    `task_uuid` VARCHAR(36) NOT NULL COMMENT '任务UUID'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='脚本任务设备表';