diff --git a/deploy/sql/头程数据库统一增量-MySQL8.sql b/deploy/sql/头程数据库统一增量-MySQL8.sql index 9f35980e2..271ad12d9 100644 --- a/deploy/sql/头程数据库统一增量-MySQL8.sql +++ b/deploy/sql/头程数据库统一增量-MySQL8.sql @@ -16395,6 +16395,7 @@ CALL baiyue_iam.assert_overseas_pda_picker_permission(); DROP PROCEDURE baiyue_iam.assert_overseas_pda_picker_permission; -- 四期仓库后台角色严格最小授权:list 同时覆盖列表与详情,只读角色不得获得任何写权限。 +USE baiyue_iam; DROP TEMPORARY TABLE IF EXISTS tmp_phase4_warehouse_role_permission; CREATE TEMPORARY TABLE tmp_phase4_warehouse_role_permission ( role_code VARCHAR(64) NOT NULL, diff --git a/scripts/admin-test-env-modules/phase4-canonical-warehouse-rbac-contract.test.mjs b/scripts/admin-test-env-modules/phase4-canonical-warehouse-rbac-contract.test.mjs index c1fdaa0fe..d36246ae5 100644 --- a/scripts/admin-test-env-modules/phase4-canonical-warehouse-rbac-contract.test.mjs +++ b/scripts/admin-test-env-modules/phase4-canonical-warehouse-rbac-contract.test.mjs @@ -4,6 +4,7 @@ import { readFileSync } from 'node:fs' const acceptance = readFileSync(new URL('./phase3-warehouse-rbac.mjs', import.meta.url), 'utf8') const iamSql = readFileSync(new URL('../../iam/src/main/resources/db/lastleg-permissions.sql', import.meta.url), 'utf8') +const unifiedSql = readFileSync(new URL('../../deploy/sql/头程数据库统一增量-MySQL8.sql', import.meta.url), 'utf8') const listCodes = [ 'platform:overseas-warehouse:last-mile-order:list', @@ -37,3 +38,11 @@ test('picker stays isolated to the dedicated overseas PDA authority', () => { assert.match(iamSql, /role\.role_code='WAREHOUSE_PICKER'/) assert.match(iamSql, /permission\.permission_code='lastleg:pda:operate'/) }) + +test('unified migration creates the phase-four role matrix in the IAM schema used by its assertion routine', () => { + assert.match( + unifiedSql, + /USE baiyue_iam;\s*DROP TEMPORARY TABLE IF EXISTS tmp_phase4_warehouse_role_permission;\s*CREATE TEMPORARY TABLE tmp_phase4_warehouse_role_permission/, + ) + assert.match(unifiedSql, /CREATE PROCEDURE baiyue_iam\.assert_phase4_warehouse_role_minimum\(\)/) +})