Files
qipai/scripts/dev/windows/check-backend.ps1
T
2026-06-16 21:04:38 +08:00

77 lines
2.2 KiB
PowerShell

$ErrorActionPreference = "Stop"
$requiredFiles = @(
"backend/package.json",
"backend/package-lock.json",
"backend/tsconfig.json",
"backend/.env.example",
"backend/src/app.ts",
"backend/src/config.ts",
"backend/src/routes/health.ts",
"backend/src/server.ts",
"backend/tests/backend-contract.test.mjs",
"deploy/pm2/ecosystem.config.cjs"
)
foreach ($path in $requiredFiles) {
if (-not (Test-Path $path)) {
throw "Required backend file missing: $path"
}
}
& npm --prefix backend test
if ($LASTEXITCODE -ne 0) {
throw "backend contract test failed"
}
& npm --prefix backend run build
if ($LASTEXITCODE -ne 0) {
throw "backend build failed"
}
$oldHost = $env:QIPAI_API_HOST
$oldPort = $env:QIPAI_API_PORT
$oldVersion = $env:QIPAI_API_VERSION
$env:QIPAI_API_HOST = "127.0.0.1"
$env:QIPAI_API_PORT = "3101"
$env:QIPAI_API_VERSION = "0.1.0-test"
$server = $null
try {
$server = Start-Process -FilePath node -ArgumentList "dist/server.js" -WorkingDirectory "backend" -PassThru -WindowStyle Hidden
$appHealth = $null
$adminHealth = $null
for ($attempt = 0; $attempt -lt 20; $attempt++) {
try {
$appHealth = Invoke-RestMethod -Uri "http://127.0.0.1:3101/app-api/health" -Headers @{ "x-trace-id" = "codex-health-app" }
$adminHealth = Invoke-RestMethod -Uri "http://127.0.0.1:3101/admin-api/health" -Headers @{ "x-trace-id" = "codex-health-admin" }
break
} catch {
if ($server.HasExited) {
throw "backend server exited before health checks completed"
}
Start-Sleep -Milliseconds 500
}
}
if (-not $appHealth -or -not $adminHealth) {
throw "backend health checks did not respond"
}
if (-not $appHealth.ok -or $appHealth.service -ne "qipai-api" -or $appHealth.traceId -ne "codex-health-app") {
throw "app health response mismatch"
}
if (-not $adminHealth.ok -or $adminHealth.service -ne "qipai-api" -or $adminHealth.traceId -ne "codex-health-admin") {
throw "admin health response mismatch"
}
} finally {
if ($server -and -not $server.HasExited) {
Stop-Process -Id $server.Id -Force
}
$env:QIPAI_API_HOST = $oldHost
$env:QIPAI_API_PORT = $oldPort
$env:QIPAI_API_VERSION = $oldVersion
}
Write-Host "PASS: backend M01-A build and HTTP health checks passed."