修改完成

This commit is contained in:
2026-07-21 07:53:03 +08:00
parent 01d246c47b
commit ff60119277
172 changed files with 7982 additions and 2999 deletions
+51 -3
View File
@@ -14,6 +14,14 @@ function Assert-NoCssSurface {
}
}
function Assert-NoPosition {
param([string]$Content, [string]$Selector)
$escaped = [regex]::Escape($Selector)
if ($Content -match "(?s)$escaped\s*\{[^}]*\bposition\s*:") {
throw "T01 ordinary layout selector must stay in document flow: $Selector"
}
}
$root = Split-Path -Parent $PSScriptRoot
$pagePath = Join-Path $root 'pages/tree/t01-tree-overview.vue'
$t02Path = Join-Path $root 'pages/tree/t02-tree-states.vue'
@@ -34,13 +42,16 @@ foreach ($required in @(
'tree-state--error',
'tree-canvas--state',
'lineage-connector',
'const generationRows = [',
'const generationRows = computed(',
'v-for="row in generationRows"',
':style="generationRowStyle(row)"',
':style="generationBandStyle(row)"',
'class="tree-stage"',
'tree-stage--lineage',
'class="generation-rail"',
'tree-scroll--lineage',
'const generationRowStyle = (row)',
':style="nodeGridStyle(member)"',
'const nodeGridStyle = (member)',
'class="member-node__copy"',
't01-member-node-standard.png',
't01-member-node-selected.png',
't01-state-panel.png',
@@ -67,4 +78,41 @@ foreach ($className in @('tree-canvas', 'member-node', 'member-sheet', 'tree-sta
Assert-NoCssSurface $page $className
}
foreach ($selector in @('.generation-rail', '.generation-band', '.member-node')) {
Assert-NoPosition $page $selector
}
if ($page -match '(?s)\.node-name,\s*\.node-relation,\s*\.node-years\s*\{[^}]*\bposition\s*:') {
throw 'T01 member node text must stay in document flow'
}
if ($page -notmatch '(?s)\.tree-page\s*\{[^}]*display:\s*grid;[^}]*grid-template-rows:\s*auto auto minmax\(0, 1fr\);') {
throw 'T01 page content must own a grid stacking context above the fixed module background'
}
foreach ($obsolete in @('const nodeStyle = (member)', 'const generationRowStyle = (row)', 'left: `${member.x}rpx`', 'top: `${member.y}rpx`')) {
if ($page -match [regex]::Escape($obsolete)) { throw "T01 obsolete positioned layout remains: $obsolete" }
}
foreach ($required in @(
'const treeMetrics = computed(',
':style="treeMetricsStyle"',
':style="generationBandStyle(row)"',
'overflow-y: auto;'
)) { Assert-Contains $page $required "T01 data-driven tree boundary missing: $required" }
if ($page -match '<scroll-view\s+class="tree-stage"') {
throw 'T01 outer vertical tree owner must preserve the stage grid instead of wrapping its grid children'
}
foreach ($fixedCapacity in @(
'grid-template-columns: repeat(180, 5rpx)',
'grid-template-rows: repeat(180, 5rpx)',
'width: 900rpx',
'height: 900rpx',
'grid-template-rows: 47rpx 58rpx 157rpx 58rpx 242rpx 58rpx 1fr'
)) {
if ($page -match [regex]::Escape($fixedCapacity)) {
throw "T01 must derive tree capacity from member data: $fixedCapacity"
}
}
Write-Output 'T01-TREE-STATE-CONTRACT PASS'