USE baiyue_auth; -- 可靠审计本地 Outbox;与认证业务表位于同一数据库。 CREATE TABLE IF NOT EXISTS sys_audit_outbox ( event_id VARCHAR(64) NOT NULL COMMENT '审计事件全局唯一ID', event_type VARCHAR(64) NOT NULL COMMENT '审计事件类型', resource_type VARCHAR(64) NOT NULL COMMENT '资源类型', resource_id VARCHAR(128) NULL COMMENT '资源ID', service_name VARCHAR(64) NULL COMMENT '来源服务', payload_json JSON NOT NULL COMMENT '脱敏后的审计事件', status VARCHAR(16) NOT NULL DEFAULT 'PENDING' COMMENT '发送状态:PENDING待发送、SENDING发送中、SENT已发送、DEAD进入死信', attempt_count INT NOT NULL DEFAULT 0 COMMENT '当前周期发送次数', compensation_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 VARCHAR(1000) NULL COMMENT '最近一次发送错误信息', dead_at DATETIME(3) NULL COMMENT '进入死信时间', sent_at DATETIME(3) NULL 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 '记录更新时间', PRIMARY KEY (event_id), KEY idx_audit_outbox_publish (status, next_retry_at, lease_until, created_at), KEY idx_audit_outbox_retention (status, sent_at) ) ENGINE=InnoDB COMMENT='可靠审计事件本地发送箱';