Files
baiyue-firstleg/iam/src/main/resources/db/customer-dimension-initialization-task.sql
T

34 lines
2.4 KiB
SQL
Raw Normal View History

2026-08-25 15:08:34 +08:00
SET NAMES utf8mb4;
USE baiyue_iam;
SET @customer_dimension_status_ddl = (SELECT IF(
EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE()
AND table_name='iam_tenant' AND column_name='dimension_initialization_status'),
'SELECT 1',
'ALTER TABLE iam_tenant ADD COLUMN dimension_initialization_status VARCHAR(16) NOT NULL DEFAULT ''READY'' COMMENT ''默认尺寸初始化状态:PENDING待处理、READY已就绪、FAILED失败'' AFTER status'));
PREPARE customer_dimension_status_stmt FROM @customer_dimension_status_ddl;
EXECUTE customer_dimension_status_stmt;
DEALLOCATE PREPARE customer_dimension_status_stmt;
CREATE TABLE IF NOT EXISTS iam_customer_dimension_initialization_task (
tenant_id BIGINT NOT NULL COMMENT '客户ID及任务聚合ID',
operator_id BIGINT NOT NULL COMMENT '触发初始化的操作人ID;系统补偿为0',
initialization_key VARCHAR(128) NOT NULL COMMENT '稳定初始化幂等键:iam-customer-create:{tenantId}',
action VARCHAR(16) NOT NULL DEFAULT 'INITIALIZE' COMMENT '目标动作:INITIALIZE初始化、COMPENSATE补偿',
status VARCHAR(16) NOT NULL DEFAULT 'PENDING' COMMENT '投递状态:PENDING待投递、SENDING投递中、READY已就绪、FAILED失败、CANCELLED已补偿',
attempt_count INT NOT NULL DEFAULT 0 COMMENT '当前动作已失败尝试次数',
next_retry_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '下次允许投递时间',
lease_owner VARCHAR(128) NULL COMMENT '当前任务租约持有者',
lease_until DATETIME(3) NULL COMMENT '当前任务租约截止时间',
last_error_code VARCHAR(32) NULL COMMENT '最后下游错误码',
last_error_message VARCHAR(1000) NULL COMMENT '最后诊断错误,不保存敏感凭证',
remote_config_id BIGINT NULL COMMENT 'Firstleg返回的首条默认尺寸配置ID',
task_version INT NOT NULL DEFAULT 0 COMMENT '任务乐观版本;切换动作或认领时递增',
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '任务创建时间',
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '任务更新时间',
completed_at DATETIME(3) NULL COMMENT 'READY或CANCELLED完成时间',
PRIMARY KEY (tenant_id),
KEY idx_customer_dimension_task_dispatch (status,next_retry_at,lease_until),
KEY idx_customer_dimension_task_diagnosis (status,updated_at)
) ENGINE=InnoDB COMMENT='IAM客户默认尺寸可靠后台初始化任务及诊断状态';