stop-dev.ps1(项目根目录):与既有 start-dev.ps1 配套的一键停止脚本。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;node_repl)与用户自己开的 cmd 窗口。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` 结束整树,不按进程名批量杀 |
.bat 位于工作区外(D:\桌面),**不入 git**;stop-dev.ps1 已入库,与 start-dev.ps1 配套。cmd /c ... > log 方式常驻:**关掉启动窗口会带走服务**(本次报错即由此而来)。日常用桌面「启动」入口双击即可恢复。5 条用例全部通过:启动脚本幂等跳过、停止脚本按 PID 整树结束并释放 8090/8080、
启停闭环后页面与接口均正常,且不影响 Codex 自身进程。两个编码问题(LF 换行、缺 BOM)已定位并修复复测。