| | |
| | | |
| | | ## 最新(2026-10-03) |
| | | |
| | | ### 10-03 晚:重要节假日新模板(2019/前一日)适配 |
| | | - **模板变化**:`2026年十一数据.xlsx` 的道路表增加 2019 年及同比2019;铁路、民航增加“前一日”行;快报模板增加同比2024 列。旧模板已放在 `docs/专项统计/重要节假日/备份/`。 |
| | | - **数据库初始化**:启动时直接写入 2019 道路数据,以及 2024/2025/2026 年铁路、民航前一日数据;`holiday_calendar.day_index=0` 表示“前一日”,旧库启动会自动补齐已有年份的前一日配置行,且不覆盖管理员已维护的日期。 |
| | | - **正常导入口径**:只读取所选年份的当年列(2026 年铁路/民航/道路/水路为 C 列、高速为 C 列、普通国省道为 D 列);同时只额外读取当前年份铁路/民航的“前一日”行。2019/2024/2025 历史列不参与导入。 |
| | | - **快报口径**:同比只使用 2025、2024;假期第 1 日的铁路、民航环比使用“前一日”数据,公路、水路、总计及其他口径第 1 日仍显示“—”;第 2 日起正常计算环比。 |
| | | - **迁移脚本**:`docs/sql_holiday_previous_day_migration.sql`,部署包同步为 `deploy-templates/db/sql_holiday_previous_day_migration.sql`,脚本可重复执行。 |
| | | - **2019 显示补齐(10-03 晚追加)**:`holiday_calendar` 增加 2019-10-01 至 2019-10-08 配置;系统配置-节假日管理和专项统计-节假日均增加 2019 年份,历史库执行幂等迁移后即可查看 2019 年 8 天道路数据。 |
| | | - **验证(本机 3305 库 + 真实模板)**:接口导入结果 `passengerRows=10, vehicleRows=4, successRows=14, failRows=0`;数据库抽查 2026-09-30 铁路=82.1、民航=6.6994,2026-10-01 铁路=113.8、民航=6.7482、道路=78.82、水路=1.311,2026-10-02 铁路=82.0、民航=6.3914、道路=75.61、水路=3.3373;2026-10-01 快报铁路环比=+38.6%、民航环比=+0.7%,总行环比为“—”;2026-10-02 铁路环比=-27.9%、民航环比=-5.3%。 |
| | | - **运行状态**:后端 8090(重启后已加载新代码)、前端 8080 均在运行;访问 `http://localhost:8080`。 |
| | | |
| | | ### 10-03 深夜:快报表格百分比与模板样式修复(已验收) |
| | | - **问题**:生成快报表格使用“增长/下降”文字,数字拆行并多出 1 页;复核发现模板路径正确,根因是 `HolidayBulletinService#setCellText` 替换单元格时只保留段落属性,未保留模板 run 的字体/字号属性。 |
| | | - **口径**:表格环比/同比改为带符号一位小数(正数不加 `+`,负数保留 `-`),零或一位小数后为零显示 `0%`,缺失/基数为空或为零显示 `—`;正文继续使用“增长/下降”。 |
| | | - **修复**:单元格替换时继承模板 `rPr`;新增 `HolidayBulletinServiceTest` 覆盖正数、负数、零、四舍五入为零、缺失和零基数。 |
| | | - **验证**:Maven 编译和测试通过;重新生成 2026-10-01 快报,正文仍为“增长2.3%”且不含“增长了”;Word 导出由 2 页恢复为 1 页,数字不再拆行。最终样报见本地 `_tmp_holiday_verify/bulletin_final_signed_styled_2026-10-01.docx`。 |
| | | - **状态**:2026-10-03 用户验收通过;本次提交只包含代码、回归测试和本交接记录,不包含 `_tmp_*` 过程产物及用户未提交的数据文件重命名。 |
| | | |
| | | --- |
| | | |
| | | ### 补充(10-03 下午):服务器部署报 “Access denied ... (using password: NO)” —— 根因与修复 |
| | | - **现象**:把 `deploy/traffic-audit-release-20261002/` 部署到 `61.183.254.94` 后,后端启动报 `java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)`。 |
| | | - **根因**:jar 内置配置里库口令是占位符 `${TRAFFIC_DB_PASSWORD:}`(默认空串),而 10-02 那个包**只含 jar + web + dist**,没有外置 `application.yml`、没有 `docs/`、`db/`、启动脚本。部署机没有任何外部配置覆盖,Spring 就拿空密码连本机 MySQL → `using password: NO`(注意:这是“末传密码”,不是密码错)。 |
| | |
| | | - **未验证项(需在目标机做一次)**:本机当前不是管理员,**没真正 install 过服务**;开机自启、失败重启、日志滚动要在服务器上按 README 3.1 执行一次确认。 |
| | | - **新包(本地,不入库)**:`deploy/traffic-audit-deploy-20261003-3/`(393 文件 / 110.49 MB,zip 83.77 MB)。已验证:服务三件套在 `backend\`、包内 `trafficAudit.exe` SHA-256 与固定值一致、`backend\web` 与 `frontend/dist` 各 44 文件、jar 去密自检通过、无明文 key。**旧的 `traffic-audit-deploy-20261003/` 与 `-2/` 已被取代**,部署请用 `-3`(旧包待用户确认后再删)。 |
| | | - **运行状态(写本条时)**:开发用后端 8090(PID 43040)、前端 8080(PID 43152)均在跑;数据库 `127.0.0.1:3305/traffic_audit`。 |
| | | - **补充可操作性(用户反馈“backend 下文件太多,不知道怎么操作”)**: |
| | | - 新增双击入口 `deploy-templates/backend/install-service.cmd`:自动 UAC 提权 → 调 `install-service.ps1`;若找不到 `trafficAudit.exe` 则提示“必须整个 backend 一起拷”。 |
| | | - `install-service.ps1` 装完会自己探测端口(TCP 探测,兼容 PowerShell 2.0),打印 OK + 本机/对外网址;起不来时直接打印 `logs\*.log` 最后 15 行;若 `application.yml` 口令仍像占位符,最后再打一次醒目提示。 |
| | | - `README-部署说明.txt` 顶部新增【服务器上只要做这 3 步】+“哪些要拷/哪些不用拷”;`docs/打包部署说明.md` 的 5.4 改为“右键 `install-service.cmd` →以管理员运行”。 |
| | | - 三个 `.cmd` 模板统一为 CRLF(新增的两个原来是 LF,批处理在 Windows 上应用 CRLF)。 |
| | | - 实测:强制走“已提权”分支时 `cmd → install-service.ps1 -Status` 链路跑通、`%*` 传参正常;`Test-LocalPort` 对 8090 返回 True、对 8099 返回 False。 |
| | | - 新包:`deploy/traffic-audit-deploy-20261003-4/`(394 文件 / 110.50 MB,zip 83.78 MB)——**当前唯一可用包**。 |
| | | - **发布包清理(10-03 晚,用户确认“只留 -4”)**:已删除 `traffic-audit-release-20261002/`(+zip)、`traffic-audit-deploy-20261003/`(+zip)、`-2/`(+zip)、`-3/`(+zip) 及空的 `server-fix/`,`deploy\` 现在只有 `traffic-audit-deploy-20261003-4/` 和它的 zip(释放约 671MB)。 |
| | | > 因此本文件上面提到的 `deploy/traffic-audit-deploy-20261003/`(388 文件)与 `deploy/traffic-audit-release-20261002/` 均为**历史记录**,磁盘上已不存在,别再去找。 |
| | | - **紧急修复(10-03 晚):`install-service.ps1` 密码解析崩溃,服务根本没装上** |
| | | - 现象:用户在服务器(`D:\trafficAudit`)双击 `install-service.cmd`,报 `无法将“Trim”的参数“trimChars”转换为类型“System.Char”`,位置 `install-service.ps1:210`。 |
| | | - 根因:那行是 `.Trim(' ''', '"')`,其中 `' '''` 被 PowerShell 解析成一个**长度 2 的字符串**(空格 + 单引号),`Trim(char[])` 无法把 2 字符串转成单个 char → 整行抛异常(`MethodArgumentConversionInvalidCastArgument`)。 |
| | | - 修复:把这段抽成纯函数 `Test-AppConfigPassword`,改写为 `Trim()` → `Trim("'")` → `Trim('"')`;并加脚本级 `trap`,任何异常只打印一行说明 + 行号,不再甩红字堆栈。 |
| | | - 验证:8 个样本(缺文件 / 空值 / 中文占位符 / 裸值 / 双引号 / 单引号 / 含空格特殊字符 / 真实模板文件)全部符合预期;打包内脚本语法解析通过、`-Status` 实跑正常、非管理员时 trap 输出干净错误并 exit 1。 |
| | | - 教训:这条分支之前没被任何测试覆盖(`-Status` 提前 exit、非管理员在 `Assert-Admin` 就退出),所以解析类逻辑要抽成纯函数并用样本测。 |
| | | - 包名:修复版重打包时脚本复用了已释放的基础名,最终已删掉旧坏包并改名,`deploy\` 仍然是**唯一**的 `traffic-audit-deploy-20261003-4\`(含修复后的 install-service.ps1)与同名 zip。 |
| | | - 用户侧最小修复:只需用新包里的 `backend\install-service.ps1` 覆盖服务器 `D:\trafficAudit\install-service.ps1`,再重跑 `install-service.cmd`(不必重拷 110MB)。 |
| | | - **服务器部署成功(10-03 晚,用户确认)**:服务器(部署目录 `D:\trafficAudit`,把 backend 里的内容直接铺在该目录下)用修复后的 `install-service.cmd` 安装服务 `TrafficAuditBackend` 成功。 |
| | | - **已验证(用户确认)**:① 办公电脑浏览器能打开服务器页面(说明网络/防火墙这一层通,无需额外放行 8090);② **重启服务器后仍能从办公电脑打开页面 → 开机自启实测生效**(服务不依赖任何账号登录)。 |
| | | - **仍待做**:业务功能验收(登录 / 数据导入 / 报表导出 / Word 快报);确认 `application.yml` 的 jwt.secret 已换成正式随机值、预置 admin/admin123 已改密。 |
| | | - 防火墙放行(老系统也能用):`netsh advfirewall firewall add rule name="TrafficAudit 8090" dir=in action=allow protocol=TCP localport=8090` |
| | | - 装完后常用:`install-service.ps1 -Status / -Restart / -Remove`;日志在 `D:\trafficAudit\logs\trafficAudit.out.log`(错误看 `trafficAudit.err.log`)。 |
| | | |
| | | ## 最新(2026-10-02) |
| | | |