# 功能测试报告_部署包打包与独立启动_2026-09-13 ## 一、功能说明 用户需要把系统打包部署到另一台机器。本轮交付三件事: ### 1. 一键打包脚本 `package-deploy.py`(新增) 一条命令完成:前端构建 → 把 `dist` 内嵌进后端 jar(拷进 `src/main/resources/static`)→ `mvn clean package` → 清空 static(保持仓库干净)→ 组装部署目录 → 压缩 zip。 产物: - 目录 `deploy/traffic-audit-deploy-YYYYMMDD/` - 压缩包 `traffic-audit-deploy-YYYYMMDD.zip`(本次 69.9 MB / 246 个文件) 部署目录结构(沿用 8 月版包习惯): ``` backend/ jar(含内嵌前端)+ docs/ + application.yml + start-backend.cmd/.sh frontend/ dist/ + nginx.conf.example (仅 nginx 方案需要) db/ init.sql + sql_city_bus.sql + sql_city_taxi.sql + sql_wyc.sql README-部署说明.txt ``` ### 2. 修复 `JwtUtils`:`jwt.secret` 非法 Base64 导致登录 500(根因修复) - 现象(本次烟测实测):把外置 `application.yml` 的 `jwt.secret` 填成中文串后,登录接口返回 `500 {"code":500,"message":"20018"}`。 - 根因:jjwt 0.9.1 默认把 secret 当 **Base64** 解码,非法字符会在 `DatatypeConverter.guessLength` 抛 `ArrayIndexOutOfBoundsException`,被 `GlobalExceptionHandler` 兜成 500。部署同事第一次改配置很容易踩。 - 处置:`JwtUtils` 新增 `secretKeyBytes()`——能按 Base64 解码就用解码结果(与历史 token 兼容),否则按 UTF-8 字节处理并打 WARN。 ### 3. 更正《打包部署说明》(`docs/打包部署说明.md`) 旧版(2026-08-27)有三处与现状不符,本次一并改正: | 旧说明 | 实际情况 | 处理 | |--------|----------|------| | 「Redis 后端启动必需」 | pom 无 redis 依赖,代码也未使用 | 改为「不需要 Redis」,并去掉外置配置里的 redis 段 | | 「jar 已内置前端静态托管(file:./web/)」 | jar 内无任何静态文件,也没有 `static-locations` 配置;旧包实际靠 nginx | 改为「打包时把 dist 内嵌进 jar」,访问 8090 即可,无需 nginx | | 数据库只提 3 个脚本 | 现网还有 `wyc_total_monthly` / `wyc_order_monthly` 两张表 | 补 `db/sql_wyc.sql`,并补充 `summary.template-dir` 等配置与时序 | ## 二、测试环境 - 开发机:后端 8090(`start-dev.ps1`,重启后 PID 变化)、前端 8080、MySQL 127.0.0.1:3308。 - 部署包验证:把 `deploy/traffic-audit-deploy-20260913/backend` 拷到 `_deploytest/`,用 **8091** 端口独立启动 (数据库用命令行参数覆盖为 3308,模拟「外置 yml + 命令行覆盖」两种改配置方式)。 - 测试时间:2026-09-13;脚本:`package-deploy.py`、`_deploy_smoke.py`(结果 `_deploytest_result.txt`、`_deploytest_backend.log`)。 ## 三、用例表 ### 3.1 正向用例 | 编号 | 输入 | 预期 | 实际 | 结论 | | --- | --- | --- | --- | --- | | TC-1 | `python package-deploy.py --no-build` | 产出 zip,且无报错 | `traffic-audit-deploy-20260913.zip` 69.9 MB / 246 文件 | 通过 | | TC-2 | 检查 jar 内容 | 含内嵌前端 | jar 55.5 MB,`BOOT-INF/classes/static/` 下 42 个文件,`static/index.html` 存在 | 通过 | | TC-3 | 检查部署目录结构 | backend/frontend/db/README 齐全 | backend(jar + docs + application.yml + 2 个启动脚本)、frontend/dist、db 4 个 sql、README | 通过 | | TC-4 | 打包后源码目录 | `src/main/resources/static` 应被清空 | 打包结束自动清空(仓库无污染) | 通过 | | TC-5 | 从部署包独立启动(8091) | 启动成功 | 日志出现 `Started TrafficAuditApplication`、`Tomcat started on port(s): 8091` | 通过 | | TC-6 | `GET /` | 200 且返回页面 | 200,1828 字节,含 `