chore: establish local platform baseline

This commit is contained in:
Codex Local
2026-08-26 06:41:54 +08:00
commit 29bdf4900f
575 changed files with 95644 additions and 0 deletions
+87
View File
@@ -0,0 +1,87 @@
$ErrorActionPreference = 'Stop'
$PSNativeCommandUseErrorActionPreference = $true
$projectRoot = Split-Path -Parent $PSScriptRoot
Set-Location -LiteralPath $projectRoot
$api = 'http://localhost:58080'
$tokenUrl = 'http://localhost:58180/realms/voice-local/protocol/openid-connect/token'
$tenantId = '10000000-0000-0000-0000-000000000001'
$deviceId = '10000000-0000-0000-0000-000000000501'
$ownerId = '10000000-0000-0000-0000-000000000101'
$commandPublicId = [Guid]::NewGuid().ToString()
$idempotencyKey = 'event-smoke-' + [Guid]::NewGuid().ToString('N')
function Get-AccessToken([string]$UserName) {
return (Invoke-RestMethod -Method Post -Uri $tokenUrl -ContentType 'application/x-www-form-urlencoded' -Body @{
grant_type = 'password'; client_id = 'voice-platform-web'; username = $UserName; password = 'LocalOnly123!'; scope = 'openid'
}).access_token
}
function Get-EventStream([string]$Token, [long]$LastEventId) {
$previousPreference = $PSNativeCommandUseErrorActionPreference
$PSNativeCommandUseErrorActionPreference = $false
try {
return (& curl.exe -sS -N --max-time 2 -H "Accept: text/event-stream" -H "Authorization: Bearer $Token" -H "Last-Event-ID: $LastEventId" "$api/api/v1/events" 2>$null | Out-String)
} finally {
$PSNativeCommandUseErrorActionPreference = $previousPreference
}
}
$ownerToken = Get-AccessToken 'owner'
$editorToken = Get-AccessToken 'editor'
$outsiderToken = Get-AccessToken 'outsider'
try {
$insertSql = @"
INSERT INTO device_command(public_id,tenant_id,device_id,command_type,payload,status,result_summary,requested_by,idempotency_key,request_digest,expires_at)
VALUES('$commandPublicId'::uuid,'$tenantId'::uuid,'$deviceId'::uuid,'diagnostics','{}'::jsonb,'QUEUED','{}'::jsonb,'$ownerId'::uuid,'$idempotencyKey',repeat('a',64),now()+interval '5 minutes');
UPDATE device_command SET status='SUCCEEDED',completed_at=now(),version=version+1,updated_at=now() WHERE public_id='$commandPublicId'::uuid;
"@
$insertSql | docker compose exec -T postgres psql -U voice -d voice_platform -v ON_ERROR_STOP=1 -q | Out-Null
$rows = docker compose exec -T postgres psql -U voice -d voice_platform -t -A -F '|' -c "SELECT id,event_type,status,resource_public_id FROM web_event WHERE resource_public_id='$commandPublicId'::uuid ORDER BY id" | Out-String
$events = @($rows.Trim() -split "`r?`n")
if ($events.Count -ne 2) { throw "Expected two command events, received $($events.Count): $rows" }
$first = $events[0] -split '\|'
$second = $events[1] -split '\|'
if ($first[1] -ne 'device.command.updated' -or $first[2] -ne 'QUEUED' -or $second[2] -ne 'SUCCEEDED') { throw "Trigger event sequence was unexpected: $rows" }
$ownerStream = Get-EventStream $ownerToken ([long]$first[0])
if ($ownerStream -notmatch "id: $($second[0])" -or $ownerStream -notmatch 'event: device.command.updated' -or $ownerStream -notmatch '"status":"SUCCEEDED"') { throw "Owner did not receive the missing event: $ownerStream" }
if ($ownerStream -match 'payload|result_summary|idempotency|requested_by') { throw "Sensitive command fields leaked into SSE: $ownerStream" }
$editorStream = Get-EventStream $editorToken ([long]$first[0])
if ($editorStream -notmatch "id: $($second[0])") { throw 'Active member did not receive the household event' }
$replayed = Get-EventStream $ownerToken ([long]$second[0])
if ($replayed -match 'data:') { throw "Reconnect replayed an already processed event: $replayed" }
try {
Invoke-WebRequest -UseBasicParsing -Uri "$api/api/v1/events" -Headers @{ Authorization = "Bearer $outsiderToken"; 'Last-Event-ID' = $first[0] } | Out-Null
throw 'Cross-tenant event cursor was accepted'
} catch {
if ($_.Exception.Response.StatusCode.value__ -ne 410) { throw }
}
try {
Invoke-WebRequest -UseBasicParsing -Uri "$api/api/v1/events" -Headers @{ Authorization = "Bearer $ownerToken"; 'Last-Event-ID' = 'not-a-number' } | Out-Null
throw 'Malformed event cursor was accepted'
} catch {
if ($_.Exception.Response.StatusCode.value__ -ne 400) { throw }
}
"UPDATE web_event SET expires_at=now()-interval '1 second' WHERE id=$($first[0]);" | docker compose exec -T postgres psql -U voice -d voice_platform -v ON_ERROR_STOP=1 -q | Out-Null
try {
Invoke-WebRequest -UseBasicParsing -Uri "$api/api/v1/events" -Headers @{ Authorization = "Bearer $ownerToken"; 'Last-Event-ID' = $first[0] } | Out-Null
throw 'Expired event cursor was accepted'
} catch {
if ($_.Exception.Response.StatusCode.value__ -ne 410) { throw }
}
Write-Host "SSE transaction event, resume cursor, duplicate suppression and household isolation smoke passed: $commandPublicId"
}
finally {
$cleanupSql = @"
BEGIN;
DELETE FROM web_event WHERE resource_public_id='$commandPublicId'::uuid;
DELETE FROM device_command WHERE public_id='$commandPublicId'::uuid;
COMMIT;
"@
$cleanupSql | docker compose exec -T postgres psql -U voice -d voice_platform -v ON_ERROR_STOP=1 -q | Out-Null
}