From 0acd500f0a2e2e34ff199472dd5575723afb6358 Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期日, 27 九月 2026 17:48:04 +0800
Subject: [PATCH] fix(汇总表母版): 157 格文本型数字改为数值(公交 AF/M 各68 + G 17、轨道轮渡 4);重新生成验证仅 68 格类型变化、值不变。并记录排名页块顺序/辅助列定位

---
 pack-deploy.ps1 |   98 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 98 insertions(+), 0 deletions(-)

diff --git a/pack-deploy.ps1 b/pack-deploy.ps1
new file mode 100644
index 0000000..42cc00d
--- /dev/null
+++ b/pack-deploy.ps1
@@ -0,0 +1,98 @@
+锘�<#
+  涓�閿墦鍖呴儴缃插寘锛堝惈"鍘诲瘑鑷"锛夆�斺�� 2026-09-27 鏂板
+  鐢ㄦ硶锛�
+    powershell -NoProfile -ExecutionPolicy Bypass -File pack-deploy.ps1
+    powershell -NoProfile -ExecutionPolicy Bypass -File pack-deploy.ps1 -OutRoot "E:\璇曢獙" -SkipFrontend
+  鍋氬洓浠朵簨锛�
+    1) mvn clean package 鏋勫缓鍚庣 jar
+    2) 瑙e帇 jar 妫�鏌ュ唴缃� application.yml锛氬繀椤诲叏鏄崰浣嶇锛堢姝� sk- 瀵嗛挜 / 鏄庢枃鍙d护锛夛紝涓嶅悎鏍肩洿鎺ヤ腑姝�
+    3) npm run build 鏋勫缓鍓嶇 dist锛堝彲 -SkipFrontend锛�
+    4) 缁勮 deploy 鐩綍缁撴瀯锛坆ackend / frontend / db / README-閮ㄧ讲璇存槑.txt锛夛紝杈撳嚭鍒� <OutRoot>\traffic-audit-deploy-<yyyyMMdd>
+#>
+param(
+  [string]$OutRoot = 'E:\璇曢獙',
+  [switch]$SkipFrontend
+)
+
+$ErrorActionPreference = 'Stop'
+$root = Split-Path -Parent $MyInvocation.MyCommand.Path
+$tplDir = Join-Path $root 'deploy-templates'                  # 鎵撳寘妯℃澘浠讹紙宸插叆搴擄紝2026-09-27 璧凤級
+$jarRel = 'traffic-audit-server\target\traffic-audit-server-1.0.0-SNAPSHOT.jar'
+$jar = Join-Path $root $jarRel
+
+Write-Host '[1/5] 鏋勫缓鍚庣锛坢vn clean package -DskipTests锛�...'
+Push-Location $root
+cmd /c "mvn.cmd -q clean package -DskipTests -f traffic-audit-server\pom.xml > pack-build.log 2>&1"
+$rc = $LASTEXITCODE
+Pop-Location
+if ($rc -ne 0) { throw '鍚庣鏋勫缓澶辫触锛岃瑙� pack-build.log' }
+if (-not (Test-Path $jar)) { throw "鏈壘鍒版瀯寤轰骇鐗╋細$jar" }
+Write-Host ("      浜х墿锛歿0:N1} MB" -f ((Get-Item $jar).Length / 1MB))
+
+Write-Host '[2/5] 鍘诲瘑鑷锛氳В鍘� jar 妫�鏌� BOOT-INF/classes/application.yml ...'
+Add-Type -AssemblyName System.IO.Compression.FileSystem
+$zip = [System.IO.Compression.ZipFile]::OpenRead($jar)
+try {
+  $entry = $zip.Entries | Where-Object { $_.FullName -eq 'BOOT-INF/classes/application.yml' }
+  if (-not $entry) { throw 'jar 鍐呯己灏� BOOT-INF/classes/application.yml' }
+  $sr = New-Object System.IO.StreamReader($entry.Open())
+  $text = $sr.ReadToEnd()
+  $sr.Close()
+} finally { $zip.Dispose() }
+
+$bad = @()
+if ($text -match 'sk-[A-Za-z0-9]{16,}') { $bad += '鐤戜技鏄庢枃 API key锛坰k-鈥︼級' }
+foreach ($line in ($text -split "`n")) {
+  if ($line -match '^\s*(password|api-key|secret)\s*:\s*(.+)$') {
+    $v = $matches[2].Trim().Trim('"')
+    if ($v -and -not $v.StartsWith('${')) { $bad += ("$($matches[1]) 涓嶆槸鍗犱綅绗�") }
+  }
+}
+if ($bad.Count -gt 0) {
+  throw ('鍘诲瘑鑷鏈�氳繃锛�' + ($bad -join '锛�') + '銆傝妫�鏌� traffic-audit-server\src\main\resources\application.yml')
+}
+Write-Host '      閫氳繃锛歫ar 鍐呯疆閰嶇疆鍏ㄩ儴涓哄崰浣嶇锛屾棤鏄庢枃瀵嗛挜/鍙d护銆�'
+
+Write-Host '[3/5] 鏋勫缓鍓嶇锛坣pm run build锛屽彲 -SkipFrontend 璺宠繃锛�...'
+if (-not $SkipFrontend) {
+  Push-Location (Join-Path $root 'traffic-audit-web')
+  cmd /c "npm.cmd run build > ..\pack-front.log 2>&1"
+  $rc2 = $LASTEXITCODE
+  Pop-Location
+  if ($rc2 -ne 0) { throw '鍓嶇鏋勫缓澶辫触锛岃瑙� pack-front.log' }
+  Write-Host '      鍓嶇 dist 宸查噸寤�'
+}
+
+Write-Host '[4/5] 缁勮閮ㄧ讲鐩綍...'
+$stamp = Get-Date -Format 'yyyyMMdd'
+$dest = Join-Path $OutRoot ("traffic-audit-deploy-" + $stamp)
+$n = 2
+while (Test-Path $dest) { $dest = Join-Path $OutRoot ("traffic-audit-deploy-" + $stamp + "-" + $n); $n++ }
+New-Item -ItemType Directory -Force -Path (Join-Path $dest 'backend'), (Join-Path $dest 'frontend'), (Join-Path $dest 'db') | Out-Null
+
+Copy-Item $jar (Join-Path $dest 'backend') -Force
+Copy-Item (Join-Path $tplDir 'backend\application.yml') (Join-Path $dest 'backend') -Force
+Copy-Item (Join-Path $tplDir 'backend\start-backend.cmd') (Join-Path $dest 'backend') -Force
+Copy-Item (Join-Path $tplDir 'backend\start-backend.sh') (Join-Path $dest 'backend') -Force
+Copy-Item (Join-Path $root 'traffic-audit-web\dist') (Join-Path $dest 'frontend') -Recurse -Force
+Copy-Item (Join-Path $tplDir 'frontend\nginx.conf.example') (Join-Path $dest 'frontend') -Force
+Copy-Item (Join-Path $tplDir 'db\*.sql') (Join-Path $dest 'db') -Force
+
+# docs锛氳繍琛屾椂妯℃澘 + 鐢ㄦ埛鏂囨。锛涙帓闄ゅ紑鍙戣繃绋嬫枃妗d笌缂撳瓨/澶囦唤锛堝噺灏忎綋绉�侀伩鍏嶆妸鍐呴儴娓呭崟甯﹀嚭鍘伙級
+$docsDest = Join-Path $dest 'backend\docs'
+New-Item -ItemType Directory -Force -Path $docsDest | Out-Null
+cmd /c "robocopy `"$root\docs`" `"$docsDest`" /E /NFL /NDL /NJH /NJS /NP /XD _cache 宸ヤ綔鏃ョ粨 鍔熻兘娴嬭瘯鎶ュ憡 闂姹囨�� /XF 鐢熸垚_*.xlsx _bak_* >nul"
+if ($LASTEXITCODE -ge 8) { throw "docs 澶嶅埗澶辫触锛坮obocopy 杩斿洖 $LASTEXITCODE锛�" }
+# db 鑴氭湰涔熸斁涓�浠藉埌 docs锛堜笌鏃у寘涓�鑷达細docs/init.sql 绛夛級
+Copy-Item (Join-Path $tplDir 'db\init.sql'), (Join-Path $tplDir 'db\sql_city_bus.sql'), (Join-Path $tplDir 'db\sql_city_taxi.sql'), (Join-Path $tplDir 'db\sql_wyc.sql') $docsDest -Force -ErrorAction SilentlyContinue
+
+# README锛氱敤鏃у寘妯℃澘骞舵浛鎹㈡棩鏈熷崰浣�
+$readme = Get-Content (Join-Path $tplDir 'README-閮ㄧ讲璇存槑.txt') -Raw -Encoding UTF8
+$readme = $readme.Replace('{stamp}', $stamp)
+Set-Content -LiteralPath (Join-Path $dest 'README-閮ㄧ讲璇存槑.txt') -Value $readme -Encoding UTF8
+
+Write-Host '[5/5] 姹囨��...'
+$files = Get-ChildItem $dest -Recurse -File
+Write-Host ("      杈撳嚭鐩綍锛歿0}" -f $dest)
+Write-Host ("      鏂囦欢鏁帮細{0}銆�鍚堣锛歿1:N2} MB" -f $files.Count, (($files | Measure-Object Length -Sum).Sum / 1MB))
+Write-Host '      鎻愰啋锛氭妸鍖呮嫹鍒伴儴缃叉満鍚庯紝鍙渶鏀� backend\application.yml 閲岀殑鏁版嵁搴撲笁澶� + 闇�瑕佹椂濉� deepseek.api-key銆�'

--
Gitblit v1.9.1