This commit is contained in:
2026-08-20 15:58:25 +08:00
parent cd34cd426e
commit 2847ad1b2d
45 changed files with 921 additions and 68 deletions
+67
View File
@@ -3577,3 +3577,70 @@ SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.statistics
'SELECT 1',
'ALTER TABLE ll_inbound_plan ADD UNIQUE KEY uk_ll_inbound_plan_source_order (customer_id,source_order_id)'));
PREPARE ll_inbound_plan_source_order_unique_027 FROM @ddl; EXECUTE ll_inbound_plan_source_order_unique_027; DEALLOCATE PREPARE ll_inbound_plan_source_order_unique_027;
-- ============================================================================
-- 2026-08-20 / 028
-- Overseas PDA unload photos and container empty-return event outbox.
-- ============================================================================
USE baiyue_lastleg;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_pda_task' AND column_name='unload_photo_file_ids'), 'SELECT 1', 'ALTER TABLE ll_inbound_pda_task ADD COLUMN unload_photo_file_ids JSON NULL COMMENT ''卸柜照片文件ID列表'' AFTER completed_at'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_pda_task' AND column_name='unload_photo_uploaded_at'), 'SELECT 1', 'ALTER TABLE ll_inbound_pda_task ADD COLUMN unload_photo_uploaded_at DATETIME(3) NULL COMMENT ''卸柜照片上传成功时间'' AFTER unload_photo_file_ids'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_inbound_pda_task' AND column_name='estimated_empty_return_at'), 'SELECT 1', 'ALTER TABLE ll_inbound_pda_task ADD COLUMN estimated_empty_return_at DATETIME(3) NULL COMMENT ''预计报空时间(卸柜照片上传成功后两天)'' AFTER unload_photo_uploaded_at'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
CREATE TABLE IF NOT EXISTS ll_event_outbox (
id BIGINT NOT NULL COMMENT '事件主键ID', customer_id VARCHAR(128) NOT NULL COMMENT '客户租户ID',
aggregate_type VARCHAR(64) NOT NULL COMMENT '聚合类型', aggregate_id VARCHAR(128) NOT NULL COMMENT '聚合标识',
event_type VARCHAR(64) NOT NULL COMMENT '事件类型', event_version INT NOT NULL COMMENT '事件版本',
event_key VARCHAR(255) NOT NULL COMMENT '业务幂等键', payload_json LONGTEXT NOT NULL COMMENT '事件载荷JSON',
status VARCHAR(32) NOT NULL DEFAULT 'PENDING' COMMENT '发布状态', retry_count INT NOT NULL DEFAULT 0 COMMENT '重试次数',
next_retry_at DATETIME(3) NULL COMMENT '下次重试时间', published_at DATETIME(3) NULL COMMENT '发布时间',
last_error VARCHAR(1000) NULL COMMENT '最后一次发布错误', locked_by VARCHAR(128) NULL COMMENT '当前投递租约持有者',
locked_at DATETIME(3) NULL COMMENT '当前投递租约获取时间', created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
PRIMARY KEY (id), UNIQUE KEY uk_ll_event_outbox_key (event_key), KEY idx_ll_event_outbox_publish (status,next_retry_at,created_at)
) ENGINE=InnoDB COMMENT='尾程跨区业务事件发件箱';
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema=DATABASE() AND table_name='ll_event_outbox'), 'ALTER TABLE ll_event_outbox COMMENT=''尾程跨区业务事件发件箱''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='id'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN id BIGINT NOT NULL COMMENT ''事件主键ID''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='customer_id'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN customer_id VARCHAR(128) NOT NULL COMMENT ''客户租户ID''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='aggregate_type'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN aggregate_type VARCHAR(64) NOT NULL COMMENT ''聚合类型''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='aggregate_id'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN aggregate_id VARCHAR(128) NOT NULL COMMENT ''聚合标识''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='event_type'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN event_type VARCHAR(64) NOT NULL COMMENT ''事件类型''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='event_version'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN event_version INT NOT NULL COMMENT ''事件版本''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='event_key'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN event_key VARCHAR(255) NOT NULL COMMENT ''业务幂等键''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='payload_json'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN payload_json LONGTEXT NOT NULL COMMENT ''事件载荷JSON''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='status'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN status VARCHAR(32) NOT NULL DEFAULT ''PENDING'' COMMENT ''发布状态''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='retry_count'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN retry_count INT NOT NULL DEFAULT 0 COMMENT ''重试次数''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='next_retry_at'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN next_retry_at DATETIME(3) NULL COMMENT ''下次重试时间''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='published_at'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN published_at DATETIME(3) NULL COMMENT ''发布时间''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='last_error'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN last_error VARCHAR(1000) NULL COMMENT ''最后一次发布错误''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='created_at'), 'ALTER TABLE ll_event_outbox MODIFY COLUMN created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT ''创建时间''', 'SELECT 1'));
PREPARE lastleg_unload_028 FROM @ddl; EXECUTE lastleg_unload_028; DEALLOCATE PREPARE lastleg_unload_028;
-- ============================================================================
-- 2026-08-20 / 029
-- Reliable lease for the overseas container-unload event relay.
-- ============================================================================
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='locked_by'), 'SELECT 1', 'ALTER TABLE ll_event_outbox ADD COLUMN locked_by VARCHAR(128) NULL COMMENT ''当前投递租约持有者'' AFTER last_error'));
PREPARE lastleg_unload_relay_029 FROM @ddl; EXECUTE lastleg_unload_relay_029; DEALLOCATE PREPARE lastleg_unload_relay_029;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='locked_at'), 'SELECT 1', 'ALTER TABLE ll_event_outbox ADD COLUMN locked_at DATETIME(3) NULL COMMENT ''当前投递租约获取时间'' AFTER locked_by'));
PREPARE lastleg_unload_relay_029 FROM @ddl; EXECUTE lastleg_unload_relay_029; DEALLOCATE PREPARE lastleg_unload_relay_029;