From 66b1daca7087d40f96b3bb0456d11c5ef4f7c01d Mon Sep 17 00:00:00 2001
From: zhizhijie <zhizhijie@users.noreply.gitee.com>
Date: 星期六, 19 九月 2026 00:53:50 +0800
Subject: [PATCH] feat(运维): 新增 stop-dev.ps1 一键停止脚本 + 桌面启停入口文档(含编码坑修复记录)
---
stop-dev.ps1 | 57 +++++++++++++++++++
docs/工作日结/工作日结_2026-09-18.md | 16 +++++
docs/功能测试报告/功能测试报告_一键启停脚本与桌面入口_2026-09-19.md | 52 +++++++++++++++++
3 files changed, 124 insertions(+), 1 deletions(-)
diff --git "a/docs/\345\212\237\350\203\275\346\265\213\350\257\225\346\212\245\345\221\212/\345\212\237\350\203\275\346\265\213\350\257\225\346\212\245\345\221\212_\344\270\200\351\224\256\345\220\257\345\201\234\350\204\232\346\234\254\344\270\216\346\241\214\351\235\242\345\205\245\345\217\243_2026-09-19.md" "b/docs/\345\212\237\350\203\275\346\265\213\350\257\225\346\212\245\345\221\212/\345\212\237\350\203\275\346\265\213\350\257\225\346\212\245\345\221\212_\344\270\200\351\224\256\345\220\257\345\201\234\350\204\232\346\234\254\344\270\216\346\241\214\351\235\242\345\205\245\345\217\243_2026-09-19.md"
new file mode 100644
index 0000000..5235f9b
--- /dev/null
+++ "b/docs/\345\212\237\350\203\275\346\265\213\350\257\225\346\212\245\345\221\212/\345\212\237\350\203\275\346\265\213\350\257\225\346\212\245\345\221\212_\344\270\200\351\224\256\345\220\257\345\201\234\350\204\232\346\234\254\344\270\216\346\241\214\351\235\242\345\205\245\345\217\243_2026-09-19.md"
@@ -0,0 +1,52 @@
+# 鍔熻兘娴嬭瘯鎶ュ憡_涓�閿惎鍋滆剼鏈笌妗岄潰鍏ュ彛_2026-09-19
+
+## 涓�銆佸姛鑳借鏄�
+
+1. **鏂板 `stop-dev.ps1`锛堥」鐩牴鐩綍锛�**锛氫笌鏃㈡湁 `start-dev.ps1` 閰嶅鐨勪竴閿仠姝㈣剼鏈��
+ - 鎸夈�屽惎鍔ㄧ敤鐨� cmd 鐖惰繘绋嬨�嶆暣鏍戠粨鏉燂細`cmd.exe /c mvn.cmd ... spring-boot:run`銆乣cmd.exe /c npm.cmd run serve`锛�
+ 鐢� `taskkill /T /F` 杩炲甫瀛愯繘绋嬶紙maven java 鈫� app java锛沶pm node 鈫� cmd 鈫� vue-cli-service node锛夛紱
+ - 鍏滃簳鍐嶆寜鍛戒护琛岀壒寰佺簿纭尮閰嶅鍎胯繘绋嬶細`java.exe` 鍚� `TrafficAuditApplication`銆乣node.exe` 鍚� `vue-cli-service`锛�
+ - 缁撴潫鍚庢牎楠� 8090/8080 鏄惁宸查噴鏀撅紱
+ - 鏄庣‘涓嶇鍏跺畠 node/java 杩涚▼锛堝 Codex 鐨� `node_repl`锛変笌鐢ㄦ埛鑷繁寮�鐨� cmd 绐楀彛銆�
+2. **妗岄潰涓�閿叆鍙�**锛堝伐浣滃尯澶栵紝涓嶅叆搴擄級锛�
+ - `D:\妗岄潰\鍚姩浜ら�氬鏍哥郴缁�.bat`锛氳皟鐢� `start-dev.ps1`锛堝凡鍦ㄨ窇鍒欒烦杩囥�佷笉鍦ㄨ窇鍒欐媺璧峰苟绛夊緟灏辩华锛夛紝鏈�鍚庢墦寮� `http://localhost:8080`锛�
+ 甯﹀弬鏁� `nobrowser` 鍙彧鍚湇鍔′笉寮规祻瑙堝櫒銆�
+ - `D:\妗岄潰\鍋滄浜ら�氬鏍哥郴缁�.bat`锛氳皟鐢� `stop-dev.ps1`銆�
+
+## 浜屻�佹祴璇曠幆澧�
+
+| 椤� | 鍊� |
+| --- | --- |
+| 鏃ユ湡 | 2026-09-19 00:4x鈥�00:5x |
+| 椤圭洰 | `D:\鏂囨。\ChatGPT\traffic-audit` |
+| 鏈嶅姟 | 鍚庣 8090锛圫pring Boot锛夈�佸墠绔� 8080锛圴ue锛夈�丮ySQL 3308 |
+| 鑴氭湰缂栫爜 | `.ps1` = UTF-8 **with BOM**锛沗.bat` = **GBK(936) + CRLF**锛岄琛� `chcp 936` |
+
+## 涓夈�佺敤渚嬭〃
+
+| 缂栧彿 | 鐢ㄤ緥 | 杈撳叆/鎿嶄綔 | 棰勬湡 | 瀹為檯 | 缁撹 |
+| --- | --- | --- | --- | --- | --- |
+| T01 | 宸插湪杩愯鏃跺惎鍔紙姝e悜路骞傜瓑锛� | 鏈嶅姟鍦ㄨ窇鏃舵墽琛� `鍚姩浜ら�氬鏍哥郴缁�.bat nobrowser` | 璺宠繃鍚姩锛屼笉鏂板缓閲嶅杩涚▼ | 鎵撳嵃銆屽悗绔凡鍦ㄨ繍琛岋紙8090 鏈夌洃鍚級锛岃烦杩囧惎鍔ㄣ�傘�嶃�屽墠绔凡鍦ㄨ繍琛岋紙8080 鏈夌洃鍚級锛岃烦杩囧惎鍔ㄣ�傘�嶏紝闅忓悗鏍¢獙銆屽悗绔�: OK锛屽凡灏辩华銆嶃�屽墠绔�: OK锛屽凡灏辩华銆� | 鉁� 閫氳繃 |
+| T02 | 鏈繍琛屾椂鍚姩锛堟鍚戯級 | 鏈嶅姟宸插仠鏃舵墽琛� `鍚姩浜ら�氬鏍哥郴缁�.bat nobrowser` | 鎷夎捣鍓嶅悗绔苟绛夊緟灏辩华 | 鏂板缓鍚庣閾撅紙cmd PID 8964 鈫� java 鈫� app java锛変笌鍓嶇閾撅紙cmd PID 26024 鈫� node 鈫� cmd 鈫� node锛夛紱`backend.log` 鍑虹幇 `Tomcat started on port(s): 8090` 涓� `Started TrafficAuditApplication`锛�00:48:33锛� | 鉁� 閫氳繃 |
+| T03 | 鍋滄鏈嶅姟锛堟鍚戯級 | 鎵ц `鍋滄浜ら�氬鏍哥郴缁�.bat` | 涓や釜杩涚▼鏍戣缁撴潫锛岀鍙i噴鏀� | 鍚庣 5 涓繘绋嬨�佸墠绔� 5 涓繘绋嬭缁撴潫锛涙墦鍗般�岀鍙� 8090锛氬凡閲婃斁銆嶃�岀鍙� 8080锛氬凡閲婃斁銆� | 鉁� 閫氳繃 |
+| T04 | 鍚仠闂幆鍙敤鎬э紙姝e悜锛� | 鍋� 鈫� 鍚� 涔嬪悗璁块棶椤甸潰鎺ュ彛 | 鍓嶇 8080銆佸悗绔帴鍙e潎姝e父 | 鍓嶇 `HTTP 200`锛涘悗绔� `/api/import/batches` `HTTP 200`锛堣兘鍙栧埌鏈�杩戙�屽競宸炲崟琛ㄦ壒閲忓鍏ワ紙鐗╂祦锛堢墿娴佸洯鍖猴級/8鏈堬級銆嶆壒娆★級 | 鉁� 閫氳繃 |
+| T05 | 涓嶈鏉�锛堣礋鍚戯級 | 鎵ц鍋滄鑴氭湰鏈熼棿瑙傚療 Codex 鑷韩 | Codex 鍐呮牳 `node_repl` 涓庡叾瀹� cmd 绐楀彛涓嶅彈褰卞搷 | 鍋滄鑴氭湰浠嶅湪姝e父杩愯锛堟湰浼氳瘽宸ュ叿璋冪敤鏈腑鏂級锛屽叏绋嬫湭鍖归厤 `node_repl` | 鉁� 閫氳繃 |
+
+## 鍥涖�佸彂鐜扮殑闂涓庡缃�
+
+| 缂栧彿 | 闂 | 鏍瑰洜 | 澶勭疆 |
+| --- | --- | --- | --- |
+| P01 | 绗竴鐗� `.bat` 杩愯鏃跺ぇ閲忔姤 `'xx' is not recognized as an internal or external command`锛屼笖鍛戒护琛岃鎴柇锛堝 `'xecutionPolicy'`锛� | 鎵瑰鐞嗘枃浠跺繀椤讳娇鐢� **CRLF** 鎹㈣锛岄鐗堝啓鎴愪簡 LF锛宑md 閫愯瑙f瀽閿欎綅 | 鏀逛负鎸夎鏁扮粍 `-join "\`r\`n"` 鍐欏嚭锛屽娴嬫甯� |
+| P02 | 棣栫増 `stop-dev.ps1` 鎶� `UnexpectedToken`/銆屽瓧绗︿覆缂哄皯缁堟绗︺�嶏紝涓枃鎻愮ず琚鎴愪贡鐮� | Windows PowerShell 5.1 璇诲彇**鏃� BOM** 鐨� UTF-8 鑴氭湰鏃舵寜 ANSI(936) 瑙i噴锛屽瀛楄妭搴忓垪琚墦鏂� | 鏀瑰啓涓� **UTF-8 with BOM**锛堜笌鏃㈡湁 `start-dev.ps1` 涓�鑷达級锛屽娴嬫甯� |
+| P03 | 鍋滄鑴氭湰鎸夊悕绉版ā绯婂仠杩涚▼鏈夎鏉�椋庨櫓 | 鈥斺�� | 鍙寜銆屽惎鍔ㄧ敤鐨� cmd 鐖惰繘绋� + 绮剧‘鍛戒护琛岀壒寰併�嶅尮閰嶏紝`taskkill /T` 缁撴潫鏁存爲锛屼笉鎸夎繘绋嬪悕鎵归噺鏉� |
+
+## 浜斻�侀仐鐣欎笌璇存槑
+
+1. 涓や釜妗岄潰 `.bat` 浣嶄簬宸ヤ綔鍖哄锛坄D:\妗岄潰`锛夛紝**涓嶅叆 git**锛沗stop-dev.ps1` 宸插叆搴擄紝涓� `start-dev.ps1` 閰嶅銆�
+2. 鏈嶅姟浠嶄互 `cmd /c ... > log` 鏂瑰紡甯搁┗锛�**鍏虫帀鍚姩绐楀彛浼氬甫璧版湇鍔�**锛堟湰娆℃姤閿欏嵆鐢辨鑰屾潵锛夈�傛棩甯哥敤妗岄潰銆屽惎鍔ㄣ�嶅叆鍙e弻鍑诲嵆鍙仮澶嶃��
+3. 鑻ョ鍙f湭瀹屽叏閲婃斁锛堟瀬绔儏鍐碉級锛屽仠姝㈣剼鏈細鎻愮ず銆屼粛鍦ㄧ洃鍚紝璇烽噸璺戜竴娆°�嶃��
+
+## 鍏�佺粨璁�
+
+5 鏉$敤渚嬪叏閮ㄩ�氳繃锛氬惎鍔ㄨ剼鏈箓绛夎烦杩囥�佸仠姝㈣剼鏈寜 PID 鏁存爲缁撴潫骞堕噴鏀� 8090/8080銆�
+鍚仠闂幆鍚庨〉闈笌鎺ュ彛鍧囨甯革紝涓斾笉褰卞搷 Codex 鑷韩杩涚▼銆備袱涓紪鐮侀棶棰橈紙LF 鎹㈣銆佺己 BOM锛夊凡瀹氫綅骞朵慨澶嶅娴嬨��
\ No newline at end of file
diff --git "a/docs/\345\267\245\344\275\234\346\227\245\347\273\223/\345\267\245\344\275\234\346\227\245\347\273\223_2026-09-18.md" "b/docs/\345\267\245\344\275\234\346\227\245\347\273\223/\345\267\245\344\275\234\346\227\245\347\273\223_2026-09-18.md"
index e268d4e..5d70cc2 100644
--- "a/docs/\345\267\245\344\275\234\346\227\245\347\273\223/\345\267\245\344\275\234\346\227\245\347\273\223_2026-09-18.md"
+++ "b/docs/\345\267\245\344\275\234\346\227\245\347\273\223/\345\267\245\344\275\234\346\227\245\347\273\223_2026-09-18.md"
@@ -248,4 +248,18 @@
| 澶╅棬鐗╂祦婧愭枃浠� H/J/K 涓虹┖锛堝簱鍐� 0锛屽畾绋� 16677.7 / 500锛� | **寰呯敤鎴锋槑鏃ュ悜鍚屼簨绱㈠彇婧愭暟鎹�**鍚庡啀瀵煎叆 |
| 鑽嗗窞/榛勭煶銆岃鍒掑唴 / 瑙勫垝澶栥�嶆媶鍒嗗彛寰勪笌瀹氱涓嶅悓锛堝悎璁′竴鑷达級 | **寰呯敤鎴峰悜鍚屼簨纭鍙e緞** |
-> 鐢ㄦ埛 2026-09-19 00:5x 鍙嶉锛氥�屼粖澶╁厛鏃╃偣浼戞伅銆嶏紝浠ヤ笂涓夐」娆℃棩璺熻繘銆�
\ No newline at end of file
+> 鐢ㄦ埛 2026-09-19 00:5x 鍙嶉锛氥�屼粖澶╁厛鏃╃偣浼戞伅銆嶏紝浠ヤ笂涓夐」娆℃棩璺熻繘銆�
+
+### 6.6 鏂板涓�閿惎鍋滐紙2026-09-19 00:5x锛�
+
+- **鑳屾櫙**锛氱敤鎴峰弽鏄犻〉闈㈡姤銆屾暟鎹煡璇㈠け璐ワ紡瀵煎叆璁板綍鍔犺浇澶辫触銆嶃�傛牳鏌ヤ负鍚庣(8090)涓庡墠绔�(8080)杩涚▼閮藉凡閫�鍑�
+ 锛圡ySQL 姝e父锛宍SELECT 1` 閫氳繃锛夛紱鍘熷洜鏄湇鍔′互 `cmd /c ... > log` 鎸傚湪鍚姩绐楀彛涓嬶紝**鍏虫帀鍚姩绐楀彛灏辨妸鏈嶅姟甯﹁蛋浜�**銆�
+ 宸查噸鍚苟瀹炴祴 `/api/import/batches`銆乣/api/data/list` 鍧� HTTP 200銆�
+- **鏂板 `stop-dev.ps1`**锛堥」鐩牴鐩綍锛夛細鎸夈�屽惎鍔ㄧ敤鐨� cmd 鐖惰繘绋� + 绮剧‘鍛戒护琛岀壒寰併�嶆暣鏍� `taskkill /T /F`锛�
+ 鍏滃簳鍖归厤瀛ゅ効 `java(TrafficAuditApplication)` / `node(vue-cli-service)`锛岀粨鏉熷悗鏍¢獙 8090/8080 鏄惁閲婃斁锛�
+ 涓嶇 `node_repl` 涓庣敤鎴疯嚜宸辩殑 cmd 绐楀彛銆�
+- **鏂板妗岄潰鍏ュ彛**锛堝伐浣滃尯澶栵紝涓嶅叆搴擄級锛歚D:\妗岄潰\鍚姩浜ら�氬鏍哥郴缁�.bat`锛堝凡鍦ㄨ窇鍒欒烦杩囥�佷笉鍦ㄨ窇鍒欐媺璧凤紝甯� `nobrowser` 鍙傛暟鍙彧鍚湇鍔★級銆�
+ `D:\妗岄潰\鍋滄浜ら�氬鏍哥郴缁�.bat`銆�
+- **缂栫爜鍧戯紙宸蹭慨锛�**锛歚.bat` 蹇呴』 CRLF + GBK(936)锛堥鐗堝啓浜� LF锛宑md 瑙f瀽鎶ラ敊锛夛紱`.ps1` 蹇呴』 UTF-8 **with BOM**
+ 锛堥鐗堟棤 BOM锛孭S 5.1 鎸� ANSI 璇伙紝涓枃鎵撴柇瀛楃涓插鑷� `UnexpectedToken`锛夈��
+- **娴嬭瘯**锛氥�婂姛鑳芥祴璇曟姤鍛奯涓�閿惎鍋滆剼鏈笌妗岄潰鍏ュ彛_2026-09-19.md銆嬶紝5 鏉$敤渚嬪叏閮ㄩ�氳繃锛堝湪璺戣烦杩囷紡鏈窇鎷夎捣锛忓仠姝㈤噴鏀剧鍙o紡鍚仠闂幆鎺ュ彛 200锛忎笉璇潃锛夈��
\ No newline at end of file
diff --git a/stop-dev.ps1 b/stop-dev.ps1
new file mode 100644
index 0000000..6260c81
--- /dev/null
+++ b/stop-dev.ps1
@@ -0,0 +1,57 @@
+锘�<#
+ 涓�閿仠姝㈠墠鍚庣锛堜笌 start-dev.ps1 閰嶅锛�
+ 鐢ㄦ硶锛歱owershell -NoProfile -ExecutionPolicy Bypass -File stop-dev.ps1
+
+ 璇存槑锛�
+ - 鍙仠鏈」鐩浉鍏宠繘绋嬶細cmd.exe /c mvn.cmd ... spring-boot:run銆乧md.exe /c npm.cmd run serve锛�
+ 浠ュ強瀹冧滑鐨勫瓙杩涚▼锛坖ava / node / vue-cli-service锛夛紝鎸夎繘绋嬫爲 taskkill /T /F锛�
+ - 鍏滃簳鍐嶆寜鍛戒护琛岀壒寰佺簿纭尮閰� java(TrafficAuditApplication) 涓� node(vue-cli-service) 鐨勫鍎胯繘绋嬶紱
+ - 涓嶇鍏跺畠 node/java 杩涚▼锛堜緥濡� Codex 鐨� node_repl锛変笌鐢ㄦ埛鑷繁寮�鐨� cmd 绐楀彛锛�
+ - 缁撴潫鍚庢鏌� 8090/8080 鏄惁宸查噴鏀俱��
+#>
+$ErrorActionPreference = 'Continue'
+
+function Test-PortListening($port) {
+ try { return [bool](Get-NetTCPConnection -LocalPort $port -State Listen -ErrorAction Stop) }
+ catch { return $false }
+}
+
+function Stop-Tree($label, $procId) {
+ Write-Host ("{0}锛氬仠姝㈣繘绋嬫爲 PID={1}" -f $label, $procId)
+ & taskkill.exe /T /F /PID $procId 2>&1 | ForEach-Object { if ($_ -and $_ -notmatch '^SUCCESS') { " $_" } }
+}
+
+# ---------- 1) 鎸夈�屽惎鍔ㄧ敤鐨� cmd 鐖惰繘绋嬨�嶆暣鏍戠粨鏉� ----------
+$roots = @(
+ @{ Label = '鍚庣'; Pattern = 'spring-boot:run' },
+ @{ Label = '鍓嶇'; Pattern = 'npm.cmd run serve' }
+)
+$found = $false
+$cmdProcs = Get-CimInstance Win32_Process -Filter "Name='cmd.exe'" -ErrorAction SilentlyContinue
+foreach ($r in $roots) {
+ $hits = @($cmdProcs | Where-Object { $_.CommandLine -and $_.CommandLine -like ('*' + $r.Pattern + '*') })
+ if ($hits.Count -eq 0) { Write-Host ("{0}锛氭湭鍙戠幇鍚姩杩涚▼锛堝彲鑳藉凡鍋滄锛�" -f $r.Label); continue }
+ $found = $true
+ foreach ($h in $hits) { Stop-Tree $r.Label $h.ProcessId }
+}
+
+# ---------- 2) 鍏滃簳锛氬鍎� java / node ----------
+$orphans = @(
+ @{ Label = '鍚庣(java 鍏滃簳)'; Name = 'java.exe'; Pattern = 'TrafficAuditApplication' },
+ @{ Label = '鍓嶇(node 鍏滃簳)'; Name = 'node.exe'; Pattern = 'vue-cli-service' },
+ @{ Label = '鍓嶇(inner cmd 鍏滃簳)'; Name = 'cmd.exe'; Pattern = 'vue-cli-service serve' }
+)
+foreach ($o in $orphans) {
+ $hits = @(Get-CimInstance Win32_Process -Filter ("Name='" + $o.Name + "'") -ErrorAction SilentlyContinue |
+ Where-Object { $_.CommandLine -and $_.CommandLine -like ('*' + $o.Pattern + '*') })
+ foreach ($h in $hits) { $found = $true; Stop-Tree $o.Label $h.ProcessId }
+}
+
+if (-not $found) { Write-Host '娌℃湁鍙戠幇闇�瑕佸仠姝㈢殑鍓嶅悗绔繘绋嬨��' }
+
+# ---------- 3) 鏍¢獙绔彛 ----------
+Start-Sleep -Seconds 4
+foreach ($port in 8090, 8080) {
+ if (Test-PortListening $port) { Write-Host ("绔彛 {0}锛氫粛鍦ㄧ洃鍚紙鏈畬鍏ㄥ仠姝紝璇烽噸璺戜竴娆★級" -f $port) }
+ else { Write-Host ("绔彛 {0}锛氬凡閲婃斁" -f $port) }
+}
\ No newline at end of file
--
Gitblit v1.9.1