CREATE TABLE IF NOT EXISTS `task_center_event_dedup` (
  `id` bigint NOT NULL COMMENT '主键ID',
  `sys_origin` varchar(32) NOT NULL COMMENT '来源系统',
  `event_id` varchar(128) NOT NULL COMMENT '业务事件ID',
  `event_type` varchar(64) NOT NULL COMMENT '事件类型',
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `status` varchar(32) NOT NULL COMMENT '处理状态',
  `failure_reason` varchar(512) NOT NULL DEFAULT '' COMMENT '失败原因',
  `create_time` datetime(3) DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime(3) DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_task_center_event_dedup` (`sys_origin`, `event_id`),
  KEY `idx_task_center_event_dedup_status` (`status`),
  KEY `idx_task_center_event_dedup_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务中心事件幂等表';

CREATE TABLE IF NOT EXISTS `task_center_event_archive_outbox` (
  `id` bigint NOT NULL COMMENT '主键ID',
  `sys_origin` varchar(32) NOT NULL COMMENT '来源系统',
  `event_id` varchar(128) NOT NULL COMMENT '业务事件ID',
  `event_type` varchar(64) NOT NULL COMMENT '事件类型',
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `occurred_at` datetime(3) DEFAULT NULL COMMENT '业务发生时间',
  `raw_json` text NOT NULL COMMENT '待归档原始事件JSON',
  `status` varchar(32) NOT NULL DEFAULT 'PENDING' COMMENT '归档状态',
  `retry_count` int NOT NULL DEFAULT '0' COMMENT '重试次数',
  `cos_key` varchar(512) NOT NULL DEFAULT '' COMMENT 'COS对象Key',
  `failure_reason` varchar(512) NOT NULL DEFAULT '' COMMENT '失败原因',
  `create_time` datetime(3) DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime(3) DEFAULT NULL COMMENT '更新时间',
  `archived_at` datetime(3) DEFAULT NULL COMMENT '归档完成时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_task_center_archive_event` (`sys_origin`, `event_id`),
  KEY `idx_task_center_archive_status_time` (`status`, `create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务中心事件COS归档Outbox';
