完成全项目响应式审核与换机交接
This commit is contained in:
@@ -2,12 +2,13 @@ $ErrorActionPreference = 'Stop'
|
||||
function Read-Utf8([string]$Path) { [System.IO.File]::ReadAllText((Join-Path (Join-Path $PSScriptRoot '..') $Path), [System.Text.Encoding]::UTF8) }
|
||||
function Assert-Contains([string]$Content,[string]$Expected) { if (-not $Content.Contains($Expected)) { throw "R02 contract missing: $Expected" } }
|
||||
$page = Read-Utf8 'pages/records/r02-person-detail.vue'
|
||||
$profiles = Read-Utf8 'styles/adaptive-frame-profiles.scss'
|
||||
$catalog = Read-Utf8 'data/page-catalog.js'
|
||||
foreach ($expected in @(
|
||||
'class="person-detail-page"','person-detail-state--','class="person-identity-card"',
|
||||
'class="person-edit-action"','class="person-save-action"','class="person-cancel-action"',
|
||||
'shortFields','longFields','person-field__label','person-long-field__label','const enterEdit = () =>','const savePerson = () =>',
|
||||
'const returnToPeople = () =>','r01-person-name-card.png','module-content-frame.png','module-field-frame.png',
|
||||
'const returnToPeople = () =>','@include adaptive.adaptive-records-person;','@include adaptive.adaptive-records-content;','@include adaptive.adaptive-records-field;',
|
||||
'ModulePageBackground','PageHeader','AppButton','AppLoading','AppToast'
|
||||
)) { Assert-Contains $page $expected }
|
||||
foreach ($forbidden in @('<ModulePage page-id="r02"','import ModulePage from')) { if ($page.Contains($forbidden)) { throw "R02 retains forbidden dependency: $forbidden" } }
|
||||
@@ -21,10 +22,14 @@ if ($page -match '(?im)(?<![-\w])position\s*:') {
|
||||
foreach ($rule in @(
|
||||
'(?s)\.person-detail-page\s*\{[^}]*display:\s*flex;[^}]*flex-direction:\s*column;',
|
||||
'(?s)\.person-detail-header,\.person-detail-loading,\.person-detail-content\s*\{[^}]*z-index:\s*1;',
|
||||
'(?s)\.person-identity-card\s*\{[^}]*background:\s*url\("/static/assets/modules/records/transparent/r01-person-name-card\.png"\) center / 100% 100% no-repeat;',
|
||||
'(?s)\.person-archive-card,\.person-long-field,\.person-state-card\s*\{[^}]*background:\s*url\("/static/assets/modules/records/transparent/module-content-frame\.png"\) center / 100% 100% no-repeat;',
|
||||
'(?s)\.person-field\s*\{[^}]*background:\s*url\("/static/assets/modules/records/transparent/module-field-frame\.png"\) center / 100% 100% no-repeat;'
|
||||
'(?s)\.person-identity-card\s*\{[^}]*@include\s+adaptive\.adaptive-records-person\s*;',
|
||||
'(?s)\.person-archive-card,\.person-long-field,\.person-state-card\s*\{[^}]*@include\s+adaptive\.adaptive-records-content\s*;',
|
||||
'(?s)\.person-field\s*\{[^}]*@include\s+adaptive\.adaptive-records-field\s*;'
|
||||
)) {
|
||||
if ($page -notmatch $rule) { throw "R02 document-flow background rule missing: $rule" }
|
||||
if ($page -notmatch $rule) { throw "R02 adaptive document-flow rule missing: $rule" }
|
||||
}
|
||||
foreach ($owner in @('r01-person-name-card.png','module-content-frame.png','module-field-frame.png')) {
|
||||
if (-not $profiles.Contains($owner)) { throw "R02 adaptive profile owner missing: $owner" }
|
||||
}
|
||||
if ($page -match '100%\s+100%\s+no-repeat|border-image-slice\s*:') { throw 'R02 must consume adaptive frame geometry without page-local stretching or slicing' }
|
||||
Write-Output 'R02-PERSON-DETAIL-CONTRACT PASS'
|
||||
|
||||
Reference in New Issue
Block a user