CREATE TABLE IF NOT EXISTS action_results (
  id BIGINT  NOT NULL AUTO_INCREMENT COMMENT '主键',
  table_id BIGINT NOT NULL COMMENT '表ID',
  version_ts BIGINT NOT NULL COMMENT '版本时间戳（版本号）',
  action_type ENUM('ge_profiling','ge_result_desc','snippet','snippet_alias') NOT NULL COMMENT '动作类型',

  status ENUM('pending','running','success','failed','partial') NOT NULL DEFAULT 'pending' COMMENT '执行状态',
  error_code VARCHAR(128) NULL,
  error_message TEXT NULL,

  -- 回调 & 观测
  callback_url VARCHAR(1024) NOT NULL,
  started_at DATETIME NULL,
  finished_at DATETIME NULL,
  duration_ms INT  NULL,

  -- 本次schema信息
  table_schema_version_id BIGINT NOT NULL,
  table_schema JSON NOT NULL,

  -- ===== 动作1：GE Profiling =====
  ge_profiling_full JSON NULL COMMENT 'Profiling完整结果JSON',
  ge_profiling_full_size_bytes BIGINT  NULL,
  ge_profiling_summary JSON NULL COMMENT 'Profiling摘要（剔除大value_set等）',
  ge_profiling_summary_size_bytes BIGINT  NULL,
  ge_profiling_total_size_bytes BIGINT  NULL COMMENT '上两者合计',
  ge_profiling_html_report_url VARCHAR(1024) NULL COMMENT 'GE报告HTML路径/URL',

  -- ===== 动作2：GE Result Desc =====
  ge_result_desc_full JSON NULL COMMENT '表描述结果JSON',
  ge_result_desc_full_size_bytes BIGINT  NULL,

  -- ===== 动作3：Snippet 生成 =====
  snippet_full JSON NULL COMMENT 'SQL知识片段结果JSON',
  snippet_full_size_bytes BIGINT  NULL,

  -- ===== 动作4：Snippet Alias 改写 =====
  snippet_alias_full JSON NULL COMMENT 'SQL片段改写/丰富结果JSON',
  snippet_alias_full_size_bytes BIGINT  NULL,

  -- 通用可选指标
  result_checksum VARBINARY(32) NULL COMMENT '对当前action有效载荷计算的MD5/xxhash',
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  PRIMARY KEY (id),
  UNIQUE KEY uq_table_ver_action (table_id, version_ts, action_type),
  KEY idx_status (status),
  KEY idx_table (table_id, updated_at),
  KEY idx_action_time (action_type, version_ts),
  KEY idx_schema_version (table_schema_version_id)
) ENGINE=InnoDB
  ROW_FORMAT=DYNAMIC
  COMMENT='数据分析知识片段表';
