Test #1

Merged
admin merged 1726 commits from test into main 2026-09-17 11:52:45 +08:00
5 changed files with 36 additions and 10 deletions
Showing only changes of commit e52ecb9315 - Show all commits
@@ -16533,8 +16533,6 @@ BEGIN
END IF;
END$$
DELIMITER ;
CALL assert_finance_permissions();
DROP PROCEDURE IF EXISTS assert_finance_permissions;
-- IAM 跨区安全事件可靠发送箱。来源:iam/src/main/resources/db/security-event-outbox.sql
USE baiyue_iam;
@@ -17604,12 +17602,6 @@ DELIMITER ;
CALL baiyue_firstleg.ensure_smart_loading_candidate_indexes();
DROP PROCEDURE IF EXISTS baiyue_firstleg.ensure_smart_loading_candidate_indexes;
CALL baiyue_firstleg.assert_unified_final_schema();
DROP PROCEDURE IF EXISTS baiyue_firstleg.assert_unified_final_schema;
SELECT 'PASS' AS migration_status,
'统一增量全部执行完成;父子订单、履约分片、装柜门禁、订舱拖车、报关船期、船司查询、仓库角色、费用、Finance人工财务、公共资源、可靠审计及IAM安全事件结构校验通过' AS message;
-- 一件代发客户资金账户:实际余额优先,授信额度补足;冻结后结算或解冻。
USE baiyue_finance;
CREATE TABLE IF NOT EXISTS fin_wallet_account (
@@ -17875,7 +17867,9 @@ DELIMITER ;
CALL migrate_wallet_permissions();
DROP PROCEDURE IF EXISTS migrate_wallet_permissions;
SELECT '统一增量全部执行完成;父子订单、履约分片、装柜门禁、订舱拖车、报关船期、船司查询、仓库角色、费用、Finance人工财务、客户资金账户、公共资源、可靠审计及IAM安全事件结构校验通过' AS message;
-- 钱包写权限属于 Finance 权限总数的一部分,必须先完成钱包权限迁移再做总量断言。
CALL assert_finance_permissions();
DROP PROCEDURE IF EXISTS assert_finance_permissions;
USE baiyue_finance;
@@ -17920,3 +17914,26 @@ SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE tab
PREPARE lx_inbound_ddl FROM @ddl; EXECUTE lx_inbound_ddl; DEALLOCATE PREPARE lx_inbound_ddl;
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema='baiyue_lastleg' AND table_name='ll_outbound_order' AND column_name='lx_codes'), 'SELECT 1', 'ALTER TABLE baiyue_lastleg.ll_outbound_order ADD COLUMN lx_codes VARCHAR(1000) NULL COMMENT ''关联一件代发领星入库单代码汇总'' AFTER outbound_type'));
PREPARE lx_outbound_ddl FROM @ddl; EXECUTE lx_outbound_ddl; DEALLOCATE PREPARE lx_outbound_ddl;
DROP PROCEDURE IF EXISTS assert_wallet_event_schema;
DELIMITER $$
CREATE PROCEDURE assert_wallet_event_schema()
BEGIN
IF (SELECT COUNT(*) FROM information_schema.TABLES
WHERE TABLE_SCHEMA='baiyue_finance'
AND TABLE_NAME IN ('fin_wallet_command_inbox','fin_wallet_event_outbox')) <> 2 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='统一迁移失败:客户资金跨区事件表不完整';
END IF;
IF (SELECT COUNT(*) FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA='baiyue_finance' AND TABLE_NAME='fin_wallet_event_outbox'
AND INDEX_NAME='uk_fin_wallet_event_key' AND NON_UNIQUE=0) <> 1 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT='统一迁移失败:客户资金结果事件幂等索引不完整';
END IF;
END$$
DELIMITER ;
CALL assert_wallet_event_schema();
DROP PROCEDURE IF EXISTS assert_wallet_event_schema;
CALL baiyue_firstleg.assert_unified_final_schema();
DROP PROCEDURE IF EXISTS baiyue_firstleg.assert_unified_final_schema;
SELECT 'PASS' AS migration_status,
'统一增量全部执行完成;父子订单、履约分片、装柜门禁、订舱拖车、报关船期、船司查询、仓库角色、费用、Finance人工财务、客户资金账户、公共资源、可靠审计及IAM安全事件结构校验通过' AS message;
@@ -45,5 +45,10 @@ class FinanceContractTest {
assertTrue(unified.contains("CREATE DATABASE IF NOT EXISTS baiyue_finance"));
assertTrue(unified.contains("assert_finance_permissions"));
assertTrue(unified.contains("merchant:finance:statement:view"));
int walletEventSchema = unified.indexOf("CREATE TABLE IF NOT EXISTS fin_wallet_event_outbox");
int finalPass = unified.lastIndexOf("SELECT 'PASS' AS migration_status");
assertTrue(walletEventSchema >= 0);
assertTrue(finalPass > walletEventSchema);
assertTrue(unified.contains("CREATE PROCEDURE assert_wallet_event_schema()"));
}
}
@@ -66,7 +66,9 @@ class AdminPrototypeMenuPermissionSqlContractTest {
.contains("客户全局 Finance 权限模板不完整")
.contains("客户全局管理员 Finance 模板授权不完整")
.satisfies(content -> assertThat(content.indexOf("(5105050,0,'PLATFORM','BUTTON'"))
.isLessThan(content.indexOf("CREATE PROCEDURE assert_finance_permissions()")));
.isLessThan(content.indexOf("CREATE PROCEDURE assert_finance_permissions()")))
.satisfies(content -> assertThat(content.indexOf("CALL migrate_wallet_permissions();"))
.isLessThan(content.indexOf("CALL assert_finance_permissions();")));
}
@Test
@@ -29,6 +29,7 @@ test('module never borrows historical order or inventory candidates', () => {
})
test('relabel transfer and discard cover create replay conflict list detail and legal initial states', () => {
assert.match(source, /chargeAmount: 0\.01/)
for (const token of [
'客户创建贴标申请', '客户贴标申请幂等重放', '贴标同幂等键异载荷返回A0409',
'客户查询自身贴标申请列表', '客户查询自身贴标申请详情', 'PENDING_PROCESSING',
@@ -93,6 +93,7 @@ async function verifyRelabel(context, token, order) {
customerOrderNo: order.row.orderNo,
overseasWarehouseId: order.row.overseasWarehouseId,
labelDeadline: future(7), contactName: '客户贴标验收联系人', contactPhone: '13800000006',
chargeAmount: 0.01,
remark: context.marker, idempotencyKey: `${context.marker}-CLIENT-RELABEL`.slice(0, 255),
items: [{
skuCode: cargo.skuCode, productImageFileId: null, productImageFileName: null, productImageUrl: null,