优化
This commit is contained in:
@@ -58,6 +58,8 @@
|
||||
|
||||
在 Navicat、DataGrip 或 MySQL 命令行中以“运行脚本”方式完整执行,确保客户端支持 `DELIMITER`。不要只选中局部语句执行。
|
||||
|
||||
执行前先重新连接目标数据库,开启客户端 keepalive,并关闭“遇错继续执行”;出现连接断开、语法错误或 `SQLSTATE 45000` 后不得从失败位置续跑。由于 DDL 会隐式提交,存量环境可能已经部分更新;修复失败原因后应使用同一固定入口从第一行完整重跑,依靠脚本的元数据判断和幂等写入收敛结构。若出现 MySQL `4031`,先处理客户端连接保活或由数据库管理员调整 `wait_timeout` / `interactive_timeout`,再重新连接执行。
|
||||
|
||||
执行结束后必须看到 `migration_status = PASS`。如果中途出现 `SQLSTATE 45000`,必须按错误中给出的缺失表、字段或权限处理后重新完整执行。
|
||||
|
||||
## 三期分柜、预装、拣货与装柜当前基线
|
||||
|
||||
+166
-45
@@ -10115,7 +10115,7 @@ BEGIN
|
||||
OR (SELECT COUNT(*) FROM baiyue_iam.iam_permission WHERE tenant_id=0 AND app_code='PLATFORM'
|
||||
AND id BETWEEN 5102170 AND 5102175 AND permission_code LIKE 'platform:firstleg:customs:%') <> 6
|
||||
OR (SELECT COUNT(*) FROM baiyue_iam.iam_permission WHERE tenant_id=0 AND app_code='PLATFORM'
|
||||
AND id BETWEEN 5102180 AND 5102183 AND permission_code LIKE 'platform:firstleg:port-schedule:%') <> 4 THEN
|
||||
AND id BETWEEN 5102180 AND 5102183 AND permission_code LIKE 'platform:firstleg:port-schedule:%') <> 3 THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='统一迁移失败:三期出仓、报关或船期权限未完整写入';
|
||||
END IF;
|
||||
IF (SELECT COUNT(*) FROM baiyue_iam.iam_permission WHERE tenant_id=0 AND app_code='PLATFORM'
|
||||
@@ -10130,7 +10130,7 @@ BEGIN
|
||||
AND (p.permission_code LIKE 'platform:firstleg:outbound-dispatch:%'
|
||||
OR p.permission_code LIKE 'platform:firstleg:customs:%'
|
||||
OR p.permission_code LIKE 'platform:firstleg:port-schedule:%'
|
||||
OR p.permission_code LIKE 'platform:firstleg:pda:%')) <> 38 THEN
|
||||
OR p.permission_code LIKE 'platform:firstleg:pda:%')) <> 36 THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='统一迁移失败:三期出仓、报关或船期角色授权未完整写入';
|
||||
END IF;
|
||||
END$$
|
||||
@@ -10253,10 +10253,10 @@ CREATE TABLE IF NOT EXISTS fl_carrier_schedule_query (
|
||||
stop_reason VARCHAR(500) NULL COMMENT '任务停止原因',
|
||||
lease_owner VARCHAR(64) NULL COMMENT '当前调度租约持有者',
|
||||
lease_until DATETIME(3) NULL COMMENT '当前调度租约过期时间',
|
||||
consecutive_failures INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '连续失败次数诊断值;不改变固定查询槽位',
|
||||
window_started_at DATETIME(3) NOT NULL COMMENT '首次进入自动查询调度的时间',
|
||||
attempt_count INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '累计自动查询调用次数',
|
||||
next_allowed_at DATETIME(3) NULL COMMENT '下一个09:00、12:30或16:00固定查询槽位;停止后为空',
|
||||
consecutive_failures INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '当前正常查询槽位内的连续技术失败次数',
|
||||
window_started_at DATETIME(3) NOT NULL COMMENT '当前正常查询槽位时间',
|
||||
attempt_count INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '当前正常查询槽位已调用次数;最多3次',
|
||||
next_allowed_at DATETIME(3) NULL COMMENT '下一正常槽位或槽内技术退避时间;停止后为空',
|
||||
last_attempt_at DATETIME(3) NULL COMMENT '最近一次查询尝试时间',
|
||||
last_success_at DATETIME(3) NULL COMMENT '最近一次取得有效结果时间',
|
||||
source_updated_at DATETIME(3) NULL COMMENT '船公司官网展示的结果更新时间',
|
||||
@@ -10296,13 +10296,14 @@ CREATE TABLE IF NOT EXISTS fl_carrier_schedule_query (
|
||||
CONSTRAINT chk_carrier_schedule_query_node CHECK
|
||||
(latest_standard_node IS NULL OR latest_standard_node IN
|
||||
('DEPARTED_WAREHOUSE','AT_ORIGIN_PORT','LOADED_ON_VESSEL','DEPARTED_ORIGIN_PORT','IN_TRANSIT',
|
||||
'ARRIVED_DESTINATION_PORT','DISCHARGED_FROM_VESSEL','PICKUP_READY','PICKED_UP','EMPTY_RETURNED'))
|
||||
) ENGINE=InnoDB COMMENT='六家船公司固定时刻自动查询任务';
|
||||
'ARRIVED_DESTINATION_PORT','DISCHARGED_FROM_VESSEL','PICKUP_READY','PICKED_UP','EMPTY_RETURNED')),
|
||||
CONSTRAINT chk_carrier_schedule_query_attempt CHECK (attempt_count BETWEEN 0 AND 3)
|
||||
) ENGINE=InnoDB COMMENT='六家船公司固定槽位与技术退避查询任务';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fl_carrier_schedule_query_attempt (
|
||||
id BIGINT UNSIGNED NOT NULL COMMENT '船司官网查询尝试ID',
|
||||
query_id BIGINT UNSIGNED NOT NULL COMMENT '所属船司官网查询任务ID',
|
||||
window_attempt_no INT UNSIGNED NOT NULL COMMENT '任务累计自动查询调用序号',
|
||||
window_attempt_no INT UNSIGNED NOT NULL COMMENT '当前正常查询槽位内的调用序号;取值1至3',
|
||||
carrier_code VARCHAR(16) NOT NULL COMMENT '本次尝试的船公司编码快照',
|
||||
access_mode VARCHAR(32) NOT NULL COMMENT '本次尝试的官网访问方式快照',
|
||||
official_url VARCHAR(500) NOT NULL COMMENT '本次尝试使用的官网地址快照',
|
||||
@@ -10318,39 +10319,11 @@ CREATE TABLE IF NOT EXISTS fl_carrier_schedule_query_attempt (
|
||||
PRIMARY KEY (id),
|
||||
KEY idx_carrier_schedule_attempt_query (query_id,created_at,id),
|
||||
CONSTRAINT fk_carrier_schedule_attempt_query FOREIGN KEY (query_id) REFERENCES fl_carrier_schedule_query(id),
|
||||
CONSTRAINT chk_carrier_schedule_attempt_no CHECK (window_attempt_no BETWEEN 1 AND 3),
|
||||
CONSTRAINT chk_carrier_schedule_attempt_status CHECK
|
||||
(attempt_status IN ('SUCCESS','NO_CHANGE','RETRYABLE_FAILURE','PERMANENT_FAILURE','MANUAL_REQUIRED'))
|
||||
) ENGINE=InnoDB COMMENT='船司官网查询尝试不可变审计';
|
||||
|
||||
DROP PROCEDURE IF EXISTS migrate_carrier_schedule_fixed_slots;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE migrate_carrier_schedule_fixed_slots()
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM information_schema.table_constraints
|
||||
WHERE constraint_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND constraint_name='chk_carrier_schedule_query_attempt' AND constraint_type='CHECK') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query DROP CHECK chk_carrier_schedule_query_attempt;
|
||||
END IF;
|
||||
IF EXISTS (SELECT 1 FROM information_schema.table_constraints
|
||||
WHERE constraint_schema=DATABASE() AND table_name='fl_carrier_schedule_query_attempt'
|
||||
AND constraint_name='chk_carrier_schedule_attempt_no' AND constraint_type='CHECK') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query_attempt DROP CHECK chk_carrier_schedule_attempt_no;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
CALL migrate_carrier_schedule_fixed_slots();
|
||||
DROP PROCEDURE IF EXISTS migrate_carrier_schedule_fixed_slots;
|
||||
|
||||
SET @carrier_schedule_now = CONVERT_TZ(UTC_TIMESTAMP(3),'+00:00','+08:00');
|
||||
UPDATE fl_carrier_schedule_query
|
||||
SET next_allowed_at = CASE
|
||||
WHEN TIME(@carrier_schedule_now) < '09:00:00' THEN DATE(@carrier_schedule_now) + INTERVAL 9 HOUR
|
||||
WHEN TIME(@carrier_schedule_now) < '12:30:00' THEN DATE(@carrier_schedule_now) + INTERVAL 12 HOUR + INTERVAL 30 MINUTE
|
||||
WHEN TIME(@carrier_schedule_now) < '16:00:00' THEN DATE(@carrier_schedule_now) + INTERVAL 16 HOUR
|
||||
ELSE DATE(@carrier_schedule_now + INTERVAL 1 DAY) + INTERVAL 9 HOUR
|
||||
END
|
||||
WHERE status IN ('READY','MANUAL_REQUIRED');
|
||||
|
||||
CREATE TABLE IF NOT EXISTS fl_carrier_schedule_query_history (
|
||||
id BIGINT UNSIGNED NOT NULL COMMENT '船司查询任务历史ID',
|
||||
query_id BIGINT UNSIGNED NOT NULL COMMENT '所属船司官网查询任务ID',
|
||||
@@ -10568,6 +10541,138 @@ DELIMITER ;
|
||||
CALL assert_carrier_schedule_query_schema();
|
||||
DROP PROCEDURE IF EXISTS assert_carrier_schedule_query_schema;
|
||||
|
||||
DROP PROCEDURE IF EXISTS migrate_carrier_schedule_retry_columns;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE migrate_carrier_schedule_retry_columns()
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND column_name='trigger_source') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD COLUMN trigger_source VARCHAR(32) NOT NULL DEFAULT 'MANUAL'
|
||||
COMMENT '任务触发来源:OUTBOUND_CONFIRM或MANUAL';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND column_name='latest_standard_node') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD COLUMN latest_standard_node VARCHAR(32) NULL COMMENT '最近实际标准船节点;预计事实不推进';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND column_name='latest_node_observed_at') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD COLUMN latest_node_observed_at DATETIME(3) NULL COMMENT '最近实际标准节点发生时间';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND column_name='stopped_at') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD COLUMN stopped_at DATETIME(3) NULL COMMENT '任务停止时间';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND column_name='stop_reason') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD COLUMN stop_reason VARCHAR(500) NULL COMMENT '任务停止原因';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND column_name='lease_owner') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD COLUMN lease_owner VARCHAR(64) NULL COMMENT '当前调度租约持有者';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND column_name='lease_until') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD COLUMN lease_until DATETIME(3) NULL COMMENT '当前调度租约过期时间';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND column_name='consecutive_failures') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD COLUMN consecutive_failures INT UNSIGNED NOT NULL DEFAULT 0
|
||||
COMMENT '当前正常查询槽位内的连续技术失败次数';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND column_name='window_started_at') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD COLUMN window_started_at DATETIME(3) NULL COMMENT '当前正常查询槽位时间';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND column_name='attempt_count') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD COLUMN attempt_count INT UNSIGNED NOT NULL DEFAULT 0
|
||||
COMMENT '当前正常查询槽位已调用次数;最多3次';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND column_name='next_allowed_at') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD COLUMN next_allowed_at DATETIME(3) NULL
|
||||
COMMENT '下一正常槽位或槽内技术退避时间;停止后为空';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.statistics
|
||||
WHERE table_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND index_name='idx_carrier_schedule_query_due') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD KEY idx_carrier_schedule_query_due (status,next_allowed_at,id);
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
CALL migrate_carrier_schedule_retry_columns();
|
||||
DROP PROCEDURE IF EXISTS migrate_carrier_schedule_retry_columns;
|
||||
|
||||
SET @carrier_schedule_now = CONVERT_TZ(UTC_TIMESTAMP(3),'+00:00','+08:00');
|
||||
SET @carrier_schedule_next = CASE
|
||||
WHEN TIME(@carrier_schedule_now) < '09:00:00' THEN DATE(@carrier_schedule_now) + INTERVAL 9 HOUR
|
||||
WHEN TIME(@carrier_schedule_now) < '12:30:00' THEN DATE(@carrier_schedule_now) + INTERVAL 12 HOUR + INTERVAL 30 MINUTE
|
||||
WHEN TIME(@carrier_schedule_now) < '16:00:00' THEN DATE(@carrier_schedule_now) + INTERVAL 16 HOUR
|
||||
ELSE DATE(@carrier_schedule_now + INTERVAL 1 DAY) + INTERVAL 9 HOUR
|
||||
END;
|
||||
UPDATE fl_carrier_schedule_query
|
||||
SET next_allowed_at=@carrier_schedule_next,window_started_at=@carrier_schedule_next,
|
||||
attempt_count=0,consecutive_failures=0,lease_owner=NULL,lease_until=NULL
|
||||
WHERE status IN ('READY','MANUAL_REQUIRED');
|
||||
UPDATE fl_carrier_schedule_query
|
||||
SET next_allowed_at=NULL,
|
||||
window_started_at=COALESCE(window_started_at,@carrier_schedule_next),
|
||||
attempt_count=0,consecutive_failures=0,lease_owner=NULL,lease_until=NULL
|
||||
WHERE status='STOPPED';
|
||||
UPDATE fl_carrier_schedule_query
|
||||
SET window_started_at=COALESCE(window_started_at,@carrier_schedule_next),
|
||||
attempt_count=LEAST(COALESCE(attempt_count,0),3),
|
||||
consecutive_failures=COALESCE(consecutive_failures,0);
|
||||
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
MODIFY COLUMN lease_owner VARCHAR(64) NULL COMMENT '当前调度租约持有者',
|
||||
MODIFY COLUMN lease_until DATETIME(3) NULL COMMENT '当前调度租约过期时间',
|
||||
MODIFY COLUMN consecutive_failures INT UNSIGNED NOT NULL DEFAULT 0
|
||||
COMMENT '当前正常查询槽位内的连续技术失败次数',
|
||||
MODIFY COLUMN window_started_at DATETIME(3) NOT NULL COMMENT '当前正常查询槽位时间',
|
||||
MODIFY COLUMN attempt_count INT UNSIGNED NOT NULL DEFAULT 0
|
||||
COMMENT '当前正常查询槽位已调用次数;最多3次',
|
||||
MODIFY COLUMN next_allowed_at DATETIME(3) NULL
|
||||
COMMENT '下一正常槽位或槽内技术退避时间;停止后为空';
|
||||
|
||||
DROP PROCEDURE IF EXISTS ensure_carrier_schedule_retry_check;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE ensure_carrier_schedule_retry_check()
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM information_schema.table_constraints
|
||||
WHERE constraint_schema=DATABASE() AND table_name='fl_carrier_schedule_query'
|
||||
AND constraint_name='chk_carrier_schedule_query_attempt' AND constraint_type='CHECK') THEN
|
||||
ALTER TABLE fl_carrier_schedule_query
|
||||
ADD CONSTRAINT chk_carrier_schedule_query_attempt CHECK (attempt_count BETWEEN 0 AND 3);
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
CALL ensure_carrier_schedule_retry_check();
|
||||
DROP PROCEDURE IF EXISTS ensure_carrier_schedule_retry_check;
|
||||
|
||||
-- 来源:iam/src/main/resources/db/phase3-warehouse-roles.sql
|
||||
-- 三期仓库常用系统角色:仓库操作员、仓库拣货员、仓库理货员。
|
||||
-- 本脚本只组合已经存在的权限资源,需在三期 Firstleg/IAM 权限脚本之后执行,可重复部署。
|
||||
@@ -11955,7 +12060,7 @@ CALL queue_table_comment('baiyue_finance', 'fin_receipt_bill', '人工收款对
|
||||
CALL queue_table_comment('baiyue_finance', 'fin_subject', '平台财务主体;首期仅一个有效主体');
|
||||
CALL queue_table_comment('baiyue_firstleg', 'fl_assignment_history', '头程任务指派历史表:不可变记录每次负责人变更及原因,用于追踪和审计');
|
||||
CALL queue_table_comment('baiyue_firstleg', 'fl_carrier_fba_rate', '船司FBA目的仓价格版本');
|
||||
CALL queue_table_comment('baiyue_firstleg', 'fl_carrier_schedule_query', '六家船公司固定时刻自动查询任务');
|
||||
CALL queue_table_comment('baiyue_firstleg', 'fl_carrier_schedule_query', '六家船公司固定槽位与技术退避查询任务');
|
||||
CALL queue_table_comment('baiyue_firstleg', 'fl_carrier_schedule_query_attempt', '船司官网查询尝试不可变审计');
|
||||
CALL queue_table_comment('baiyue_firstleg', 'fl_carrier_schedule_query_history', '船司查询任务不可变历史');
|
||||
CALL queue_table_comment('baiyue_firstleg', 'fl_carrier_schedule_query_operation', '船司查询写操作幂等与请求摘要');
|
||||
@@ -12542,7 +12647,7 @@ CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_fba_rate', 'updated_by'
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_fba_rate', 'version', '乐观锁版本号');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_fba_rate', 'weight_from_kg', '区域阶梯起始计费重量KG');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'access_mode', '船司访问方式:PUBLIC_FORM、PUBLIC_WEB_PROXY、PUBLIC_HTML、HCAPTCHA、OFFICIAL_API');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'attempt_count', '累计自动查询调用次数');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'attempt_count', '当前正常查询槽位已调用次数;最多3次');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'carrier_code', '船公司编码:MATSON美森、SML森罗、ZIM以星、COSCO中远海运、EMC长荣、HEDE合德');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'container_booking_id', '指定查询的柜次ID;整票订舱查询时为空');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'container_scope_id', '柜次唯一作用域计算值;整票订舱查询固定为0');
|
||||
@@ -12558,7 +12663,7 @@ CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'last_
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'last_error_message', '最近查询失败错误说明');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'last_success_at', '最近一次取得有效结果时间');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'manual_reason', '需要人工查询或录入的原因');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'next_allowed_at', '下一个09:00、12:30或16:00固定查询槽位;停止后为空');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'next_allowed_at', '下一正常槽位或槽内技术退避时间;停止后为空');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'ocean_booking_id', '关联海运订舱ID');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'official_url', '船公司官网查询入口地址快照');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'query_no', '船司官网查询任务编号');
|
||||
@@ -12573,14 +12678,14 @@ CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'stopp
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'stop_reason', '任务停止原因');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'lease_owner', '当前调度租约持有者');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'lease_until', '当前调度租约过期时间');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'consecutive_failures', '连续失败次数诊断值;不改变固定查询槽位');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'consecutive_failures', '当前正常查询槽位内的连续技术失败次数');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'tracking_no', '提交至船公司官网的跟踪号码');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'tracking_type', '官网跟踪类型:BOOKING_NO订舱号、BILL_OF_LADING提单号、CONTAINER_NO箱号');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'updated_at', '任务最后更新时间');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'updated_by', '最后修改操作人ID');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'updated_by_name', '最后修改操作人姓名快照');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'version', '乐观锁版本号');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'window_started_at', '首次进入自动查询调度的时间');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query', 'window_started_at', '当前正常查询槽位时间');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query_attempt', 'access_mode', '本次尝试的官网访问方式快照');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query_attempt', 'attempt_status', '供应商调用结果');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query_attempt', 'carrier_code', '本次尝试的船公司编码快照');
|
||||
@@ -12595,7 +12700,7 @@ CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query_attempt'
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query_attempt', 'operator_id', '执行本次尝试的操作人ID');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query_attempt', 'operator_name', '执行操作人姓名快照');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query_attempt', 'query_id', '所属船司官网查询任务ID');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query_attempt', 'window_attempt_no', '任务累计自动查询调用序号');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query_attempt', 'window_attempt_no', '当前正常查询槽位内的调用序号;取值1至3');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query_history', 'action', '查询任务业务历史动作');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query_history', 'after_snapshot', '变更后任务数据快照');
|
||||
CALL queue_column_comment('baiyue_firstleg', 'fl_carrier_schedule_query_history', 'before_snapshot', '变更前任务数据快照;创建时为空');
|
||||
@@ -14598,6 +14703,22 @@ BEGIN
|
||||
'baiyue_firstleg','baiyue_file','baiyue_audit','baiyue_event_bridge','baiyue_finance'))<>9 THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '统一迁移失败:九个业务数据库未完整创建';
|
||||
END IF;
|
||||
IF (SELECT COUNT(*) FROM information_schema.columns
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_carrier_schedule_query'
|
||||
AND column_name IN ('trigger_source','latest_standard_node','latest_node_observed_at',
|
||||
'stopped_at','stop_reason','lease_owner','lease_until','consecutive_failures',
|
||||
'window_started_at','attempt_count','next_allowed_at')) <> 11
|
||||
OR (SELECT COUNT(*) FROM information_schema.statistics
|
||||
WHERE table_schema='baiyue_firstleg' AND table_name='fl_carrier_schedule_query'
|
||||
AND index_name='idx_carrier_schedule_query_due'
|
||||
AND column_name IN ('status','next_allowed_at','id')) <> 3
|
||||
OR (SELECT COUNT(*) FROM information_schema.table_constraints
|
||||
WHERE constraint_schema='baiyue_firstleg' AND table_name='fl_carrier_schedule_query'
|
||||
AND constraint_name='chk_carrier_schedule_query_attempt'
|
||||
AND constraint_type='CHECK') <> 1 THEN
|
||||
SIGNAL SQLSTATE '45000'
|
||||
SET MESSAGE_TEXT = '统一迁移失败:船司查询固定槽位字段、索引或尝试次数约束不完整';
|
||||
END IF;
|
||||
IF EXISTS (
|
||||
SELECT 1 FROM information_schema.tables
|
||||
WHERE table_schema IN ('baiyue_auth','baiyue_iam','baiyue_order','baiyue_warehouse',
|
||||
@@ -15973,7 +16094,7 @@ ALTER TABLE fl_inbound_outbox
|
||||
MODIFY COLUMN payload_hash VARCHAR(71) NULL COMMENT '事件规范化负载SHA-256;标准跨区事件含sha256:前缀';
|
||||
ALTER TABLE fl_inbound_outbox
|
||||
MODIFY COLUMN payload_json LONGTEXT NOT NULL COMMENT '事件负载快照;文本类型保留跨区事件摘要所依赖的数值词法';
|
||||
+-- 四期海外权限统一目录(来源:iam/db/lastleg-permissions.sql)
|
||||
-- 四期海外权限统一目录(来源:iam/db/lastleg-permissions.sql)
|
||||
-- 四期 Admin 海外权限只使用 platform:overseas-*;列表权限包含详情只读。
|
||||
DELETE rp FROM baiyue_iam.iam_role_permission rp
|
||||
JOIN baiyue_iam.iam_permission p ON p.id=rp.permission_id
|
||||
|
||||
Reference in New Issue
Block a user