Files
jiapuapp/tests/a01-design-record-audit.ps1
T
2026-07-13 14:47:28 +08:00

75 lines
2.8 KiB
PowerShell

$ErrorActionPreference = 'Stop'
function ConvertFrom-Utf8Base64 {
param([string]$Value)
return [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($Value))
}
$recordPath = ConvertFrom-Utf8Base64 'ZG9jcy9kZXNpZ24vQTAxX+WQr+WKqOeZu+W9leW8leWvvF/orr7orqHorrDlvZUubWQ='
$effect = ConvertFrom-Utf8Base64 'ZG9jcy9kZXNpZ24vc2NyZWVucy9BMDEt5ZCv5Yqo55m75b2V5byV5a+8LeaViOaenOeovy12My3mloflrZfms6jlhozlhaXlj6MucG5n'
$record = Get-Content -LiteralPath $recordPath -Raw -Encoding utf8
$rules = @(
(ConvertFrom-Utf8Base64 '55m75b2V'),
(ConvertFrom-Utf8Base64 '5b6u5L+h55m75b2V'),
(ConvertFrom-Utf8Base64 '6L+Y5rKh5pyJ6LSm5Y+377yf5rOo5YaM6LSm5Y+3'),
(ConvertFrom-Utf8Base64 '5Y+M5qCH562+'),
(ConvertFrom-Utf8Base64 '5Yid5aeL5pyq5Yu+6YCJ')
)
foreach ($rule in $rules) {
if ($record -notmatch [regex]::Escape($rule)) {
throw "Missing A01 rule: $rule"
}
}
$layoutRules = @(
(ConvertFrom-Utf8Base64 '5Zu65a6a6K6+6K6h55S75biD5Li6IGA3NTBycHhgIOWuvQ=='),
(ConvertFrom-Utf8Base64 'ODUyIMOXIDE4NDZweA=='),
(ConvertFrom-Utf8Base64 'NzUwIMOXIDE2MjVycHg='),
(ConvertFrom-Utf8Base64 '6L+Q6KGM5pe26KeG6KeJ5rqQ'),
(ConvertFrom-Utf8Base64 '5Li75oyJ6ZKu5paH5qGI5Zu65a6a5Li64oCc55m75b2V4oCd'),
(ConvertFrom-Utf8Base64 'b3ZlcmZsb3c6IGhpZGRlbg==')
)
foreach ($rule in $layoutRules) {
if ($record -notmatch [regex]::Escape($rule)) {
throw "Missing A01 layout rule: $rule"
}
}
$legacyLayoutRule = ConvertFrom-Utf8Base64 '5YaF5a655a695bqmIDYzOHJweA=='
if ($record -match [regex]::Escape($legacyLayoutRule)) {
throw "Legacy A01 layout rule remains: $legacyLayoutRule"
}
$currentStructure = [regex]::Match($record, '(?s)## 2\..*?(?=## 3\.)').Value
$currentStructureRule = ConvertFrom-Utf8Base64 '5Lik5Liq5aSn5oyJ6ZKu5ZKM5LiA5Liq5paH5a2X5YWl5Y+j'
if ($currentStructure -notmatch [regex]::Escape($currentStructureRule)) {
throw "Missing current A01 structure rule: $currentStructureRule"
}
if (-not (Test-Path -LiteralPath $effect)) {
throw "Missing archived A01 effect: $effect"
}
$screenDirectory = Split-Path -Parent $effect
$staticEffects = @(
(ConvertFrom-Utf8Base64 'QTAxLeWQr+WKqOeZu+W9leW8leWvvC3moIXmoLzpqozmlLYtMzIweDU2OC5wbmc='),
(ConvertFrom-Utf8Base64 'QTAxLeWQr+WKqOeZu+W9leW8leWvvC3moIXmoLzpqozmlLYtMzYweDY0MC5wbmc='),
(ConvertFrom-Utf8Base64 'QTAxLeWQr+WKqOeZu+W9leW8leWvvC3moIXmoLzpqozmlLYtMzYweDgwMC5wbmc='),
(ConvertFrom-Utf8Base64 'QTAxLeWQr+WKqOeZu+W9leW8leWvvC3moIXmoLzpqozmlLYtNDEyeDkxNS5wbmc=')
)
foreach ($staticEffect in $staticEffects) {
if (-not (Test-Path -LiteralPath (Join-Path $screenDirectory $staticEffect))) {
throw "Missing static A01 evidence: $staticEffect"
}
}
$staticEvidenceRule = ConvertFrom-Utf8Base64 '6Z2Z5oCB6K6+6K6h6aqM5pS25bey6KaG55uW'
if ($record -notmatch [regex]::Escape($staticEvidenceRule)) {
throw "Missing static A01 evidence rule: $staticEvidenceRule"
}
Write-Output 'A01-DESIGN-RECORD-AUDIT PASS'