| | |
| | | > **每天结束时**:把当天进展、踩过的坑、新需求、未完成事项更新到本文件,然后可以放心开新对话。 |
| | | > **协作约定(2026-08-31)**:说「提交」= 本地 commit + 推送到远端 git(origin main,Gitblit),不再只做本地 commit。 |
| | | |
| | | ## 最新(2026-10-07) |
| | | |
| | | ### 10-07 关机快照 |
| | | |
| | | - **当前状态**:本轮仅做关机交接,无代码、测试口径或业务数据变更。上一任务“折线图纵向间距加高 20%”已于 10-06 验收,提交为 `54e10ae fix(holiday): 加大折线图纵向间距并同步 Word 尺寸`。 |
| | | - **Git**:`main` 的 `HEAD` 与 `origin/main` 均为 `54e10aee11aa4a10926df02782ca07d41eeb9b98`;无未提交的已跟踪文件,工作区仅有按约定不入库的 `_tmp_*` 临时目录/文件、`_tmp_pack_smoke_trend.docx` 和一份观测站原始 XLS。 |
| | | - **运行状态**:关机前本机 dev 前后端仍可访问(前端 8080、后端 8090 均返回 200);随计算机关机会自动停止,重启后按 `AGENTS.md` 用 `start-dev.ps1` 启动。 |
| | | - **本地留存**:折线图纵向间距的测试报告和工作日结已写入 `docs/功能测试报告/`、`docs/工作日结/`,均按约定不入库。 |
| | | - **下次接手**:先读根目录 `AGENTS.md` + 本文件;仓库级待办仍见第七节,本轮无新增待办。 |
| | | - **数据边界**:未导入、覆盖或重导任何业务数据。 |
| | | |
| | | ## 最新(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,用户已验收) |
| | | |
| | | - **用户修改项**:① 坐标轴单位(万人次、万辆次、公里/小时、拥挤度、日期)改成和刻度一样的颜色;② 两个堆叠图的坐标轴改成与其他图一样的黑色;③ “万人次/占比”继续放在堆叠图右上角。 |
| | | - **实现**:`HolidayTrendChartService` 把 `drawUnitLabel`、`drawUnitLabelTopRight`、`drawDateLabel` 的文字色由黑色改为刻度灰 `(102,102,102)`;横向堆叠图在数据区底边补画 `2.2px` 纯黑基线,覆盖 JFreeChart 默认偏灰的 1px 轴线和抗锯齿边缘,不添加箭头。折线图黑色坐标轴逻辑未改,堆叠图单位仍绘制在右上角。 |
| | | - **验证**:`mvn test -f traffic-audit-server\pom.xml` 通过。真实库只读生成 `_tmp_holiday_verify/holiday_trend_2026-10-04_v24.docx`;Word COM 实测 8 页、15 张图。像素检查:折线图左上单位、日期及堆叠图右上单位均为 `(102,102,102)`;图 12/13 底轴在 y=529 为纯黑连续线;普通折线图底轴仍为纯黑。 |
| | | - **产物与状态**:`C:\Users\jcxiong\Downloads\2026年十一假期全省综合运输客流量走势图(修改版-最新).docx` 当时被 Word/WPS 占用,已另存为 `C:\Users\jcxiong\Downloads\2026年十一假期全省综合运输客流量走势图(修改版-最新-坐标轴调整).docx`;原“最新”文件未覆盖。未导入、覆盖或重导任何数据。2026-10-04 用户已验收通过,随本次提交推送。 |
| | | |
| | | ### 10-04 晚:走势图 4 项修改(v23,待用户验收) |
| | | |
| | | - **用户修改项**:① 折线数值标签与折线上下顺序反了(累计流动量图:蓝线在上、标签却在下;第一张图首日最高是蓝点、最近的标签却是棕色);② 公路出行结构图例把自驾放前面(棕色),与每日客流构成一致;③ 横坐标应为万人次/占比(数值轴放到底部)、去掉纵轴线与箭头;④ 每日客流构成恢复 5 条(自驾/道路/铁路/民航/水路),占比小的数字标在色块右边、用颜色区分。 |
| | | - **实现**: |
| | | - `HolidayTrendChartService.drawXYItemLabels` 重写:先把同一日期各系列按点位 y 从上到下排序,标签再按该顺序从上往下摆(下界为前一个标签底部 +3),**从而不会出现标签与折线上下反转**;避让权重改为「标签重叠 × 1000 + 数据点重叠 × 1」,并删除原来会把标签一路推到图表下方的非白像素惩罚项(`nonWhiteRatio`)。 |
| | | - 横向堆叠图:`plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT)` 把数值轴放到底部(万人次 / 占比 就是横坐标);`domainAxis.setAxisLineVisible(false)` + `setTickMarksVisible(false)` 去掉纵轴线和刻度;`render` 对横向堆叠图不再画坐标轴箭头;单位改到右上角(`drawUnitLabelTopRight`)。 |
| | | - 堆叠图块内放不下的小数字,改为在色块右侧用同色文字标注(同一行按色块位置排成一列,列 x 取该行最右色块端 +8,并限制在预留 74px 右边距内);放得下仍用白字写在块内。 |
| | | - `HolidayTrendService.roadStructureSeries` 顺序改为 自驾出行量(棕)、道路客运量(蓝);`dailyShareSeries` 恢复 自驾/道路/铁路/民航/水路 5 条,删除上一轮临时合并用的 `sumNullableLists`。 |
| | | - **验证**:`mvn test -f traffic-audit-server\pom.xml` 通过;v23 Word COM 实测 8 页(1+2×7,15 张图)。RapidOCR 复检 12 张折线图无标签重叠;逐日比对标签颜色顺序与折线点位顺序一致(累计图 10月4日 点位 2025 在上/2024 在下,标签同样 2025 在上、2024 在下;修改前 v20 恰好相反);首图 10月1日最高点(蓝色 2025)的数值标签就在该点位正上方。图 12 图例为「自驾出行量·道路客运量」,数值轴在底部 0–12,000,单位万人次在右上角,无箭头、无纵轴线;452/228 以蓝字标在蓝块右侧,648 白字在块内。图 13 图例恢复 5 项,87.8% 等大占比白字在块内,道路/民航/水路等小占比以同色数字标在右侧一列。 |
| | | - **数据操作与状态**:未导入、覆盖或重导任何数据。最终文件已覆盖到 `C:\Users\jcxiong\Downloads\2026年十一假期全省综合运输客流量走势图(修改版-最新).docx`;待用户验收,验收前不提交、不推送。 |
| | | |
| | | ### 10-04 傍晚:走势图 5 项微调(v20,待用户验收) |
| | | |
| | | - **用户修改项**:① 纵轴单位仍与纵轴重叠,继续上移;② 第 1 页除标题外全空白,需放 1 张图到第 1 页;③ 横纵坐标刻度与图例偏黑,稍微调淡;④ 饼图标签颜色改为与扇区一致;⑤ 两个堆叠图效果仍不好,块做大、数字写进块里。 |
| | | - **实现**:`HolidayTrendChartService` 为坐标类图表预留 `UNIT_LABEL_BAND=58px` 的顶部空白(`reserveUnitLabelBand` 调 `plot.setInsets`),单位标签基线改为 `dataArea.getY()-22`,彻底脱离轴线与最高刻度;刻度/图例文字色由 (70,70,70) 调淡为 (102,102,102),坐标轴线与箭头仍为黑色;饼图标签(含引线框内文字)通过 `TextFragment` 反射改为对应扇区色;堆叠图维持横向,`categoryMargin 0.08->0.05`、`itemMargin 0.05` 让色块变厚,块内放得下就用 17px 白字写在块内,放不下才用同色引线拉到块外;折线数据标签左侧最小留白 `dataArea.minX+16`,避免紧贴纵轴刻度。 |
| | | - **验证**:`mvn test -f traffic-audit-server\pom.xml` 通过。真实库只读生成 `_tmp_holiday_verify/holiday_trend_2026-10-04_v20.docx`(571 KB,15 张图);Word COM 实测 8 页,第 1 页标题+1 张图,第 2-8 页各 2 张图,无空白页。RapidOCR 复检 12 张折线图文字包围框重叠数为 0;单位“万人次/占比”与最高刻度、轴线已分离(图 1 单位 y=17..44、顶部刻度 y=53..77);堆叠图 12 的 452/8,595、648/10,410、228/3,962 与堆叠图 13 的 87.8%/7.4% 均在块内,个别过窄的 4.8% 用同色引线拉到块外;饼图标签颜色与扇区一致(铁路绿、民航紫、道路蓝、水路青)。 |
| | | - **口径变化提醒**:图 13「每日客流构成变化」(附录一)由原先 5 条(自驾/道路/铁路/民航/水路)合并为 3 条(自驾/道路/其他方式=铁路+民航+水路),目的是让色块足够宽、数字能写进块内;正文 5 种运输方式走势图未受影响。 |
| | | - **数据操作与状态**:未导入、覆盖或重导任何数据。最终文件已覆盖到 `C:\Users\jcxiong\Downloads\2026年十一假期全省综合运输客流量走势图(修改版-最新).docx`;待用户验收,验收前不提交、不推送。 |
| | | |
| | | ### 10-04 下午(3):走势图 8 项修改(待用户验收) |
| | | |
| | | - **用户修改项**:纵轴单位上移避开箭头;删除附录二同比走势;同日期的三年折线点恢复垂直对齐;图表标题去掉“2026年”;“观测站”改为“普通国省道观测站”;堆叠图小占比改为柱外引线标注;文档改为每页 2 图;图例“道路营业性客运量”改为“道路客运量”、“非营业性自驾折算客流”改为“自驾出行量”。 |
| | | - **实现**:`HolidayTrendChartService` 恢复所有年份同一 x 坐标,纵轴单位绘制在数据区上方,堆叠图小占比使用同色引线拉到柱外;折线数值标签改为对其他数值标签设置极高避让优先级,白描边保留。`HolidayTrendService` 删除附录二同比 2 图,原附录三顺延为附录二,并更新标题和图例文字,当前共 15 张图。`HolidayTrendWordService` 封面后强制分页,取消章节标题后的多余空段,再按每 2 图自动分页。 |
| | | - **验证**:`mvn test -f traffic-audit-server\pom.xml` 通过。真实库只读生成 `_tmp_holiday_verify/holiday_trend_2026-10-04_v17.docx`;Word COM 实测 9 页,封面单独第 1 页,第 2–8 页均为 2 张图,最后 1 张图单独第 9 页,无空白页。RapidOCR 复检 12 张折线图的数值标签重叠数为 0;堆叠图图 12、13 的小占比数字均可见;图 3“水路 0.23%”仍在右侧;图例已识别为“道路客运量”“自驾出行量”,图表标题中不再出现“2026年”。 |
| | | - **数据操作与状态**:未导入、覆盖或重导任何数据。最终验收文件已复制到 `C:\Users\jcxiong\Downloads\2026年十一假期全省综合运输客流量走势图(修改版-最新).docx`(原“修改版”文件当时被 WPS 占用,未覆盖);待用户验收,验收前不提交、不推送。 |
| | | |
| | | ### 10-04 下午(2):走势图标签、折线间距与横坐标准确性修正(待用户验收) |
| | | |
| | | - **用户反馈**:饼图“水路”引线难辨认需固定到右侧;堆叠图要显示数值;图例改黑色放大;横轴“日期”上移;纵轴单位放到箭头上方;坐标轴和刻度改黑色并放大;折线加粗、尽量拉开;修复横轴错位一天;折线数值标签要与折线同色,并检查标签重叠。 |
| | | - **修复**:`HolidayTrendChartService` 饼图子类改为在 JFreeChart 已分好的左右标签集合中把“水路”从左集合移到右集合;折线宽度由 4px 调至 6px,多序列按 ±0.08 做轻微横向错开;关闭 JFreeChart 默认折线标签,改为逐点自定义排版:按上/下/远上/远下/左/右候选位置避让已放标签和数据点,并对单位区域留空;标签使用对应折线颜色并加白色描边。横轴错位根因是原 `XYSeries.add(i + 1, ...)` 与 `SymbolAxis` 实际整数位置 `0..7` 不一致,已改为 `add(i, ...)`。 |
| | | - **验证**:`mvn test -f traffic-audit-server\pom.xml` 通过;真实库只读生成 `_tmp_holiday_verify/holiday_trend_2026-10-04_v14.docx`。RapidOCR 复检 14 张折线图,数值标签包围框重叠数为 0,未再识别出两个数值粘连;三年折线每图均识别出 2026 年 3 个、2025 年 8 个、2024 年 7 个,共 18 个数值标签,颜色计数为红 3、蓝 8、绿 7。饼图“水路 0.23%”位于右侧(OCR 中心 x≈801.5),其他小占比标签在左侧;堆叠图数值可见。10 月 1 日轴刻度 x≈123.5,首日数据点已落在第一格。 |
| | | - **数据操作与状态**:未导入、覆盖或重导任何数据。新版已复制到 `C:\Users\jcxiong\Downloads\2026年十一假期全省综合运输客流量走势图(修改版).docx`;待用户验收,验收前不提交、不推送。 |
| | | |
| | | ### 10-04 中午:走势图外观按模板重制(待用户验收) |
| | | |
| | | - **用户反馈的 7 项问题**:章节标题重复、图比模板大、字小线细、网格和浅灰背景、坐标轴无箭头且单位位置不符、纵轴范围不合适、饼图小占比标签应拉到圆外。 |
| | | - **修复**:`HolidayTrendWordService` 克隆章节时移除模板自动编号;每张图按模板对应尺寸设置 `wp:extent` 和内部 `a:ext`,并移除模板旧 `srcRect`。`HolidayTrendChartService` 改为纯白背景、无网格/无交替灰色带、黑色坐标轴带箭头、左上方水平单位、右下角日期;折线字号按 Word 纸张实际显示尺寸放大、加粗线宽和点径;纵轴不强制从 0 开始并按数据上下留白;百分比堆积图固定 0%-100%;饼图关闭 `simpleLabels`,使用外部标签和引线。 |
| | | - **验证**:`mvn test` 全部通过,新增图表浅灰背景与 Word 编号/尺寸回归断言;前端 `npm run build` 通过(仅原有 bundle 体积警告)。真实库生成最终稿 `C:\Users\jcxiong\Downloads\2026年十一假期全省综合运输客流量走势图(修改版).docx`,Word COM 实测 9 页、17 张图;程序检查全部 `gray243=0` 且 6 个章节段 `numPr=false`,图片尺寸与模板 7 种目标框一致。最终版 PNG 按模板显示框宽高比输出(不再被 Word 拉伸变形),刻度/图例 18px、数据标签 20px、单位 22px,线宽 4px。 |
| | | - **数据操作**:全程只读,未导入、覆盖或重导任何数据。状态:待用户验收,验收后再提交/推送。 |
| | | |
| | | ### 10-04 下午:新增节假日综合运输客流量走势图初版(外观已按反馈重制) |
| | | |
| | | - **需求口径(用户 2026-10-04 确认)**:走势图分 12 张正文 + 附录;领导原话为“各种运输方式客流量走势图,高速和国省道车流量走势图”。最终正文分为三部分:`一、总体情况`(当日总客流、累计总客流、运输方式占比);`二、各种运输方式客流量走势`(自驾、铁路、水路、民航、道路,共 5 种方式);`三、车流量走势`(高速、普通国省道、车流总量、公路出行结构)。附录分为每日客流构成变化、同比走势、观测站路网运行。自驾作为运输方式之一,使用非营业性自驾折算客流,单位万人次;高速/普通国省道/车流总量单位万辆次。 |
| | | - **实现**:新增 `HolidayTrendService`、`HolidayTrendChartService`、`HolidayTrendWordService` 和 `ObservationDailyOperation`,使用 JFreeChart 生成 17 张 PNG;Word 仍以 `docs/专项统计/重要节假日/2026年十一假期全省综合运输客流量走势图.docx` 为模板,重建正文、保留模板页眉页脚和图片尺寸,替换/追加媒体并重建图片关系。新增后端接口 `GET /api/holiday/trend?year=2026&holidayType=NATIONAL_DAY`;前端节假日统计页新增“下载走势图”按钮。 |
| | | - **数据与口径**:2024/2025/2026 三年,横轴固定 8 天;2024、2026 无第 8 天数据时留空,2025 显示第 8 天。累计曲线只连接实际已有日期,缺日不延续最后累计值。观测站附录按 2026-10-01 至 10-08 查询每日平均机动车速度和平均拥挤度;2026 当前覆盖 10-01/02/03。 |
| | | - **验证**:`mvn test` 全通过;前端 `npm run build` 成功(仅 bundle 体积原有警告)。真实库数据生成 `_tmp_holiday_verify/holiday_trend_2026-10-04_v3.docx`,Word 统计 12 页、17 张图;下载接口返回约 399 KB DOCX。未执行任何数据导入、覆盖或重导。 |
| | | - **未跟踪项**:走势图模板和 `_tmp_holiday_verify/` 仍为未跟踪文件;本地可运行,若后续提交/部署需把模板纳入部署包或仓库。状态:外观问题已由本日中午段修复,最终稿待用户验收。 |
| | | |
| | | ### 10-04 上午:10 月 3 日数据导入并生成快报 |
| | | |
| | | - **源文件**:`D:\03_公司\02_项目\27_湖北省道路运输事业发展中心\10_业务\99_专项统计\01_重要节假日\2026\十一\10月3日\2026年十一数据10月3日.xlsx`(2026-10-04 10:11 更新);观测站原始数据为同目录 `观测站分日调查数据2026.10.3.xls`。 |
| | | - **导入过程(修正)**:用户先于 10:13:34 导入主数据;助手随后在 10:17:41 又用同一文件重复导入了一次。接口返回 `passengerRows=14, vehicleRows=6, skippedRows=24, successRows=20, failRows=0`,未检测到 10 月 1、2 日历史数据变化。唯一键命中后仅更新 `updated_at`,没有新增重复行。 |
| | | - **10 月 3 日入库值**:铁路 72.4、民航 5.7571、道路 73.12、水路 5.5668 万人次;高速 193.3634、普通国省道 323.7837 万辆次;合计人员流动量 1397.99694 万人次。 |
| | | - **观测站数据(修正)**:用户先导入;助手重复导入时按同日覆盖重插,当前 2026-10-03 为 691 行 / 691 个唯一键,无重复;中小客流量合计 3,237,837 辆次(323.7837 万辆次),与普通国省道入库值一致。 |
| | | - **快报**:已生成 `C:\Users\jcxiong\Downloads\湖北省国庆假期综合运输客流快报(10月3日).docx`。正文:当日 1398.00 万人次,环比下降 3.3%,同比 2025 下降 10.1%,同比 2024 下降 5.0%;累计 4486.63 万人次,同比 2025 下降 6.3%,同比 2024 下降 2.7%。 |
| | | - **人工稿比对(10-04 更新)**:手工稿与系统修正版提取文本逐行一致;系统原版仅有两处累计数差异,已随本次代码修正消除。今日走势图功能暂停。 |
| | | |
| | | ### 10-04 上午(2):快报累计数按 Excel 亿单位显示精度后再换算 |
| | | |
| | | - **问题**:系统原版与手工稿仅两处差异:非营业性小客车累计 `3961.76` 应为 `3961.77`;公路合计累计 `4189.31` 应为 `4189.32`。 |
| | | - **根因**:源表 `人员流动量汇总!X5/AA5`(总计对应 `U5`)存的是亿单位,单元格格式为 `0.0000000_`。人先看到 7 位小数的显示值,再换算成万人次并保留 2 位;旧代码直接拿原始累计值换算后取 2 位,漏掉了 Excel 显示这一步。 |
| | | - **修复**:`HolidayBulletinService` 新增 `displayedCumulativeWan(...)`,先按源单元格 7 位小数取整,再乘 10000,最后按快报 2 位输出;应用于总计、非营业性小客车、公路合计三处累计数。 |
| | | - **验证**:新增单测覆盖 `3961.76472 -> 3961.77`、`4189.31472 -> 4189.32`、`4486.62652 -> 4486.63`;`mvn test` 全通过。重启后基于现有库重新生成 10 月 3 日快报,与手工稿提取文本逐行比对结果为 `NO DIFFERENCES`。本次未执行任何数据导入。 |
| | | - **产物**:`_tmp_holiday_verify/bulletin_cumulative_display_2026-10-03.docx`。 |
| | | - **状态**:待用户验收/提交;走势图功能仍暂停。 |
| | | |
| | | ### 10-04 上午(3):快报其余 Excel 显示精度路径审计 |
| | | |
| | | - **审计范围**:逐项映射快报正文和表格的所有数值来源,核对源工作簿的实际单元格格式、Excel 显示值和代码传入的显示精度。 |
| | | - **结论**:除已修复的累计值 `U/X/AA` 外,没有发现其他未处理的快报取值路径。源表直接参与快报的 `0.00%` 单元格共 11 处:`人员流动量汇总` D/P/J、V/W/Y/Z/AB/AC,道路 H(同比2024年),水路 D(当日环比);代码均先按源格式取 2 位,再按快报 1 位处理。 |
| | | - **补修边界**:道路 H 原按 1 位源格式处理,10 月 3 日碰巧仍为 `6.6%`;改为先按 `0.00%` 得到 `6.62%` 后再取 1 位,边界值不会差 0.1 个百分点。 |
| | | - **未纳入直接快报路径的格式**:`普通国省道` E/N 虽为 `0.00%`,快报使用的是 `人员流动量汇总` 汇总后的 P/R/T,不使用该两列;高速公路/普通国省道内部 4 位小数人员流动量同理只作为源公式中间列,不直接输出。 |
| | | - **验证**:`mvn test` 全通过;重启后端后重新生成 10 月 3 日快报,与手工稿逐块、逐单元格比较无任何差异。10 月 2 日与手工稿的内容和表格文本一致,仅有 Word run 分段格式差异。`_tmp_holiday_verify/bulletin_after_road_format_2026-10-01/02/03.docx` 为本轮核对产物。 |
| | | - **数据操作**:只读核对,未导入、覆盖或重导任何数据。 |
| | | - **状态**:待用户验收/提交。 |
| | | |
| | | ### 10-04:快报百分比按 Excel 单元格显示精度后再取 1 位 |
| | | |
| | | - **用户确认的业务口径**:人工核对以 `2026年十一数据.xlsx` 单元格实际显示值为准。比如总计累计同比 2025 底层精确值为 `-4.448602%`,Excel 单元格格式为 `0.00%`,人看到并用于核对的是 `-4.45%`,再取快报 1 位小数就是 `-4.5%`。此前“直接按底层值取一位得到 -4.4%”的结论已作废。 |
| | | - **实现**:`HolidayBulletinService` 新增 `bulletinPercent(...)`,严格按百分比来源单元格格式先取显示精度,再取快报 1 位小数;正文措辞与表格百分比共用同一逻辑。当前源表逐列口径:多数源单元格为 `0.0%`;`人员流动量汇总` 的当日环比 D/P/J、累计同比 V/W/Y/Z/AB/AC,以及水路当日环比 D 为 `0.00%`。 |
| | | - **领导分析报告核对规则**:领导分析报告不套用快报的 1 位小数,一律按该报告自身显示的小数位核对,确保与人工在文档里看到的值一致。 |
| | | - **验证**:新增/更新单元测试覆盖 `-4.448602%` 的 `-4.4%`(1 位源格式)与 `-4.5%`(2 位源格式),以及 `-0.045% -> -0.05% -> -0.1%` 边界;后端 `mvn test` 全部通过。重启 8090 后用真实库数据生成 2026-10-02 快报,正文和表格与已人工核对的模板逐项一致,总计累计同比 2025/2024 为 `-4.5% / -1.6%`。 |
| | | - **本地验证产物**:`_tmp_holiday_verify/bulletin_excel_display_rounding_2026-10-02.docx`;功能测试报告与工作日结按本地留档规则写入 `docs/功能测试报告/`、`docs/工作日结/`,不入库。 |
| | | - **状态**:代码和口径说明随本次提交推送;服务保持运行,访问 `http://localhost:8080`。 |
| | | |
| | | ## 最新(2026-10-03) |
| | | |
| | | ### 【新对话先读】当前状态与下一步(2026-10-03 深夜写入) |
| | | |
| | | - **代码状态(已推送)**:`HEAD = origin/main = f329f50`,内容为 `feat(observation): 新增观测站分日调查数据导入与明细查看`,用户已「验收通过」。工作区除本 HANDOFF.md 的交接更新(尚未提交,等用户确认)外,无其他已跟踪文件改动;仅剩未跟踪的 `_tmp_doc_compare/`、`_tmp_holiday_verify/` 和 `docs/专项统计/重要节假日/观测站分日调查数据 (2026年10月1日).xls`(过程产物与源数据,按约定保留、不入库、不删除)。`docs/专项统计/重要节假日/2026年十一数据.xlsx` 已由用户改回原名,模板下载接口实测 HTTP 200 / 36335 字节。 |
| | | - **服务状态**:后端 8090、前端 8080 均在运行,访问 `http://localhost:8080`;登录 admin/admin123。数据库 `127.0.0.1:3305/traffic_audit`(root/root)。 |
| | | - **库内数据**:节假日 2026-09-30(铁路/民航前一日)、2026-10-01、2026-10-02 已导入;**2026-10-03 尚未导入**。观测站 `observation_station_flow` 现有 2026-10-01(692 站)与 2026-10-02(689 站)。 |
| | | - **下一步(2026-10-04 早上)**:10 月 3 日数据出来后,按既有口径导入 2026-10-03 并生成当天「湖北省国庆假期综合运输客流快报」。领导要求 8:30 前出第一版,而民航数据可能晚于 8:30 才有:民航未到就先出缺民航版本(累计同比只与往年已覆盖日期比较),民航到齐后重新导入并重新生成。完整口径与已验证结论见本文件 10-03 各段。 |
| | | - **无自动化**:曾建的心跳提醒(id `10-03`)已按用户要求删除,用户 2026-10-04 明确「到时我会手工操作」。明天早上由用户手工导入 10-03 数据并生成快报,助手只在其提出时配合核对/排查。不要在未获用户明确要求时自行创建定时任务或自动写库。 |
| | | - **数据发现(供参考,无需改代码)**:2026-10-02 比 10-01 少 3 个观测站——`G348L149420501` 土门(宜昌市/市辖区)、`S464L105422828` 大典河(恩施州/鹤峰县)、`S483L105420801` 屈家岭(荆门市/市辖区)。已核对两份源 Excel,确属源数据当天未上报,不是导入漏行。 |
| | | - **长期待办**:见下方第七节「数值精度统一改造」(既有 16 张表、228 个 double 列改 `DECIMAL(30,15)` + Java `BigDecimal`)。 |
| | | |
| | | ### 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 深夜(2):缺当日民航数据时的累计同比对比期间修正 |
| | | - **快报民航累计同比对比期间修正(2026-10-03,缺当日民航数据场景)**:当某运输方式当年累计覆盖的日期短于所选日期(典型为 10 月 2 日民航数据未出、民航累计只有 10-01),累计同比改为「只和往年已经覆盖到的日期比较」——先找当年最后一个有该指标数据的日期,再取往年同日累计。修复后缺失民航的 10 月 2 日快报民航累计同比由 `-50.5%/-49.9%` 变为 `-10.0%/-0.9%`(与手工稿 -10.03%/-0.87% 的 1 位小数值一致)。实现见 `HolidayBulletinService.comparableCumulative`(仅作用于民航行),其余行与总人员流动量口径不变。 |
| | | - **「累计同比 -4.65% vs 快报 -4.6%」结论(2026-10-03,无需改代码)**:Excel 显示的 -4.65% 是**两位小数**结果;底层精确比值是 `-4.64633%`(2026 累计 3082.23818、2025 累计 3232.42742),**一次四舍五入到 1 位小数就是 -4.6%**。把已经取到两位小数的 -4.65 再取一位才得到 -4.7,属二次取整,不采用。同理 2026 对 2024 为 `-1.7710%` → `-1.8%`。快报百分比统一 1 位小数口径不变。 |
| | | - **2026-10-04 修正**:按 Excel 单元格显示精度口径,`-4.65%` 再取一位应为 `-4.7%`;以文件顶部最新段为准。 |
| | | - **「暂缺民航」提示**:用户确认由人工在生成的快报稿上修改,系统不生成该提示行,**不做代码改动**。 |
| | | - **验证**:`HolidayBulletinServiceTest` 3 个用例通过(新增 2 个覆盖民航累计对比期间与无数据返回 null);端到端用库内真实 2026-10-02 数据(铁路/道路/水路/车流齐全、缺民航)重新生成快报,民航累计同比 `-10.0%/-0.9%`、民航累计 `6.75`、总计累计 `3082.24`、总计累计同比 `-4.6%/-1.8%`,与手工稿口径一致。 |
| | | - **Git**:本次改动待用户「验收通过」后再提交/推送。 |
| | | |
| | | ### 10-03 深夜(3):快报累计正文单位由「亿人次」改「万人次」(待验收) |
| | | |
| | | - **口径(用户/领导确认)**:假期累计数值目前偏小(0.31 亿),正文可读性差,改为与当日一致的**万人次**;例如 `假期以来,全省全社会跨区域人员流动量累计3088.63万人次`,不再输出「0.31亿人次」。表格与其余口径不变。 |
| | | - **实现**:`HolidayBulletinService` 抽出 `cumulativeParagraph(...)`,直接按万人次(2 位小数)输出累计值;同比仍为「增长/下降 + 一位小数」,**保持一次取整不变**(该处 2026-10-04 已修正:源单元格为 `0.00%`,Excel 显示 -4.45%,再取一位为 -4.5%;以文件顶部最新段为准)。 |
| | | - **验证**:`HolidayBulletinServiceTest` 4 个用例通过(新增 `cumulativeParagraphUsesWanUnitAndSingleRounding` 固化「万人次 + 一次取整」);重启后端后重新生成 2026-10-02 快报,正文为 `累计3088.63万人次,比2025年同期下降4.4%,比2024年同期下降1.6%`,与手工稿仅差既定的取整口径;2026-10-01 回归正常(`累计1643.17万人次`)。 |
| | | - **状态**:待用户「验收通过」后提交/推送。 |
| | | |
| | | ### 10-03 晚(4):新增「观测站分日调查数据」原始数据导入(待验收) |
| | | - **背景(用户 2026-10-03 提出)**:普通国省道车流量的来源之一是观测站分日调查数据(模板 `docs/专项统计/重要节假日/观测站分日调查数据 (2026年10月1日).xls`,其中字段「中小客流量」即普通国省道车流量来源)。**系统内不做关联**,节假日统计仍走原有导入;本功能只做原始数据留存,为后续分析挖掘积累数据基础。 |
| | | - **数据表**:新增 `observation_station_flow`,DDL 见 `docs/sql_observation_station.sql`,部署包同步为 `deploy-templates/db/sql_observation_station.sql`。保留模板全部 26 列(观测站编号/名称/观测里程/地市/区县/行驶方向 + 各车型流量 + 客车/货车/汽车/机动车流量 + 各类当量 + 机动车速度 + 拥挤度 + 来源文件名)。唯一键 `(obs_date, station_code, direction)`;**数值列一律 `DECIMAL(30,15)`**,Java 实体字段一律 `BigDecimal`,与节假日表同口径,无 float/double。 |
| | | - **导入实现**:新增包 `com.trafficaudit.observation`(entity / mapper / dto / service / controller)。用 POI `WorkbookFactory` 同时支持 `.xls` 和 `.xlsx`;**表头按列名匹配**(列顺序变化不影响导入),扫描前 10 行定位表头;日期兼容 Excel 日期格式与 `yyyy-M-d`/`yyyy/M/d`/`yyyyMMdd`/中文年月日;同一日期**重复导入即整体覆盖**(先删该日期再插入),幂等。 |
| | | - **接口**:`POST /api/observation/import`、`GET /api/observation/dates`(按日期汇总站数、中小客流量合计、最近导入时间)、`GET /api/observation/rows?date=&limit=`、`POST /api/observation/delete?date=`。 |
| | | - **前端**:`traffic-audit-web/src/views/HolidayStat.vue`(专项统计 - 节假日)新增「观测站分日调查数据」卡片:选择文件 → 导入 → 按日期汇总表 → 查看明细(弹窗)→ 删除。 |
| | | - **实测(真实模板,本机 3305)**:导入 692 行 / 692 站 / 0 跳过 / 0 失败;三项合计与源文件逐项一致(中小客流量 3,523,873、机动车流量 5,487,965、机动车当量 7,140,575);**692 行 × 25 字段全量逐行比对 0 处不一致**;中文(站名/地市/区县)落库无乱码;重复导入仍为 692 行(覆盖而非累加);上传非 Excel 返回明确错误。旁证:692 站中小客流量合计 3,523,873 辆 = 352.3873 万辆,与 2026-10-01 节假日「普通国省道」入库值完全一致,印证了数据来源关系。 |
| | | - **顺带修复**:`pack-deploy.ps1` 把 db 脚本复制进包内 docs 的清单里漏了 `sql_holiday_previous_day_migration.sql`,本次一并补上 `sql_observation_station.sql`;`deploy-templates/README-部署说明.txt` 的 db 清单同步更新。 |
| | | - **10-03 深夜追加(观测站界面微调)**:①「查看」明细弹窗按模板表头展示原始数据全部字段(观测日期/站号/站名/里程/地市/区县/方向 + 全部车型流量、客货汽车机动车流量、各类当量、速度、拥挤度,另附来源文件名,共 27 列,横向滚动);②汇总表「中小客流量合计」单位由辆次改为**万辆次**、保留 4 位小数(`formatWanVehicles`,如 3,523,873 → 352.3873)。前端 dev server 已热更新编译通过。 |
| | | - **10-03 深夜追加(观测站列表/明细修正)**:①**明细行序**原来按 `stationCode` 排序,与 Excel 行序对不上,改为按导入顺序(`id ASC`,即 Excel 行序),便于逐行比对;②明细**列顺序**与模板 26 列完全一致(末尾附来源文件名);③**观测里程/机动车速度/拥挤度**改为按原始小数显示(`formatPlain`,去尾零,如 50.92 / 43.882 / 0.777 / 58),不再固定 2 位;④**17 个流量与当量列**改为整数显示(`formatInteger`,如 6413),与 Excel 一致;⑤汇总列表「观测日期」改为**正序**(mapper `ORDER BY obs_date ASC`)。已用 10-01/10-02 真实数据验证行序与 Excel 前 5 行一致(中帮/万店/沼山站/邾城站/白云)。 |
| | | - **状态**:待用户「验收通过」后提交/推送。 |
| | | |
| | | --- |
| | | |
| | | ### 补充(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`(注意:这是“末传密码”,不是密码错)。 |
| | | - **服务器侧一步修复(无需重打包)**:在 jar 同级放 `application.yml`,把 `spring.datasource.url/username/password` 改成现场真实值后重启即可;也可用环境变量 `TRAFFIC_DB_PASSWORD` 代替。启动脚本已加预检提醒(缺 `application.yml` / password 仍是占位文字都会 WARN)。修复后若报“未找到数据目录 docs”则说明包内缺 `backend/docs`,从新包或源机器拷。 |
| | | - **打包工具已修(原 “打包工具待修” 两项均已落实)**:`pack-deploy.ps1` 重写为五步:① 用新增模板 `deploy-templates/jar-application.yml`(**全占位符**)临时替换源码配置后 `mvn clean package`,无论成败都还原真实配置;② 解压 jar 去密自检;③ 前端构建;④ 组装**完整包**:`backend/{jar, application.yml, start-backend.cmd/.sh, docs/, web/}` + `frontend/dist` + `db/*.sql` + README(`backend/web` 从 dist 自动同步,逐文件一致);⑤ 整包明文密钥扫描。新增 `-SkipBackend` 可复用现有 jar 快速重组包。 |
| | | - **模板同步修正**:`deploy-templates/backend/application.yml` 的 `server.port` 由 8080 改回 8090(原值会导致后端起在 8080)、补 `static-locations: file:./web/` 与 password 陷阱注释;`README-部署说明.txt` 常见问题新增该报错处置;`docs/打包部署说明.md` 排错表新增该行;`application.yml.example` 环境变量名统一为 `TRAFFIC_DB_USER/TRAFFIC_DB_PASSWORD/TRAFFIC_JWT_SECRET`(原来误用 `MYSQL_PASSWORD`/`JWT_SECRET`,与 `start-dev.ps1` 不一致)。 |
| | | - **新包(本地,不入库)**:`deploy/traffic-audit-deploy-20261003/`(388 文件 / 93.07 MB,zip 76.37 MB),已验证:jar 内置配置全占位符(去密自检通过)、`backend/web` 与 `frontend/dist` 逐文件一致(各 44 个)、`backend/docs/生成汇总大表` 母版存在、`功能测试报告/工作日结/问题汇总/_cache` 已排除。 |
| | | - **踩坑(重要)**:本机 PowerShell 5.1 把无 BOM 的 `.ps1` 当 ANSI 读,中文注释会变成乱码并导致脚本解析失败。`pack-deploy.ps1` 必须保存为 **UTF-8 with BOM**(仓库其他 `*.ps1` 也都是 BOM);排查中曾实际踩到。 |
| | | |
| | | - **运行状态(写交接时)**:后端 8090、前端 8080 均未监听;新对话如继续开发或测试,先执行 `powershell -NoProfile -ExecutionPolicy Bypass -File start-dev.ps1`。数据库仍为 `127.0.0.1:3305/traffic_audit`,MySQL 服务未停。 |
| | | - **发布构建(已完成)**:应“发布编译”要求,已完成后端 `mvn clean package -DskipTests` 和前端 `npm run build`。jar 内已做去密自检,只保留环境变量占位符;构建后本机真实 `src/main/resources/application.yml` 已原样恢复。 |
| | |
| | | - **Git/工作区(本段更新前)**:`HEAD = origin/main = 37f5209`;当前无已跟踪文件改动。未跟踪项有 `_tmp_holiday_verify/`(历史验证产物)和 `docs.zip`(约 31.6 MB,用户本地产物);二者均保留,新对话不要误删或误提交。 |
| | | - **下一步**:如需部署,直接使用上面发布目录或 zip;如需继续修复发布工具,先实现“占位符模板自动切换 + `backend/web` 自动组装 + jar 去密自检”后再重新产出发布包。 |
| | | |
| | | ### Windows 开机自启(10-03 追加,用户选“方案 B”:注册成 Windows 服务) |
| | | - **先回答过的问题**:`start-backend.cmd` **不能**直接做开机自启(末尾有 `pause`、无日志重定向、依赖 PATH)。给出 A(计划任务)/B(Windows 服务)/C 三方案后,用户选 **B**。 |
| | | - **新增模板(已入库)**: |
| | | - `deploy-templates/backend/trafficAudit.xml`:WinSW 服务配置——id `TrafficAuditBackend`、`startmode=Automatic` + `delayedAutoStart=true`(等 MySQL 先就绪)、`onfailure restart 10s/30s/60s` + `resetfailure 1 hour`、`workingdirectory=%BASE%`、日志 `logs\trafficAudit.out.log|err.log`(10MB × 10 滚动)。 |
| | | - `deploy-templates/backend/install-service.ps1`:管理员安装/查看/重启/删除(`-Status/-Restart/-Remove/-NoStart/-JavaPath`);自动定位 java(JAVA_HOME → PATH → JavaSoft 注册表 → Program Files)并把绝对路径写进 XML 的 `executable` 元素;重复执行幂等;非管理员直接拒绝。 |
| | | - `start-backend-service.cmd` + `install-autostart.ps1`(计划任务方式)保留为**备选**;注意 `New-ScheduledTask*` 需 Win8/Server 2012+,且**不可与服务方式同时启用**(会抢 8090)。 |
| | | - `pack-deploy.ps1`:新增 WinSW 获取(缓存 `deploy-templates/tools/winsw.exe` 并校 SHA-256,缺则从 GitHub 下载 v2.12.0 x64)与 `-SkipServiceWrapper`;包内输出 `backend\trafficAudit.exe`(改名以匹配 XML 文件名)。`.gitignore` 新增 `deploy-templates/tools/`(17.4MB 二进制不入库)。 |
| | | - **WinSW = Windows Service Wrapper**:把普通程序包成 Windows 服务。java.exe 自己不是服务程序,直接 `sc create` 会报“服务没有及时响应启动或控制请求”;WinSW 实现了服务控制协议再拉起 `java -jar`,并管重启与日志。 |
| | | - **实测验证(本机,未真正安装服务)**:`trafficAudit.exe status` 能读打包 XML 并输出 `NonExistent`(解析通过);故意写坏 XML → `FATAL - The configuration file cound not be loaded`(证明该校验路径真实有效);`install-service.ps1 -Status` 正常输出“未安装”,无参数 / `-Remove` 在非管理员下抛“必须管理员”且不产生注册项。 |
| | | - **踩坑(重要)**:XML 改写最初用正则 `(?s)<executable>.*?</executable>`,会**先命中注释里的 `<executable>` 字样**,把注释头与 service 开头整段吞掉 → XML 非法。已改为 DOM(`SelectSingleNode('/service/executable')`)并把注释里的裸标签改掉。另:新增打包代码曾多一个 `}` 导致语法错,已用 `Parser::ParseFile` AST 复核,两个 ps1 现在语法 OK 且均为 UTF-8 with BOM。 |
| | | - **兼容性(用户问“Win7/Win10/Win11/Server 是不是都可以”)**:服务机制完全一样(自动启动/延迟启动/失败重启都是系统能力),差别只在包装器依赖什么运行时。实测二进制:`WinSW-x64.exe` 2.12.0 是**自包含 .NET 6 单文件**(含 `singlefilehost`/`System.Private.CoreLib`/`Microsoft.NETCore.App 6.0.13`/`net6.0`),**不需要装 .NET Framework**;老系统(Win7 SP1/2008R2/2012R2)若报 `api-ms-win-*.dll` 缺失,可换官方 `WinSW.NET461.exe`(0.6MB,需 .NET 4.6.1+,改名成 `trafficAudit.exe` 即可,XML 不动);32 位系统换 `WinSW-x86.exe`。 |
| | | - **安全提示**:WinSW 官方产物**未做 Authenticode 签名**(本机 `Get-AuthenticodeSignature` = NotSigned),因此以固定 SHA-256 作完整性校验:`05B82D46AD331CC16BDC00DE5C6332C1EF818DF8CEEFCD49C726553209B3A0DA`(与 GitHub 发布资产 18,243,033 字节一致)。 |
| | | - **未验证项(需在目标机做一次)**:本机当前不是管理员,**没真正 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) |
| | | |
| | | - **新模块(用户已验收,本次提交/推送)**:新增“专项统计-重要节假日”模块,含节假日配置、营业性客流、非营业性车流、客运系数 4 张表;系统配置菜单仅 admin 可维护,专项统计-节假日支持导入、导出、模板下载和 Word 快报下载。 |
| | |
| | | - **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`。 |
| | |
| | | - **2026-08-28 复核「点数据导入浏览器崩溃」(打包测试环境,部分用户)**:重点排查 `GET /api/import/batches`——后端 limit 上限 200;全表 81 条、error_detail 最长 2.6KB、全量响应约 17KB(前端只取 50 条);前端表格仅 8 列短字段(errorDetail 不渲染)、无轮询/定时器。**结论:接口不是崩溃根因**(若接口有问题,所有用户都会崩,而非"部分用户")。现象符合客户端环境差异(第三方扩展注入/旧显卡驱动/低配内存,与 08-27 迅雷扩展+Intel 旧驱动结论一致)。建议对崩溃用户依次验证:无痕模式→换 Edge→禁扩展,并看 chrome://crashes。 |
| | | - 【新需求·仅记录未实现·2026-08-28】增加**经济指标试算功能**:领导非常关注经济指标,**货运是大头**;常驻现场的所有人都要会计算货运相关数据(货运量/周转量等)。领导经常要求把某个数据「压一压」,今后考虑在软件里增加试算功能——可按需要调整/测算指标数值(如模拟下调某企业/某口径的货运量后看汇总与趋势影响),辅助现场人员快速试算与应对。 |
| | | |
| | | - 【待办·2026-10-03】**数值精度统一改造**:把既有业务表的数值列由 `double` 改为 `DECIMAL(30,15)`,Java 实体字段由 `Double/Float` 改为 `BigDecimal`,与节假日表、观测站表统一口径(用户 2026-10-03 明确要求,择机实施)。 |
| | | - 现状盘点(traffic_audit,2026-10-03 查询):**16 张表、共 228 个 double 列**——`freight_turnover_import` 48、`city_bus_monthly` 34、`h2032_enterprise_monthly` 33、`city_taxi_monthly` 29、`wyc_order_monthly` 22、`h2031_enterprise_monthly` 18、`h204_vehicle_quarterly` 12、`scale_split_transport` 9、`investment_monthly` 5、`investment_system` 5、`wyc_total_monthly` 4、`h204_auth_vehicle` 2、`investment_project` 2、`passenger_individual_monthly` 2、`transport_auth_vehicle` 2、`vehicle_track_mileage` 1。 |
| | | - 已是 decimal 口径、无需改动:`holiday_calendar` / `holiday_passenger_coefficient` / `holiday_passenger_flow` / `holiday_vehicle_flow` / `observation_station_flow`。 |
| | | - 改造范围不只是改列类型:实体类字段类型、导入解析(不要经 double 中转)、计算与取整逻辑、报表导出格式化,以及存量数据的迁移脚本,都要一起改;改完要做逐表数值抽查。 |
| | | |
| | | ## 八、每日交接约定 |
| | | 1. 新对话第一步:读 `AGENTS.md` + `HANDOFF.md`;涉及 AI 分析/审核时参考 `docs/` 与数据库表结构。 |
| | | 2. 每天结束时:更新 `HANDOFF.md`(进展、坑、新需求、待办),再关对话。 |