fix carrier history action schema upgrade

This commit is contained in:
2026-08-24 11:36:25 +08:00
parent 287591c75f
commit 044678f65c
3 changed files with 48 additions and 0 deletions
@@ -10428,6 +10428,26 @@ CREATE TABLE IF NOT EXISTS fl_carrier_schedule_query_operation (
CONSTRAINT chk_carrier_schedule_operation_status CHECK (status IN ('PROCESSING','SUCCESS'))
) ENGINE=InnoDB COMMENT='船司查询写操作幂等与请求摘要';
-- CREATE TABLE IF NOT EXISTS 不会更新已有表的 CHECK。历史开发库仍可能只允许
-- CREATE/ATTEMPT/MANUAL_RESULT,必须在人工节点和自动节点写入前收敛为当前动作集。
DROP PROCEDURE IF EXISTS migrate_carrier_schedule_history_action_check;
DELIMITER $$
CREATE PROCEDURE migrate_carrier_schedule_history_action_check()
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.table_constraints
WHERE constraint_schema=DATABASE() AND table_name='fl_carrier_schedule_query_history'
AND constraint_name='chk_carrier_schedule_history_action' AND constraint_type='CHECK') THEN
ALTER TABLE fl_carrier_schedule_query_history DROP CHECK chk_carrier_schedule_history_action;
END IF;
ALTER TABLE fl_carrier_schedule_query_history
ADD CONSTRAINT chk_carrier_schedule_history_action CHECK
(action IN ('CREATE','AUTO_CREATE','MANUAL_RESULT','MANUAL_NODE','NODE_OBSERVED',
'EXCEPTION_OBSERVED','PROVIDER_QUERY','STOP'));
END$$
DELIMITER ;
CALL migrate_carrier_schedule_history_action_check();
DROP PROCEDURE IF EXISTS migrate_carrier_schedule_history_action_check;
DROP TRIGGER IF EXISTS trg_carrier_schedule_query_before_insert;
DELIMITER $$
CREATE TRIGGER trg_carrier_schedule_query_before_insert BEFORE INSERT ON fl_carrier_schedule_query FOR EACH ROW
@@ -181,6 +181,26 @@ CREATE TABLE IF NOT EXISTS fl_carrier_schedule_query_operation (
CONSTRAINT chk_carrier_schedule_operation_status CHECK (status IN ('PROCESSING','SUCCESS'))
) ENGINE=InnoDB COMMENT='船司查询写操作幂等与请求摘要';
-- CREATE TABLE IF NOT EXISTS 不会更新已有表的 CHECK。历史开发库仍可能只允许
-- CREATE/ATTEMPT/MANUAL_RESULT,必须在人工节点和自动节点写入前收敛为当前动作集。
DROP PROCEDURE IF EXISTS migrate_carrier_schedule_history_action_check;
DELIMITER $$
CREATE PROCEDURE migrate_carrier_schedule_history_action_check()
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.table_constraints
WHERE constraint_schema=DATABASE() AND table_name='fl_carrier_schedule_query_history'
AND constraint_name='chk_carrier_schedule_history_action' AND constraint_type='CHECK') THEN
ALTER TABLE fl_carrier_schedule_query_history DROP CHECK chk_carrier_schedule_history_action;
END IF;
ALTER TABLE fl_carrier_schedule_query_history
ADD CONSTRAINT chk_carrier_schedule_history_action CHECK
(action IN ('CREATE','AUTO_CREATE','MANUAL_RESULT','MANUAL_NODE','NODE_OBSERVED',
'EXCEPTION_OBSERVED','PROVIDER_QUERY','STOP'));
END$$
DELIMITER ;
CALL migrate_carrier_schedule_history_action_check();
DROP PROCEDURE IF EXISTS migrate_carrier_schedule_history_action_check;
DROP TRIGGER IF EXISTS trg_carrier_schedule_query_before_insert;
DELIMITER $$
CREATE TRIGGER trg_carrier_schedule_query_before_insert BEFORE INSERT ON fl_carrier_schedule_query FOR EACH ROW
@@ -34,6 +34,10 @@ class CarrierScheduleQuerySqlContractTest {
.contains("DISCHARGED_FROM_VESSEL")
.contains("PICKED_UP','EMPTY_RETURNED")
.contains("CUSTOMS_HOLD','TERMINAL_HOLD','DOCUMENT_HOLD','UNKNOWN_HOLD")
.contains("CREATE PROCEDURE migrate_carrier_schedule_history_action_check()")
.contains("DROP CHECK chk_carrier_schedule_history_action")
.contains("'MANUAL_NODE','NODE_OBSERVED'")
.contains("'EXCEPTION_OBSERVED','PROVIDER_QUERY','STOP'")
.contains("provider_event_id")
.contains("'PUBLIC_FORM','PUBLIC_WEB_PROXY','PUBLIC_HTML','HCAPTCHA','OFFICIAL_API'")
.contains("lease_owner")
@@ -86,6 +90,10 @@ class CarrierScheduleQuerySqlContractTest {
.contains("SET @carrier_schedule_now = CONVERT_TZ(UTC_TIMESTAMP(3),'+00:00','+08:00')")
.contains("SET @carrier_schedule_next = CASE")
.contains("CREATE PROCEDURE ensure_carrier_schedule_retry_check()")
.contains("CREATE PROCEDURE migrate_carrier_schedule_history_action_check()")
.contains("DROP CHECK chk_carrier_schedule_history_action")
.contains("'MANUAL_NODE','NODE_OBSERVED'")
.contains("'EXCEPTION_OBSERVED','PROVIDER_QUERY','STOP'")
.contains("ADD CONSTRAINT chk_carrier_schedule_query_attempt CHECK (attempt_count BETWEEN 0 AND 3)")
.contains("统一迁移失败:船司查询固定槽位字段、索引或尝试次数约束不完整")
.doesNotContain("DROP CHECK chk_carrier_schedule_query_attempt")