-- 第一批持久化能力:三张业务表。已安装旧五表版本时,建表后另执行 20261014_flow_merge_tables.sql。 -- 升级前备份并停写,先执行 DDL 再部署应用;不自动迁移运行中的任务。 CREATE TABLE IF NOT EXISTS flow_draft ( id varchar(36) NOT NULL, tenant_id bigint NOT NULL, user_id bigint NOT NULL, kind varchar(16) NOT NULL, flow_id varchar(64) NOT NULL DEFAULT '', title varchar(200) NOT NULL, payload longtext NOT NULL, revision bigint NOT NULL, updated_at timestamp(3) NOT NULL, PRIMARY KEY(id), KEY idx_draft_owner(tenant_id,user_id,kind,updated_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS flow_notice ( id varchar(36) NOT NULL, tenant_id bigint NOT NULL, user_id varchar(64) NOT NULL, event_key varchar(180) NOT NULL, kind varchar(16) NOT NULL, title varchar(200) NOT NULL, task_id varchar(64) NOT NULL, instance_id varchar(64) NOT NULL, created_at timestamp(3) NOT NULL, read_at timestamp(3) NULL, status varchar(16) NOT NULL DEFAULT 'SENT', scheduled_at timestamp(3) NULL, sent_at timestamp(3) NULL, reminder_key varchar(64) NULL, PRIMARY KEY(id), UNIQUE KEY uk_notice_event(tenant_id,user_id,event_key), KEY idx_notice_owner(tenant_id,user_id,created_at), UNIQUE KEY uk_notice_reminder(tenant_id,reminder_key), KEY idx_notice_due(status,scheduled_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS flow_callback ( id varchar(36) NOT NULL, tenant_id bigint NOT NULL, task_id varchar(64) NOT NULL, instance_id varchar(64) NOT NULL, target_url varchar(2000) NOT NULL, payload longtext NOT NULL, status varchar(16) NOT NULL, attempts int NOT NULL DEFAULT 0, max_attempts int NOT NULL DEFAULT 5, next_at timestamp(3) NOT NULL, history longtext NULL, lease_token varchar(36) NULL, lease_until timestamp(3) NULL, last_error varchar(500) NULL, created_at timestamp(3) NOT NULL, updated_at timestamp(3) NOT NULL, PRIMARY KEY(id), UNIQUE KEY uk_callback_task(tenant_id,task_id), KEY idx_callback_due(status,next_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;