SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;


-- 使用 utf8mb4 连接字符集，保证中文注释、中文名称和 emoji 在导入时不被降级。
CREATE DATABASE IF NOT EXISTS hyapp_cron DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE hyapp_cron;

CREATE TABLE IF NOT EXISTS cron_task_leases (
  task_name VARCHAR(96) NOT NULL COMMENT '任务名称',
  app_code VARCHAR(32) NOT NULL COMMENT '应用编码，用于多租户隔离',
  owner_node_id VARCHAR(128) NOT NULL COMMENT '房主节点 ID',
  lease_until_ms BIGINT NOT NULL COMMENT '租约截止时间，UTC epoch ms',
  updated_at_ms BIGINT NOT NULL COMMENT '更新时间，UTC epoch ms',
  PRIMARY KEY (task_name, app_code),
  KEY idx_cron_task_leases_expire (lease_until_ms)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='定时任务租约表';

CREATE TABLE IF NOT EXISTS cron_task_runs (
  run_id VARCHAR(96) NOT NULL COMMENT '运行 ID',
  task_name VARCHAR(96) NOT NULL COMMENT '任务名称',
  app_code VARCHAR(32) NOT NULL COMMENT '应用编码，用于多租户隔离',
  owner_node_id VARCHAR(128) NOT NULL COMMENT '房主节点 ID',
  status VARCHAR(32) NOT NULL COMMENT '业务状态',
  claimed_count INT NOT NULL DEFAULT 0 COMMENT '认领数量',
  processed_count INT NOT NULL DEFAULT 0 COMMENT '处理数量',
  success_count INT NOT NULL DEFAULT 0 COMMENT '成功数量',
  failure_count INT NOT NULL DEFAULT 0 COMMENT '失败数量',
  started_at_ms BIGINT NOT NULL COMMENT '开始时间，UTC epoch ms',
  finished_at_ms BIGINT NULL COMMENT '结束时间，UTC epoch ms',
  duration_ms BIGINT NOT NULL DEFAULT 0 COMMENT '持续时长，毫秒',
  error_message VARCHAR(512) NOT NULL DEFAULT '' COMMENT '错误消息',
  PRIMARY KEY (run_id),
  KEY idx_cron_task_runs_task_time (task_name, app_code, started_at_ms),
  KEY idx_cron_task_runs_status (status, started_at_ms)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='定时任务运行记录表';

