| docs/功能测试报告/功能测试报告_一键启停脚本与桌面入口_2026-09-19.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| docs/工作日结/工作日结_2026-09-18.md | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| stop-dev.ps1 | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_Ò»¼üÆôÍ£½Å±¾Óë×ÀÃæÈë¿Ú_2026-09-19.md
New file @@ -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ï¼npm 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ï¼Spring Bootï¼ãå端 8080ï¼Vueï¼ãMySQL 3308 | | èæ¬ç¼ç | `.ps1` = UTF-8 **with BOM**ï¼`.bat` = **GBK(936) + CRLF**ï¼é¦è¡ `chcp 936` | ## ä¸ãç¨ä¾è¡¨ | ç¼å· | ç¨ä¾ | è¾å ¥/æä½ | 颿 | å®é | ç»è®º | | --- | --- | --- | --- | --- | --- | | T01 | å·²å¨è¿è¡æ¶å¯å¨ï¼æ£å·å¹çï¼ | æå¡å¨è·æ¶æ§è¡ `å¯å¨äº¤éå®¡æ ¸ç³»ç».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` | 两个è¿ç¨æ è¢«ç»æï¼ç«¯å£éæ¾ | å端 5 个è¿ç¨ãå端 5 个è¿ç¨è¢«ç»æï¼æå°ãç«¯å£ 8090ï¼å·²éæ¾ããç«¯å£ 8080ï¼å·²éæ¾ã | â éè¿ | | T04 | å¯åéç¯å¯ç¨æ§ï¼æ£åï¼ | å â å¯ ä¹å访é®é¡µé¢æ¥å£ | å端 8080ãå端æ¥å£åæ£å¸¸ | å端 `HTTP 200`ï¼å端 `/api/import/batches` `HTTP 200`ï¼è½åå°æè¿ãå¸å·å表æ¹éå¯¼å ¥ï¼ç©æµï¼ç©æµååºï¼/8æï¼ãæ¹æ¬¡ï¼ | â éè¿ | | T05 | ä¸è¯¯æï¼è´åï¼ | æ§è¡åæ¢èæ¬æé´è§å¯ Codex èªèº« | Codex å æ ¸ `node_repl` ä¸å ¶å® cmd çªå£ä¸åå½±å | åæ¢èæ¬ä»å¨æ£å¸¸è¿è¡ï¼æ¬ä¼è¯å·¥å ·è°ç¨æªä¸æï¼ï¼å ¨ç¨æªå¹é `node_repl` | â éè¿ | ## åãåç°çé®é¢ä¸å¤ç½® | ç¼å· | é®é¢ | æ ¹å | å¤ç½® | | --- | --- | --- | --- | | P01 | 第ä¸ç `.bat` è¿è¡æ¶å¤§éæ¥ `'xx' is not recognized as an internal or external command`ï¼ä¸å½ä»¤è¡è¢«æªæï¼å¦ `'xecutionPolicy'`ï¼ | æ¹å¤çæä»¶å¿ é¡»ä½¿ç¨ **CRLF** æ¢è¡ï¼é¦çåæäº LFï¼cmd éè¡è§£æéä½ | æ¹ä¸ºæè¡æ°ç» `-join "\`r\`n"` ååºï¼å¤æµæ£å¸¸ | | P02 | é¦ç `stop-dev.ps1` æ¥ `UnexpectedToken`/ãå符串缺å°ç»æ¢ç¬¦ãï¼ä¸ææç¤ºè¢«è¯»æä¹±ç | Windows PowerShell 5.1 读å**æ BOM** ç UTF-8 èæ¬æ¶æ ANSI(936) è§£éï¼å¤åèåºåè¢«ææ | æ¹å为 **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` æ¹å¼å¸¸é©»ï¼**å ³æå¯å¨çªå£ä¼å¸¦èµ°æå¡**ï¼æ¬æ¬¡æ¥éå³ç±æ¤èæ¥ï¼ãæ¥å¸¸ç¨æ¡é¢ãå¯å¨ãå ¥å£åå»å³å¯æ¢å¤ã 3. è¥ç«¯å£æªå®å ¨éæ¾ï¼æç«¯æ åµï¼ï¼åæ¢èæ¬ä¼æç¤ºãä»å¨çå¬ï¼è¯·éè·ä¸æ¬¡ãã ## å ãç»è®º 5 æ¡ç¨ä¾å ¨é¨éè¿ï¼å¯å¨èæ¬å¹çè·³è¿ãåæ¢èæ¬æ PID æ´æ ç»æå¹¶éæ¾ 8090/8080ã å¯åéç¯å页é¢ä¸æ¥å£åæ£å¸¸ï¼ä¸ä¸å½±å Codex èªèº«è¿ç¨ã两个ç¼ç é®é¢ï¼LF æ¢è¡ã缺 BOMï¼å·²å®ä½å¹¶ä¿®å¤å¤æµã docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-18.md
@@ -248,4 +248,18 @@ | 天é¨ç©æµæºæä»¶ H/J/K 为空ï¼åºå 0ï¼å®ç¨¿ 16677.7 / 500ï¼ | **å¾ ç¨æ·ææ¥ååäºç´¢åæºæ°æ®**ååå¯¼å ¥ | | èå·/é»ç³ãè§åå / è§åå¤ãæåå£å¾ä¸å®ç¨¿ä¸åï¼å计ä¸è´ï¼ | **å¾ ç¨æ·ååäºç¡®è®¤å£å¾** | > ç¨æ· 2026-09-19 00:5x åé¦ï¼ãä»å¤©å æ©ç¹ä¼æ¯ãï¼ä»¥ä¸ä¸é¡¹æ¬¡æ¥è·è¿ã > ç¨æ· 2026-09-19 00:5x åé¦ï¼ãä»å¤©å æ©ç¹ä¼æ¯ãï¼ä»¥ä¸ä¸é¡¹æ¬¡æ¥è·è¿ã ### 6.6 æ°å¢ä¸é®å¯åï¼2026-09-19 00:5xï¼ - **èæ¯**ï¼ç¨æ·åæ 页颿¥ãæ°æ®æ¥è¯¢å¤±è´¥ï¼å¯¼å ¥è®°å½å 载失败ããæ ¸æ¥ä¸ºå端(8090)ä¸å端(8080)è¿ç¨é½å·²éåº ï¼MySQL æ£å¸¸ï¼`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ï¼cmd è§£ææ¥éï¼ï¼`.ps1` å¿ é¡» UTF-8 **with BOM** ï¼é¦çæ BOMï¼PS 5.1 æ ANSI 读ï¼ä¸æææåç¬¦ä¸²å¯¼è´ `UnexpectedToken`ï¼ã - **æµè¯**ï¼ãåè½æµè¯æ¥å_ä¸é®å¯åèæ¬ä¸æ¡é¢å ¥å£_2026-09-19.mdãï¼5 æ¡ç¨ä¾å ¨é¨éè¿ï¼å¨è·è·³è¿ï¼æªè·æèµ·ï¼åæ¢éæ¾ç«¯å£ï¼å¯åéç¯æ¥å£ 200ï¼ä¸è¯¯æï¼ã stop-dev.ps1
New file @@ -0,0 +1,57 @@ <# ä¸é®åæ¢åå端ï¼ä¸ start-dev.ps1 é å¥ï¼ ç¨æ³ï¼powershell -NoProfile -ExecutionPolicy Bypass -File stop-dev.ps1 说æï¼ - åªåæ¬é¡¹ç®ç¸å ³è¿ç¨ï¼cmd.exe /c mvn.cmd ... spring-boot:runãcmd.exe /c npm.cmd run serveï¼ ä»¥åå®ä»¬çåè¿ç¨ï¼java / 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) } }