xyc
23 小时以前 54e10aee11aa4a10926df02782ca07d41eeb9b98
HANDOFF.md
@@ -4,7 +4,149 @@
> **每天结束时**:把当天进展、踩过的坑、新需求、未完成事项更新到本文件,然后可以放心开新对话。
> **协作约定(2026-08-31)**:说「提交」= 本地 commit + 推送到远端 git(origin main,Gitblit),不再只做本地 commit。
## 最新(2026-10-04)
## 最新(2026-10-06)
### 10-06:折线图纵向间距加高(验收通过)
- **用户背景**:客运量图线间距较好、标签摆放合理;其他多序列折线图因线距偏近,标签仍可能压线。用户同意适当增加图高,Word 只是取图来源,不要求当前分页为最终版,但图不能过高。
- **实现**:
  - `HolidayTrendChartService`:折线纵轴留白收紧为 `lowerMargin=0.04 / upperMargin=0.07`;`LINE_CHART_HEIGHT_SCALE=1.20`,所有折线 PNG 高度放大约 20%。
  - `HolidayTrendService`:12 张折线图的 Word 内嵌图片高度同步放大约 20%,保持 PNG 与 Word 图片框比例一致;饼图、堆叠图未改。
  - `HolidayTrendChartServiceTest`:新增折线图高度缩放断言。
- **验收**:用户于 2026-10-06 查看 `C:\Users\jcxiong\Downloads\2026年十一假期全省综合运输客流量走势图(折线加高20实验).docx` 后验收通过。
- **验证结果**:
  1. 15% 加高版在铁路客运量图 `image5` 检出 OCR 标签框重叠;20% 版 12 张折线图(`image1/2/4/5/6/7/8/9/10/11/14/15`)未检出标签框重叠。
  2. PNG 宽高比与 Word `wp:extent` 宽高比最大误差约 `0.162%`,未发生明显拉伸。
  3. Word 仍为 8 页、每页 2 张图(首页 1 张),与 15% 加高实验相同。
  4. 后端全量 `mvn -q test -f traffic-audit-server\pom.xml` 通过;`HolidayTrendChartServiceTest` 聚焦测试通过。
  5. 标签亲和度检查记录到 3 处标签框更靠近邻近线(`image1` 的 `1,518.02`、`image4` 的 `1,346.17`、`image9` 的 `248.65`);白描边保证可读,用户整体验收通过并保留该排版策略。
  6. `image13` 堆叠图有 4 处 OCR 标签重叠,但该图未参与本实验且代码未改。
