实现七月迭代公共技术基础
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s

This commit is contained in:
2026-07-23 17:52:48 +09:00
parent f7c42252c0
commit 17782d5f8e
76 changed files with 5246 additions and 158 deletions

View File

@@ -0,0 +1,44 @@
-- 创建公共 Outbox该表及全部公共索引、约束只由 tech-public-foundation 维护。
CREATE TABLE tb_outbox_event (
id bigserial PRIMARY KEY,
event_id varchar(64) NOT NULL,
event_type varchar(150) NOT NULL,
payload_version integer NOT NULL DEFAULT 1,
aggregate_type varchar(100) NOT NULL,
aggregate_id varchar(100) NOT NULL,
resource_type varchar(100) NOT NULL,
resource_id varchar(100) NOT NULL,
business_key varchar(150) NOT NULL DEFAULT '',
request_id varchar(100) NOT NULL DEFAULT '',
correlation_id varchar(100) NOT NULL DEFAULT '',
payload jsonb NOT NULL,
status integer NOT NULL DEFAULT 1,
retry_count integer NOT NULL DEFAULT 0,
max_retries integer NOT NULL DEFAULT 10,
next_attempt_at timestamptz NOT NULL DEFAULT NOW(),
lease_owner varchar(100),
lease_expires_at timestamptz,
last_error_code varchar(100) NOT NULL DEFAULT '',
last_error_summary varchar(500) NOT NULL DEFAULT '',
delivered_at timestamptz,
created_at timestamptz NOT NULL DEFAULT NOW(),
updated_at timestamptz NOT NULL DEFAULT NOW(),
CONSTRAINT uq_outbox_event_id UNIQUE (event_id),
CONSTRAINT ck_outbox_event_status CHECK (status IN (1, 2, 3, 4)),
CONSTRAINT ck_outbox_event_payload_version CHECK (payload_version > 0),
CONSTRAINT ck_outbox_event_retry_count CHECK (retry_count >= 0 AND max_retries > 0)
);
CREATE INDEX idx_outbox_event_claim
ON tb_outbox_event (status, next_attempt_at, lease_expires_at, created_at);
CREATE INDEX idx_outbox_event_type_status
ON tb_outbox_event (event_type, status);
CREATE INDEX idx_outbox_event_aggregate
ON tb_outbox_event (aggregate_type, aggregate_id, created_at);
CREATE INDEX idx_outbox_event_resource
ON tb_outbox_event (resource_type, resource_id, created_at);
CREATE INDEX idx_outbox_event_request_id ON tb_outbox_event (request_id) WHERE request_id <> '';
CREATE INDEX idx_outbox_event_correlation_id ON tb_outbox_event (correlation_id) WHERE correlation_id <> '';
COMMENT ON TABLE tb_outbox_event IS '公共可靠事件 Outbox';
COMMENT ON COLUMN tb_outbox_event.status IS '投递状态 1=待投递, 2=投递中, 3=已投递, 4=投递失败';