2026-08-05 14:20:04 +08:00
|
|
|
USE baiyue_firstleg;
|
|
|
|
|
|
|
|
|
|
-- 可靠审计本地 Outbox;与头程业务表位于同一数据库。
|
|
|
|
|
CREATE TABLE IF NOT EXISTS sys_audit_outbox (
|
2026-08-11 18:06:26 +08:00
|
|
|
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 '记录最后更新时间',
|
2026-08-05 14:20:04 +08:00
|
|
|
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='可靠审计事件本地发送箱';
|