- **数据边界**:未导入、覆盖或重导任何业务数据;仅本地只读生成走势图做实验。
### 10-06:平均拥挤度标签恢复为 2 位小数
- **调整**:按用户要求,“普通国省道观测站平均拥挤度”不再单独使用 3 位小数,恢复为折线图默认 2 位。
- **一致性**:由于折线图现已统一按显示标签精度绘制,10-04、10-05 的拥挤度都会显示并绘制为 `0.49`,不会再出现同标签不同高度。
- **验证**:后端全量 `mvn -q test -f traffic-audit-server\pom.xml` 通过。
### 10-06:折线图统一按显示标签精度绘制
- **口径(用户 2026-10-06 确认)**:同一张折线图中,同一个显示标签必须对应同一个点位高度;分析文字不得引用比该图显示精度更细的差异。
- **实现**:`HolidayTrendChartService.lineChart` 在所有原始统计计算完成后,于最终入图边界调用 `displayValue`;普通图按该图 `valueDecimals` 做 `HALF_UP` 舍入,百分比点标签按 1 位百分比精度(即原始小数 3 位)舍入。折线坐标和点标签共用同一舍入值,纵轴格式沿用该图精度。
- **边界**:只在最终图表显示层舍入,不改数据库、不改累计、快报、同比、环比或调整口径;该规则用于静态分析报告图,不能让文字引用图上无法分辨的微小差异。
- **验证**:`HolidayTrendChartServiceTest` 聚焦测试通过;后端全量 `mvn -q test -f traffic-audit-server\pom.xml` 通过。新增测试覆盖“两个不同原值按 2 位标签舍入后生成相同几何”和百分比精度换算。测试报告:`docs/功能测试报告/功能测试报告_折线图按标签精度绘制_2026-10-06.md`(本地留存,不入库)。
### 10-06:观测站平均拥挤度走势图改为 3 位小数
- **问题**:用户导入 10-05 观测站数据后反馈,最后一张拥挤度图中 10-04、10-05 标签都显示 `0.49`,但点位高度不同。
- **根因**:平均拥挤度原值分别为 `0.490890014472` 和 `0.492414492754`,折线按未取整原值绘制,标签原为最多 2 位小数,导致标签精度与图形精度不一致,不是日汇总或点位计算错误。
- **修正**:`HolidayTrendChartService.lineChart` 新增可选 `valueDecimals`,默认仍为 2;仅“普通国省道观测站平均拥挤度”图传 3 位。10-04、10-05 现在分别显示 `0.491`、`0.492`,其余图口径不变。
- **验证**:后端全量 `mvn -q test -f traffic-audit-server\pom.xml` 通过;重启后只读生成新 DOCX,OCR 标签为 `0.504/0.476/0.467/0.491/0.492`;与用户提供的文档逐图比对,15 张图中仅拥挤度图 `image15` 变化,其他 14 张 SHA-256 完全一致。测试报告:`docs/功能测试报告/功能测试报告_拥挤度走势图精度_2026-10-06.md`(本地留存,不入库)。
- **数据边界**:未导入、覆盖或重导任何业务数据。
### 10-06:往年国省道调整列表补充调整前值
- **改动**:调整列表接口在同一年份、同一日期、普通国省道口径下,从 `holiday_vehicle_flow` 补返回 `originalValue`;没有原始记录时保持空,页面不显示占位符。表格新增“调整前国省道车流量(万辆次)”,原“调整后国省道车流”改为“调整后国省道车流量”。
- **弹窗**:新增/编辑弹窗同步增加只读“调整前国省道车流量(万辆次)”;编辑已有记录时展示 `originalValue`,无原值或新选择日期时不显示内容。切换年份或日期会清空旧原值,避免错日展示。
- **随日期刷新**:新增接口 `GET /api/holiday/adjustments/source-value`,按所选年份和日期实时读取普通国省道原值;新增/编辑弹窗选日期后自动刷新,未查到源数据时显示为空。前端用请求序号丢弃迟到的旧请求,避免快速换日期时串值。
- **边界**:`originalValue` 只是列表展示字段,标记为 `@TableField(exist = false)`,不写库、不参与调整、环比分母、累计或走势图计算。
- **验证**:`mvn -o test` 11 个测试全部通过;`npm run build` 通过;本地重启后只读核对 2025-10-03/04/05 原值分别为 `362.0035/337.9501/334.2040`,无源数据的 2025-10-09 返回空。测试报告:`docs/功能测试报告/功能测试报告_往年国省道调整原值展示_2026-10-06.md`(本地留存,不入库)。
### 10-06:方案 D 已实现(往年国省道调整表 + 环比基期只作用于前一日分母)
- **最终口径**:`HolidayStatService.loadVehicleByDate` 先用 `holiday_vehicle_adjustment` 覆盖对应历史年份的“当日值”,供走势图、同比、累计和快报使用;随后构造“前一日环比分母”,若前一日普通国省道 C 列有值,则用 C 替换该日前一日国省道值,并据此重算非营业性人员流动量、公路人员流动量和总计。所有环比行只继承这份分母。
- **关键边界**:C 只影响“下一日的环比分母”,不影响 C 所在日的当日值、累计或走势图;调整表只维护历史年份(`year < 当前年份`),2026 年调整仍由导入 Excel 的 D 列进入当日值。
- **本轮实现**:新增 `holiday_vehicle_adjustment` 表及 mapper/service/controller;前端在专项统计-节假日页的“节假日数据”和“观测站分日调查数据”之间新增“往年国省道数据调整”卡片(后续按用户提议保持该位置),支持年份筛选、新增、编辑、删除和原因留痕;部署脚本与 migration 清单已同步。
- **10-04 导入预检(只读,不写库)**:用 `C:\Users\jcxiong\Downloads\2026年十一数据 (2).xlsx` 以 `allowHistoricalOverwrite=false` 调导入接口,返回确认项:
  - `第4日 2026-10-04 普通国省道:原值 323.6551,导入值 322.7695`
  - `第3日 2026-10-03 普通国省道环比基期:原值 空,导入值 320.2418`
  因此 C5 由空变有值不会硬拒绝导入,只会要求历史变更确认;用户确认后即可随调整后的 Excel 重导写入。
