CREATE TABLE IF NOT EXISTS `steady_checksquare_task` (
    `id` VARCHAR(64) NOT NULL COMMENT '主键',
    `task_no` VARCHAR(64) NOT NULL COMMENT '检测任务编号',
    `line_id` VARCHAR(64) NOT NULL COMMENT '监测点ID',
    `line_name` VARCHAR(255) NULL COMMENT '监测点名称',
    `line_ids_json` JSON NULL COMMENT '请求监测点ID列表',
    `line_ids_text` VARCHAR(2000) NULL COMMENT '请求监测点ID检索文本，格式 |line1|line2|',
    `time_start` DATETIME NOT NULL COMMENT '检测开始时间',
    `time_end` DATETIME NOT NULL COMMENT '检测结束时间',
    `interval_minutes` INT NULL COMMENT '默认统计间隔，单位分钟',
    `indicator_codes_json` JSON NULL COMMENT '请求指标编码列表',
    `indicator_codes_text` VARCHAR(2000) NULL COMMENT '请求指标编码检索文本，格式 |code1|code2|',
    `task_status` VARCHAR(32) NOT NULL DEFAULT 'SUCCESS' COMMENT '任务状态：RUNNING/SUCCESS/FAIL',
    `item_count` INT NOT NULL DEFAULT 0 COMMENT '检测项数量',
    `abnormal_item_count` INT NOT NULL DEFAULT 0 COMMENT '异常检测项数量',
    `min_data_integrity` DECIMAL(12,6) NOT NULL DEFAULT 0.000000 COMMENT '最低数据完整性',
    `result_message` VARCHAR(2000) NULL COMMENT '执行结果说明',
    `state` TINYINT NOT NULL DEFAULT 1 COMMENT '状态：0-删除，1-正常',
    `create_by` VARCHAR(64) NULL COMMENT '创建人',
    `create_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by` VARCHAR(64) NULL COMMENT '更新人',
    `update_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_steady_checksquare_task_no` (`task_no`),
    KEY `idx_steady_checksquare_task_line_time` (`line_id`, `time_start`, `time_end`),
    KEY `idx_steady_checksquare_task_status` (`task_status`),
    KEY `idx_steady_checksquare_task_line_ids_text` (`line_ids_text`(255)),
    KEY `idx_steady_checksquare_task_indicator_text` (`indicator_codes_text`(255)),
    KEY `idx_steady_checksquare_task_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='稳态数据校验任务表';

CREATE TABLE IF NOT EXISTS `steady_checksquare_item` (
    `id` VARCHAR(64) NOT NULL COMMENT '主键',
    `task_id` VARCHAR(64) NOT NULL COMMENT '检测任务ID',
    `item_key` VARCHAR(255) NOT NULL COMMENT '检测项唯一键',
    `line_id` VARCHAR(64) NULL COMMENT '监测点ID',
    `line_name` VARCHAR(255) NULL COMMENT '监测点名称',
    `indicator_code` VARCHAR(64) NOT NULL COMMENT '指标编码',
    `indicator_name` VARCHAR(255) NULL COMMENT '指标名称',
    `harmonic_order` INT NULL COMMENT '谐波次数；聚合项为空',
    `interval_minutes` INT NULL COMMENT '当前检测项统计间隔，单位分钟',
    `has_data` TINYINT NOT NULL DEFAULT 0 COMMENT '是否存在任意数据：0-否，1-是',
    `expected_point_count` INT NOT NULL DEFAULT 0 COMMENT '期望点数',
    `actual_point_count` INT NOT NULL DEFAULT 0 COMMENT '实际点数',
    `missing_point_count` INT NOT NULL DEFAULT 0 COMMENT '缺失点数',
    `data_integrity` DECIMAL(12,6) NOT NULL DEFAULT 0.000000 COMMENT '数据完整性',
    `data_integrity_text` VARCHAR(32) NULL COMMENT '数据完整性文本',
    `abnormal` TINYINT NOT NULL DEFAULT 0 COMMENT '指标值大小关系是否异常',
    `abnormal_point_count` INT NOT NULL DEFAULT 0 COMMENT '大小关系异常点数',
    `harmonic_parity_abnormal` TINYINT NOT NULL DEFAULT 0 COMMENT '谐波奇偶关系是否异常',
    `harmonic_parity_abnormal_point_count` INT NOT NULL DEFAULT 0 COMMENT '谐波奇偶关系异常点数',
    `state` TINYINT NOT NULL DEFAULT 1 COMMENT '状态：0-删除，1-正常',
    `create_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_steady_checksquare_item` (`task_id`, `item_key`),
    KEY `idx_steady_checksquare_item_indicator` (`indicator_code`),
    KEY `idx_steady_checksquare_item_abnormal` (`abnormal`, `harmonic_parity_abnormal`),
    KEY `idx_steady_checksquare_item_data_integrity` (`data_integrity`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='稳态数据校验检测项表';

CREATE TABLE IF NOT EXISTS `steady_checksquare_stat_summary` (
    `id` VARCHAR(64) NOT NULL COMMENT '主键',
    `item_id` VARCHAR(64) NOT NULL COMMENT '检测项ID',
    `stat_type` VARCHAR(16) NOT NULL COMMENT '统计类型：AVG/MAX/MIN/CP95',
    `supported` TINYINT NOT NULL DEFAULT 1 COMMENT '是否支持',
    `has_data` TINYINT NOT NULL DEFAULT 0 COMMENT '是否存在数据',
    `expected_point_count` INT NOT NULL DEFAULT 0 COMMENT '期望点数',
    `actual_point_count` INT NOT NULL DEFAULT 0 COMMENT '实际点数',
    `missing_point_count` INT NOT NULL DEFAULT 0 COMMENT '缺失点数',
    `data_integrity` DECIMAL(12,6) NOT NULL DEFAULT 0.000000 COMMENT '数据完整性',
    `data_integrity_text` VARCHAR(32) NULL COMMENT '数据完整性文本',
    `create_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_steady_checksquare_stat` (`item_id`, `stat_type`),
    KEY `idx_steady_checksquare_stat_type` (`stat_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='稳态数据校验统计摘要表';

CREATE TABLE IF NOT EXISTS `steady_checksquare_detail` (
    `id` VARCHAR(64) NOT NULL COMMENT '主键',
    `item_id` VARCHAR(64) NOT NULL COMMENT '检测项ID',
    `detail_type` VARCHAR(32) NOT NULL COMMENT '明细类型：SEGMENT/VALUE_ORDER/HARMONIC_PARITY',
    `stat_type` VARCHAR(16) NULL COMMENT '统计类型',
    `start_time` DATETIME NULL COMMENT '区间开始时间',
    `end_time` DATETIME NULL COMMENT '区间结束时间',
    `point_time` DATETIME NULL COMMENT '异常点时间',
    `segment_status` VARCHAR(16) NULL COMMENT '区间状态：NORMAL/MISSING',
    `missing_point_count` INT NULL COMMENT '缺失点数',
    `duration_minutes` INT NULL COMMENT '持续时长，单位分钟',
    `phase` VARCHAR(16) NULL COMMENT '相别',
    `harmonic_order` INT NULL COMMENT '谐波次数',
    `max_value` DECIMAL(24,8) NULL COMMENT '最大值',
    `min_value` DECIMAL(24,8) NULL COMMENT '最小值',
    `avg_value` DECIMAL(24,8) NULL COMMENT '平均值',
    `cp95_value` DECIMAL(24,8) NULL COMMENT 'CP95值',
    `even_harmonic_order` INT NULL COMMENT '偶次谐波次数',
    `even_value` DECIMAL(24,8) NULL COMMENT '偶次谐波值',
    `odd_harmonic_orders_json` JSON NULL COMMENT '参与比较的奇次谐波次数',
    `odd_values_json` JSON NULL COMMENT '参与比较的奇次谐波值',
    `odd_median_value` DECIMAL(24,8) NULL COMMENT '奇次谐波中位数',
    `threshold_multiplier` DECIMAL(12,6) NULL COMMENT '异常阈值倍数',
    `create_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    PRIMARY KEY (`id`),
    KEY `idx_steady_checksquare_detail_item_type` (`item_id`, `detail_type`),
    KEY `idx_steady_checksquare_detail_point_time` (`point_time`),
    KEY `idx_steady_checksquare_detail_segment` (`start_time`, `end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='稳态数据校验明细表';
