-- ====================================================
-- 定时任务表
-- ====================================================
DROP TABLE IF EXISTS `tb_crontab_task`;
CREATE TABLE `tb_crontab_task` (
    `id` VARCHAR(64) NOT NULL COMMENT '主键ID',
    `task_id` VARCHAR(64) NOT NULL COMMENT '任务ID',
    `task_name` VARCHAR(100) NOT NULL COMMENT '任务名称',
    `task_group` VARCHAR(50) NOT NULL DEFAULT 'DEFAULT' COMMENT '任务分组',
    `bean_name` VARCHAR(100) NOT NULL COMMENT 'Bean名称',
    `method_name` VARCHAR(100) NOT NULL COMMENT '方法名称',
    `method_params` VARCHAR(500) DEFAULT NULL COMMENT '方法参数',
    `cron_expression` VARCHAR(100) NOT NULL COMMENT 'Cron表达式',
    `status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '任务状态（0:暂停 1:运行中）',
    `description` VARCHAR(500) DEFAULT NULL COMMENT '任务描述',
    `concurrent` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否允许并发执行（0:否 1:是）',
    `misfire_policy` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '错过执行策略（1:立即执行 2:执行一次 3:放弃执行）',
    `creator` VARCHAR(64) DEFAULT NULL COMMENT '创建者',
    `updater` VARCHAR(64) DEFAULT NULL COMMENT '更新者',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `delete_time` DATETIME DEFAULT NULL COMMENT '删除时间',
    `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除（0:否 1:是）',
    PRIMARY KEY (`id`),
    KEY `idx_task_name` (`task_name`),
    KEY `idx_bean_name` (`bean_name`),
    KEY `idx_status` (`status`),
    KEY `idx_deleted` (`deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='定时任务配置表';

-- ====================================================
-- 定时任务执行日志表
-- ====================================================
DROP TABLE IF EXISTS `tb_crontab_log`;
CREATE TABLE `tb_crontab_log` (
    `id` VARCHAR(64) NOT NULL COMMENT '主键ID',
    `task_id` VARCHAR(64) NOT NULL COMMENT '任务ID',
    `task_name` VARCHAR(100) NOT NULL COMMENT '任务名称',
    `task_group` VARCHAR(50) NOT NULL DEFAULT 'DEFAULT' COMMENT '任务分组',
    `bean_name` VARCHAR(100) NOT NULL COMMENT 'Bean名称',
    `method_name` VARCHAR(100) NOT NULL COMMENT '方法名称',
    `method_params` VARCHAR(500) DEFAULT NULL COMMENT '方法参数',
    `execute_status` TINYINT(1) NOT NULL COMMENT '执行状态（0:失败 1:成功）',
    `execute_message` TEXT DEFAULT NULL COMMENT '执行结果信息',
    `exception_info` TEXT DEFAULT NULL COMMENT '异常信息',
    `start_time` DATETIME NOT NULL COMMENT '开始时间',
    `end_time` DATETIME DEFAULT NULL COMMENT '结束时间',
    `execute_duration` INT DEFAULT NULL COMMENT '执行时长（毫秒）',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `delete_time` DATETIME DEFAULT NULL COMMENT '删除时间',
    `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除（0:否 1:是）',
    PRIMARY KEY (`id`),
    KEY `idx_task_id` (`task_id`),
    KEY `idx_task_name` (`task_name`),
    KEY `idx_execute_status` (`execute_status`),
    KEY `idx_start_time` (`start_time`),
    KEY `idx_deleted` (`deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='定时任务执行日志表';

-- ====================================================
-- 数据采集项表（定时任务采集结果存储）
-- ====================================================
DROP TABLE IF EXISTS `tb_data_collection_item`;
CREATE TABLE `tb_data_collection_item` (
    `id` VARCHAR(64) NOT NULL COMMENT '主键ID',
    `task_id` VARCHAR(64) NOT NULL COMMENT '关联任务ID',
    `log_id` VARCHAR(64) NOT NULL COMMENT '关联执行日志ID',
    `title` VARCHAR(255) NOT NULL COMMENT '文章标题',
    `content` LONGTEXT DEFAULT NULL COMMENT '文章内容（HTML）',
    `summary` VARCHAR(500) DEFAULT NULL COMMENT '文章摘要',
    `source` VARCHAR(255) DEFAULT NULL COMMENT '来源（如 人民日报）',
    `source_url` VARCHAR(500) DEFAULT NULL COMMENT '来源URL（用于去重）',
    `category` VARCHAR(100) DEFAULT NULL COMMENT '分类（politics/society等）',
    `author` VARCHAR(100) DEFAULT NULL COMMENT '作者',
    `publish_time` DATETIME DEFAULT NULL COMMENT '发布时间',
    `cover_image` VARCHAR(500) DEFAULT NULL COMMENT '封面图片URL',
    `images` TEXT DEFAULT NULL COMMENT '图片列表（JSON）',
    `tags` VARCHAR(500) DEFAULT NULL COMMENT '标签（逗号分隔）',
    `status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '状态（0未处理 1已转换为资源 2已忽略）',
    `resource_id` VARCHAR(64) DEFAULT NULL COMMENT '转换后的资源ID',
    `crawl_time` DATETIME DEFAULT NULL COMMENT '爬取时间',
    `process_time` DATETIME DEFAULT NULL COMMENT '处理时间',
    `processor` VARCHAR(64) DEFAULT NULL COMMENT '处理人',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `delete_time` DATETIME DEFAULT NULL COMMENT '删除时间',
    `deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除（0:否 1:是）',
    PRIMARY KEY (`id`),
    KEY `idx_task_id` (`task_id`),
    KEY `idx_log_id` (`log_id`),
    KEY `idx_status` (`status`),
    KEY `idx_publish_time` (`publish_time`),
    KEY `idx_source_url` (`source_url`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='数据采集项表';