- **当前库状态**:本地 `traffic_audit.holiday_vehicle_adjustment` 已执行 DDL(0 行);2026-10-04 业务值仍为旧值 `323.6551`,等待用户自行重导调整后的 Excel。助手未执行任何业务数据导入、覆盖或重导。
- **验证**:后端 `mvn -o test` 9 个测试全绿(含 C5 只改 10-04 环比分母、历史调整进入 2025 当日值)、前端 `npm run build` 通过;页面实测“往年国省道数据调整”卡片与新增弹窗正常。
- **取整口径(用户 2026-10-06 确认)**:不做“从原始值一次取整”的备选。唯一要求是与 Excel 显示值一致:先按源 Excel 单元格格式生成显示值,再按快报统一 1 位小数。10-04 总计环比原始值约 `4.5481%`,源格显示 `4.55%`,快报取 1 位得到 `4.6%`;这属于既定口径,不是需要修正的边界问题。
> 说明:本文件早前“环比基期只作备用、不参与计算”的段落已作废。该版本针对的是旧实现误把 C 放到 C 所在日本身计算的问题;自方案 D 起,C 的正确语义是**前一日环比分母的调整值**。
### 10-06(已作废,见上方方案 D):普通国省道「环比基期」改为人工备用值(不再参与计算)
- **背景**:10-04 鄂州樊家庄站中小客流量断崖下跌(35419 -> 8856),领导要求剔除。手工稿快报的做法是:先用剔站后的数值算出 10-04 环比,把 10-03 国省道值挪到「环比基期」C 列备用,再把 10-03 恢复原值以免影响累计。用户明确口径:**「环比基期」只用于数据备用,不参与任何计算**。
- **旧行为(错)**:`HolidayStatService.nationalProvincialRingRatio` 在 2026 年只要 `comparison_base` 有值就按「当日 / 环比基期 - 1」算国省道环比;导出时 E 列写 `=(D{行}-C{行})/C{行}`。按手工稿的 C 列摆法(基期放在被比日那行),这样算还会错位(10-03 环比被算成 +1.11%)。
- **新行为(本次已改)**:国省道环比固定「当日 / 前一日 - 1」,2024/2025/2026 一致;`comparison_base` 只在导入/导出/页面展示时原样保存与回写,不参与环比、折算、累计。导出 E 列改为 `=(D{行}-D{上一日行})/D{上一日行}`,C 列照常回写备用值。
- **改动**:`HolidayStatService.java`(`nationalProvincialRingRatio` 去掉 year/comparisonBase 形参)、`HolidayWorkbookService.java`(新增 `ringRatioFormula`,导出按上一行同年 D 列)、`docs/database.md`(`comparison_base` 与计算口径两处)。
- **验证**:新增 `HolidayComparisonBaseTest`:① 库内存 `comparison_base=320.2418` 时,10-04 国省道环比仍按前一日 323.7837 计算,且不等于按基期算出的值;② 导出公式 = `=(D6-D5)/D5`。`mvn -o test` 全绿(4 个测试类)。
### 10-06:待确认——10-04 国省道剔站(鄂州樊家庄)怎么进系统
- **手工口径已逐项核对,与库内 `observation_station_flow` 完全对得上**:
  - 10-04 国省道值(2026/2025/2024)= 原值 − 樊家庄当日值 -> 322.7695 / 337.5009 / 322.5277 万辆次(樊家庄 8856 / 4492 / 2328)。
  - 10-04 环比分母 = 2026-10-03 原值 − 樊家庄 10-03 值 = 323.7837 − 3.5419 = **320.2418** 万辆次 -> 环比 = 322.7695/320.2418 − 1 = **+0.79%**。
  - 10-03 显示值与累计仍用原值 323.7837,被剔的 320.2418 只落到 C 列备用。
