shoc-backend/scripts/seed-work-orders-search.ps1

56 lines
1.6 KiB
PowerShell

# Seed sintético de Work Orders para load test Tier S
#
# Uso:
# $env:SQL_CONNECTION_STRING = "Server=localhost;Database=SeaHaven;..."
# .\scripts\seed-work-orders-search.ps1 -Count 15000
param(
[int]$Count = 5000,
[string]$ConnectionString = $env:SQL_CONNECTION_STRING
)
if ([string]::IsNullOrWhiteSpace($ConnectionString)) {
Write-Error "Defina SQL_CONNECTION_STRING ou passe -ConnectionString."
exit 1
}
$sites = @("BK5", "BK6", "BK7", "BK8", "BK9", "LA1", "LA2", "NY1")
$trades = @("HVAC PM", "Plumbing PM", "Electrical PM", "Roof Inspection", "Fire Safety")
$baseDate = Get-Date "2026-01-06"
Write-Host "Inserindo $Count WOs sintéticas..." -ForegroundColor Cyan
$batchSize = 500
$inserted = 0
while ($inserted -lt $Count) {
$batch = [Math]::Min($batchSize, $Count - $inserted)
$values = @()
for ($i = 0; $i -lt $batch; $i++) {
$id = $inserted + $i + 1
$site = $sites[$id % $sites.Length]
$trade = $trades[$id % $trades.Length]
$weekOffset = $id % 52
$scheduled = $baseDate.AddDays($weekOffset * 7 + ($id % 5))
$woNumber = ("1{0:D10}" -f $id)
$values += "('$woNumber', '$site', '$trade', '$($scheduled.ToString('yyyy-MM-dd'))', 2, 0)"
}
$sql = @"
INSERT INTO workOrders (InternalWONumber, SiteCode, Trade, ScheduledDate, LifecycleStatus, istemplate, RescheduleCount, CarriedOver, CreatedDate)
VALUES $($values -join ',');
"@
sqlcmd -Q $sql -b
if ($LASTEXITCODE -ne 0) {
Write-Error "Falha no batch $inserted"
exit 1
}
$inserted += $batch
Write-Host " $inserted / $Count"
}
Write-Host "Seed concluído." -ForegroundColor Green