$ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot $vueFiles = @( Get-ChildItem -LiteralPath (Join-Path $root 'pages') -Recurse -Filter '*.vue' Get-ChildItem -LiteralPath (Join-Path $root 'components') -Recurse -Filter '*.vue' ) $specificCopy = @( '\u6C64\u6B63\u534E', '\u6C64\u6B63\u56FD', '\u6C64\u6587\u8FDC', '\u6C64\u6C0F\u5BB6\u8C31', '\u5982\uFF1A\u6C64' ) foreach ($file in $vueFiles) { $lineNumber = 0 foreach ($line in Get-Content -LiteralPath $file.FullName -Encoding utf8) { $lineNumber += 1 if ($line -notmatch 'placeholder|例如|比如|如:') { continue } foreach ($token in $specificCopy) { if ($line -match $token) { throw "User guidance must not contain specific copy '$token': $($file.FullName):$lineNumber" } } } } $g08 = Get-Content -LiteralPath (Join-Path $root 'pages/genealogy/g08-join-application.vue') -Raw -Encoding utf8 foreach ($required in @( 'placeholder="\u4F8B\u5982\uFF1A\u67D0\u67D0\u67D0\u5802\u4F84"', '\u8BF7\u4EE5\u5BB6\u8C31\u4E2D\u4E00\u4F4D\u5DF2\u77E5\u957F\u8F88\u4E3A\u53C2\u7167\uFF0C\u4F8B\u5982\uFF1A\u67D0\u67D0\u67D0\u5802\u4F84' )) { if ($g08 -notmatch $required) { throw "G08 generic relationship guidance missing: $required" } } Write-Output 'GENERIC-GUIDANCE-COPY-CONTRACT PASS'