- **趋势结论(需先跟领导对齐)**:只剔樊家庄,10-04 国省道环比只有 **+0.79%**;同日高速小客车 **+9.78%**、铁路 +9.94%、民航 +11.69%、道路 +4.99%、水路 +4.33%。**剔一站填不平约 9 个百分点的趋势差**,与「让国省道和高速趋势一致」的预期并不相符,建议同时请鄂州核实原始记录。
- **待决策的代码方案**:因 `comparison_base` 已定为纯备用,系统无法从「当日值」反推剔站基期,需要另设机制。推荐新增「异常站剔除」配置(站点编号 + 生效日期 + 年份),算环比分母时用 `observation_station_flow` 的「该日站点合计 − 剔站值」作基期;显示值与累计仍用原值。
- **决策点**:① 做成可配置的通用「异常站剔除」(推荐,可复用于其他节假日/站点),还是只按本次 10-04 一次性处理;② 剔站只影响国省道环比分母,还是也要下沉到非营业性小客车/公路/全社会的环比(手工稿实际把 4.17% / 4.55% 也一起改了)。
## 最新(2026-10-05)
### 10-05 上午:关机快照(当前状态)
- **已完成**:v1.0.0 正式发布包 `deploy/traffic-audit-deploy-20261005-v1.0.0/`(zip **77.78 MB**)已生成,去密自检、版本自检、结构核对与真实启动冒烟均通过,待上传服务器。版本管理代码与文档均已提交推送(`main` = `93b36c8`)。
- **运行状态**:关机前本机 dev 服务仍在运行(后端 8090 java PID 64112、前端 8080 node PID 46472),随关机停止,无需处理;打包冒烟用的 8095 实例已停止、端口已释放。
- **工作区**:除若干本地临时文件(`_tmp_*`)与一份专项统计 xls 外,git 工作区与远端 `main` 一致;`docs/工作日结/`、`docs/功能测试报告/` 等按约定不入库。
- **下次接手**:先读根目录 `AGENTS.md` + 本文件;待办见第七节(数值精度统一改造、态势感知图、AI 助手 RAG、经济指标试算等),首要事项是跟进正式包在服务器的部署结果。
### 10-05 上午:正式发布包按新版本管理重新生成(v1.0.0,单端口瘦包)
- **背景**:`8b71049` 已把打包脚本改为固定 jar 名 + 版本自检(`traffic-audit-server.jar`、包名带 `v{version}`),但正式发布包还没按新脚本重新生成;版本改造前产出的 `deploy/traffic-audit-deploy-20261005-2/` 仍是旧 jar 名 `traffic-audit-server-1.0.0-SNAPSHOT.jar`。
- **重新生成**:`powershell -NoProfile -ExecutionPolicy Bypass -File pack-deploy.ps1 -NoFrontendDist -SkipServiceWrapper`(后端 clean package 重建、前端 `npm run build` 重建)。
- **产物**:`deploy/traffic-audit-deploy-20261005-v1.0.0/`(351 文件 / 94.58 MB),zip **77.78 MB**。
- **校验**:去密自检 + 版本自检通过(pom / `app-version.properties` / `MANIFEST.MF` 三者均 `1.0.0`);包内 `backend\traffic-audit-server.jar` 为固定名;无 `frontend/`、无 `trafficAudit.exe/.xml/install-service*`;`backend\web` 44 文件与 `frontend\dist` 逐文件 SHA-256 一致;`README-部署说明.txt` 头部为「20261005,版本 v1.0.0」并含旧服务器一次性升级说明。
- **启动冒烟(真实包、只读)**:用本地开发库配置在 8095 端口启动包内 jar,`GET /api/version` 返回 `{"version":"1.0.0",...}`,`GET /` 返回登录页 200;验证后已按 PID 58652 精确停止冒烟进程。
- **状态**:待用户上传服务器。`deploy/traffic-audit-deploy-20261005-2/`(及更早的 `20261005/`)作废勿用。旧服务器首次升级按 README:先改 `trafficAudit.xml` 的 `<arguments>` 为 `-Dfile.encoding=UTF-8 -jar "%BASE%\traffic-audit-server.jar"` 再换 jar,以后只替换 jar。
### 10-05:版本管理采用方案 A(固定 jar 名,用户验收通过)
- **用户决策**:采用方案 A。`traffic-audit-server/pom.xml` 为唯一版本源,当前对外版本 `1.0.0`。
- **构建改造**:`<finalName>traffic-audit-server</finalName>`,产物固定为 `target/traffic-audit-server.jar`;Maven 资源过滤生成 `app-version.properties`(Spring Boot 父 POM 使用 `@project.version@` 分隔符),`maven-jar-plugin` 写入 `Implementation-Version`。
- **页面显示**:新增免登录 `GET /api/version`;登录页和页头显示 `V1.0.0`。同时修复可执行 jar 下 `buildTime` 为 `null` 的嵌套 URI 解析问题。
- **发布链路**:服务 XML、启动脚本、打包脚本全部改用固定 jar 名;`pack-deploy.ps1` 会校验 pom / `app-version.properties` / `MANIFEST.MF` 三者版本一致,发布包名为 `traffic-audit-deploy-YYYYMMDD-v1.0.0(.zip)`,并输出带 `{version}` 的部署 README。
- **旧服务器首次升级(仅一次)**:停止服务后,把 `trafficAudit.xml` 的 `<arguments>` 改为 `-Dfile.encoding=UTF-8 -jar "%BASE%\traffic-audit-server.jar"`,替换 jar 后启动。以后发版只替换 jar 并重启,不再改 XML。
- **验证**:`mvn -o test`、`mvn -o clean package -DskipTests`、固定名 jar 实际启动并访问 `/api/version`、前端 `npm run build`、本地浏览器登录页显示 `V1.0.0`、`pack-deploy.ps1 -SkipFrontend -NoFrontendDist -SkipServiceWrapper` 组装/去密/版本自检全部通过;负向验证确认版本不匹配和 `SNAPSHOT` 都会在打包前中止。测试报告:本地 `docs/功能测试报告/功能测试报告_版本管理方案A_2026-10-05.md`(目录不入库)。
- **状态**:版本管理代码提交为 `8b71049`,`main` 已同步;`v1.0.0` 已推送到公司 Gitblit并指向 `21a5bf7`。2026-10-05 用户确认本地登录页及所有登录后页面均正确显示 `V1.0.0`。正式发布包已于 10-05 上午用新版打包脚本重新生成(见上方 10-05 上午一节)。
### 10-04 深夜:折线数值标签回到贴近本点(v35,待用户验收)
- **用户反馈**:v31「避开折线」版本不如上一版 v27 —— 虽然标签不压线了,但很多标签离自己的数据点太远,一眼看不出标的是哪个点。要求回到贴近本点的效果。
- **新问题与旧需求的冲突**:更早的原始诉求是「数字压线看不清」;这次诉求是「数字必须贴近本点」。两者并存,必须同时满足。
- **实现(`HolidayTrendChartService`)**:
  - 标签排版**完整回退到 v27 算法**:按同日点位距离做代价(`ownDistance ×10`),候选含近/远的上、下、左、右及四角,动态规划保证同日标签与点位上下顺序一致(`lineLabelCost`、`lineLabelCandidates`)。v31 的线条掩膜、Chamfer 距离场、颜色亲和项全部移除。
  - **新增粗白描边(halo)** 解决「压线看不清」:`drawLabelWithHalo` 用 `TextLayout` 取字形轮廓,先以白色 `HALO_OUTLINE_WIDTH=4.0f` 圆角描边,再用本色填充。数字即使落在折线上也清晰可读,从而允许标签贴回本点。折线图、堆叠图外置标签、饼图标签统一走该方法。
  - 顺带清理调试遗留:删除 `LABEL_DEBUG`/`CHART_SEQ`/`TRENDDBG` 打印,以及不再使用的 `lineNormal(...)` 与 `DayLabel.normalX/normalY`。
