fix(firstleg): consolidate service center migration contract

This commit is contained in:
2026-08-08 14:33:25 +08:00
parent 355b8629d9
commit 102845874b
2 changed files with 30 additions and 150 deletions
@@ -60,18 +60,31 @@ class Phase3BookingTruckPermissionSqlContractTest {
String sql = unifiedSql();
assertThat(sql)
.contains("UNIQUE KEY uk_permission_scope_code (tenant_id, app_code, permission_code)")
.contains("CREATE PROCEDURE assert_phase3_booking_truck_permission_ids_available()")
.contains("三期订舱/拖车权限迁移失败:5102140-5102154 ID 或权限码被其他语义占用")
.contains("CREATE PROCEDURE assert_ocean_booking_permission_ids_available()")
.contains("CREATE PROCEDURE assert_truck_appointment_permission_ids_available()")
.contains("CREATE PROCEDURE assert_phase3_service_center_schema()")
.contains("CALL assert_phase3_service_center_schema();")
.contains("DROP PROCEDURE IF EXISTS assert_phase3_service_center_schema;")
.contains("三期订舱权限迁移失败:5102140-5102149 ID 或权限码被其他语义占用")
.contains("三期拖车权限迁移失败:5102150-5102154 ID 或权限码被其他语义占用")
.contains("(5102140,0,'PLATFORM','MENU',5102000,'platform:firstleg:ocean-booking:list'")
.contains("(5102149,0,'PLATFORM','BUTTON',5102140,'platform:firstleg:ocean-booking:allocate'")
.contains("(5102150,0,'PLATFORM','MENU',5102000,'platform:firstleg:truck-appointment:list'")
.contains("(5102154,0,'PLATFORM','BUTTON',5102150,'platform:firstleg:truck-appointment:operate'")
.contains("role.role_code IN ('PLATFORM_ADMIN','ORDER_OPERATOR')")
.contains("CREATE PROCEDURE assert_phase3_booking_truck_permissions()")
.contains("统一迁移失败:三期订舱/拖车 15 项权限映射不完整")
.contains("统一迁移失败:三期订舱/拖车角色授权不完整")
.contains("CALL assert_phase3_booking_truck_permissions()")
.contains("DROP PROCEDURE IF EXISTS assert_phase3_booking_truck_permissions;");
.doesNotContain("assert_phase3_booking_truck_permission_ids_available")
.doesNotContain("/trucking");
assertThat(count(sql, "(5102140,0,'PLATFORM','MENU',5102000,'platform:firstleg:ocean-booking:list'"))
.isEqualTo(1);
assertThat(count(sql, "(5102150,0,'PLATFORM','MENU',5102000,'platform:firstleg:truck-appointment:list'"))
.isEqualTo(1);
assertThat(count(sql, "CREATE PROCEDURE assert_ocean_booking_permission_ids_available()"))
.isEqualTo(1);
assertThat(count(sql, "CREATE PROCEDURE assert_truck_appointment_permission_ids_available()"))
.isEqualTo(1);
assertThat(count(sql, "CREATE PROCEDURE assert_phase3_service_center_schema()"))
.isEqualTo(1);
}
private static Set<String> authorities(Class<?> controller) {
@@ -97,6 +110,16 @@ class Phase3BookingTruckPermissionSqlContractTest {
return result;
}
private static int count(String text, String needle) {
int count = 0;
int offset = 0;
while ((offset = text.indexOf(needle, offset)) >= 0) {
count++;
offset += needle.length();
}
return count;
}
private static String resource(String path) throws Exception {
return new ClassPathResource(path).getContentAsString(StandardCharsets.UTF_8);
}