[CmdletBinding()] param( [switch]$DryRun, [string]$MavenCommand = "mvn" ) $ErrorActionPreference = "Stop" $repoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path $pom = Join-Path $repoRoot "pom.xml" $requiredTests = @( "firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/controller/PlatformOceanBookingControllerContractTest.java", "firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/service/OceanBookingServiceTest.java", "firstleg/src/test/java/com/baiyue/firstleg/repository/TruckAppointmentMapperContractTest.java", "firstleg/src/test/java/com/baiyue/firstleg/service/TruckAppointmentServiceTest.java", "firstleg/src/test/java/com/baiyue/firstleg/controller/TruckAppointmentControllerContractTest.java", "firstleg/src/test/java/com/baiyue/firstleg/service/UnifiedInboundQueryServiceTest.java", "order/src/test/java/com/baiyue/order/service/UnifiedOrderQueryServiceTest.java" ) $mavenArgs = @("-f", $pom, "-pl", "order,firstleg", "-am", "test") Write-Host "Backend regression root: $repoRoot" Write-Host "Scope: order + firstleg Maven reactor (includes all module tests)" Write-Host "Database/API access: none" if (-not (Test-Path -LiteralPath $pom)) { Write-Error "Missing Maven pom: $pom" exit 2 } $missing = @($requiredTests | Where-Object { -not (Test-Path -LiteralPath (Join-Path $repoRoot $_)) }) if ($missing.Count -gt 0) { Write-Error ("Missing required regression coverage:`n" + ($missing -join "`n")) exit 2 } Write-Host ("Command: {0} {1}" -f $MavenCommand, ($mavenArgs -join " ")) if ($DryRun) { Write-Host "DRY-RUN PASS: prerequisites and coverage files are present; Maven was not started." exit 0 } Push-Location $repoRoot try { & $MavenCommand @mavenArgs $code = $LASTEXITCODE } finally { Pop-Location } if ($code -ne 0) { Write-Error "Maven regression failed with exit code $code" exit $code } Write-Host "Backend regression PASS" exit 0