- **量化验证(RapidOCR 标签包围框中心 ↔ 真实数据点坐标)**:标签到本点平均距离 v27=`36.8px`、v31=`53.2px`、v35=`36.7px`(越小越贴近本点)。v35 与用户认可的 v27 基本一致,明显优于被否的 v31。
- **其余验证**:`mvn compile`/`mvn test` 通过(无编译告警遗留);Word COM 8 页 15 图(1+2×7);RapidOCR 复检 12 张折线图数值标签包围框重叠数 = 0;`label_affinity` 复检图 11 每个数据标签到本线 3~8px 且本线是最近线(无「CLOSER TO 其他色」);放大 6× 复核图 11 左上标签确为 `630.99`(低分辨率 OCR 曾误读为 `1630.99`)。v27↔v35 像素差约 1%,集中在标签处,即白描边生效且未破坏折线。
- **产物与状态**:`_tmp_holiday_verify/holiday_trend_2026-10-04_v35.docx`;下载副本 `C:\Users\jcxiong\Downloads\2026年十一假期全省综合运输客流量走势图(修改版-数字贴近折线-白边清晰).docx`。未导入、覆盖或重导任何数据。待用户验收;验收前不提交、不推送;现有 `deploy/traffic-audit-deploy-20261004.zip` 仍是 v24 行为,验收后需重建。
### 10-05:走势图 v35 验收通过 + 单端口发布包(-NoFrontendDist -SkipServiceWrapper)
- **验收**:v35(折线数值标签回到贴近本点 + 白描边)2026-10-05 用户验收通过。
- **打包需求(用户澄清)**:服务器单端口,只需要 `backend\web`,不要独立的 `frontend/dist`;为保证包完整,`backend\web` + jar + docs 都要。服务器非首次发布、服务已装,可加 `-SkipServiceWrapper` 去掉服务注册器。
- **打包工具修正**:先前加的 `-NoFrontend` 语义错了(把 `backend\web` 也去掉了),现改为 `-NoFrontendDist`。它只跳过独立 `frontend\` 目录(不复制 dist / nginx 示例),**仍构建(或要求)dist 并同步 `backend\web`**(单端口必需,否则页面 404)。`-SkipFrontend` 仍为“不重建、复用现有 dist”。
- **发布包**:`deploy/traffic-audit-deploy-20261005-2/`(351 文件 / 94.55 MB;zip **77.78 MB**)。已核对:无 `frontend/`、无 `trafficAudit.exe/.xml/install-service*`(服务包装器已排除);`backend\web` 44 文件与 `frontend\dist` 逐文件哈希一致;jar 内置配置全占位符(去密自检通过);包内 `HolidayTrendChartService.class` 与 `target/classes` 一致(含 v35 代码)。较上一完整包(110.49 MB / zip 83.77 MB)省约 16 MB 解压 / 6 MB 压缩。
- **作废**:`deploy/traffic-audit-deploy-20261005/`(错误语义下的产物,缺 `backend\web`)已被 `-2` 取代,勿用。
- **部署注意**:覆盖 jar(及按需 `application.yml`)即可;`backend\web` 已随包提供。服务已装,无需重新注册。
- **状态**:已打包,待用户上传到服务器;该包为版本改造前产物,已由 10-05 上午的 `traffic-audit-deploy-20261005-v1.0.0` 取代(勿用)。
### 10-04 深夜:折线数值标签避开折线并贴近本线(v31,待用户验收)
- **用户反馈(领导看后,两轮)**:① 各年份数字离本线有远有近,希望贴近各自色线且不错乱;② 仍有数字压在折线上看不清(第一轮只是“贴近”,标签会落在线上)。用户建议:调纵轴刻度拉开折线、或加左右避让让标签不压线。
- **实现(`HolidayTrendChartService`)**:
  - 标签排版改为「动态规划 + 线条像素避让」。图表先画折线和标记,再把所有系列颜色像素(容差 45)做成掩膜,对每个候选标签位置统计其覆盖的线条像素数,`×700` 重罚——数字不再压线。
  - 为每条系列建立 Chamfer 距离场(到该色最近像素的距离)。代价新增两项:`max(0, 自己那条线的距离-3)×40`(把标签拉回本线旁,防止飘远)与颜色亲和项 `max(0, 自己线距 - 别的线距 + 4)×200`(要求本线是最近的线,避免贴到别的系列)。
  - 旧的「离别的同日点位更近」惩罚由 `×5000` 降到 `×400`,避免它压倒亲和项;`ITEM_LABEL_GAP` 12→10;候选含近/远的上、下、左、右及四角。
  - 保留同日标签与数据点一致的上下顺序,避免标签与折线上下反转。
- **调参过程提示**:v27(只按点位距离排序)→ 标签压线;v28(只加覆盖像素惩罚)→ 标签离本线、贴到别的色线旁;v31(覆盖惩罚 + 本线距离 + 颜色亲和)→ 两者兼顾。验证标签是否“贴错线”不能只看 OCR 包围框到异色的距离:相邻的异色**标签**会被误判为异色**线**,必须肉眼核对整图。
- **验证**:`mvn test -f traffic-audit-server\pom.xml` 通过。真实库只读生成 `_tmp_holiday_verify/holiday_trend_2026-10-04_v31.docx`;Word COM 8 页 15 图(1+2×7)。RapidOCR 复检 15 张图数值标签包围框重叠数为 0。肉眼核对图 1(跨区域人员流动量)、图 2(累计)、图 4(自驾)、图 6(水路)、图 9(高速)、图 11(车流总量):数值标签均离开折线、位于各自色线旁、颜色对应正确;图 11 的 630.99/601.04/571.31 分别紧贴蓝/红/绿折线。
- **产物与状态**:`C:\Users\jcxiong\Downloads\2026年十一假期全省综合运输客流量走势图(修改版-数值标签避开折线).docx`。未导入、覆盖或重导任何数据。待用户验收,验收前不提交、不推送;现有 `deploy/traffic-audit-deploy-20261004.zip` 仍是 v24 行为,需验收后重建。
### 10-04 晚:走势图 3 项坐标轴调整(v24,用户已验收)
- **用户修改项**:① 坐标轴单位(万人次、万辆次、公里/小时、拥挤度、日期)改成和刻度一样的颜色;② 两个堆叠图的坐标轴改成与其他图一样的黑色;③ “万人次/占比”继续放在堆叠图右上角。
@@ -225,7 +367,7 @@
- **Excel 浮点精度(2026-10-02 追加)**:参考 `docs/Excel浮点数存储.txt`,新增 `HolidayNumberUtils`(`NumberToTextConverter.toText` + `BigDecimal`,`MathContext(15, HALF_UP)`);节假日模块由 `Double` 全面改 `BigDecimal`;三张表数值列改 `DECIMAL(30,15)`;库内 6 条客运系数由 2.3999999999999995 校正为 2.4。迁移脚本 `docs/sql_holiday_decimal_migration.sql`。
- **菜单顺序**:“专项统计”已移到“报表生成”之后,当前为 报表生成 -> 专项统计 -> 规则管理 -> 用户管理 -> 系统配置。
- **节假日删除复活修复(2026-10-02 追加)**:原初始化逻辑每次启动补齐缺失的第 N 日,导致 admin 删除 2026-10-08 后被重新插入;现改为仅 `holiday_calendar` 整表为空时首次初始化。重启后 2026 年十一保持 10-01 至 10-07 共 7 天。
- **普通国省道环比基期(2026-10-02 追加)**:普通国省道 C 列为可选环比基期,仅 2026 年启用;填写后只影响普通国省道车流量自身环比 `当日 / 基期 - 1`,未填写按前一日。`holiday_vehicle_flow.comparison_base` 已入库,导入导出与历史变更确认均已接入;折算人员流动量、总人员流动量和 Word 快报继续按 Excel 原公式,不受基期影响。2024/2025 不使用。
- **普通国省道环比基期(2026-10-02 追加,2026-10-06 方案 D 已修正)**:C 列语义最终确定为“下一日环比分母的调整值”;填写后只影响下一日的环比分母,不影响 C 所在日及累计、走势图。`holiday_vehicle_flow.comparison_base` 已入库,导入导出与历史变更确认均已接入。
- **快报首日口径(2026-10-02 追加)**:假期第1天没有前一日环比基数,正文不输出“环比增长/下降/持平”短语,表格当日环比列为“—”;第2天起仍按实际前一日输出环比。已用 2025-10-01/02 快报回归验证。
- **快报百分比精度(2026-10-02 追加)**:Word 快报中同比/环比百分比统一保留1位小数(如6.79%显示6.8%、11.46%显示11.5%);人次、车流等业务数值仍保留2位小数。
- **验证结果**:后端编译、前端构建、权限/CRUD/负向导入、历史变更两阶段导入、Excel 导出、Word 快报、前端 admin/非 admin 烟测均通过;菜单顺序、客运系数 2.4 展示(系统配置页 + 节假日统计页)、`decimal(30,15)` 列型、历史变更两阶段导入回归均已实测;功能测试报告与工作日结按 2026-09-27 提交规范仅本地留存(不入库):`docs/功能测试报告/功能测试报告_重要节假日专项统计_2026-10-02.md`、`docs/工作日结/工作日结_2026-10-02.md`。