现象:D:\桌面\生成数据\生成_道路运输量汇总表 (3).xlsx 中,
「中口径排名」M13 黄冈 1-8 月累计同比 7.744917%,「中口径明细」T55 同一格 7.641733%;
两页当月累计值相同(3480.930066022),差的只是去年同期基数(3230.713965 vs 3233.810859,差 3.096894)。
排查过程与结论(全部用库内数据 + 7 份母版历史版本逐格验证):
docs/生成汇总大表/_bak_202608母版修改前_20260916/2026年8月道路运输量汇总表.xlsx)docs/问题汇总/汇总大表问题交接_2026-09-21.md(250 行)D:\桌面\汇总大表问题交接_2026-09-21.md_chk_wyc4~7.txt(网约车逐市逐月复算)、_chk_backsolve.txt(反推出租输入)、_chk_lineage*.txt(母版血缘)、_chk_rule.txt(候选公式排除)、_chk_all_pref.txt(17 市州差异清单)、_chk_orig.txt(9/8 原始母版)等。
docs/交接文档_2026-09-21.md(约 14.6 KB)。docs/问题汇总/汇总大表问题交接_2026-09-21.md,避免两份文档写同一份内容后互相打架(用户问「汇总也在写要不要写一块」时确认的口径)。investment_project 152 / investment_monthly 284(2026-08 = 136);getLastMidIssues() 无任何调用方,前端未消费、无《数据缺失清单》页。docs/投资/输入/物流(物流园区)/8月/湖北省十堰交通物流基础设施投资统计汇总表(月报)(2026年8月).xlsdocs/投资/输出/源文件备份/…_原始含武汉黄石_20260921.xls。findColByKeywords),兼容新旧模板;缺列时 year_cum 留空而不是错填。investment_system 2026-08 = 129,2026-07 = 148 不受影响),字段逐列抽查一致。nvl() 会把 NULL 当 0 → 100+ 条误报。改为基准为 NULL 时跳过并记 WARN 日志。h2031_enterprise_monthly / passenger_individual_monthly /city_bus_monthly / city_taxi_monthly / wyc_order_monthly 现算值逐位比对,17 市州 × 8 个月,#DIV/0!、用户要求「把我的数据备份出来,拷贝给同事」,产出交付包 _给同事_2026-09-21\(仓库根,已用包内 .gitignore 整包排除入库):
| 文件 | 说明 |
|---|---|
traffic_audit_full_20260921.sql |
全库备份,52,010,797 字节(约 49.6 MB),mysqldump 8.0.29 导出,含 CREATE DATABASE + 全 29 表结构与数据,共 128,803 行 |
还原说明_2026-09-21.md |
备份信息 / 还原步骤(A 整库还原、B 已有库补数据)/ 验证明细 / 注意事项 |
交接文档_2026-09-21.md |
总交接文档副本(一并发给同事) |
导出命令(服务端同版本 mysqldump):
mysqldump --host=127.0.0.1 --port=3308 --user=root --default-character-set=utf8mb4 \
--single-transaction --routines --triggers --events --hex-blob \
--databases traffic_audit --result-file=...\traffic_audit_full_20260921.sql
验证(沿用 2026-09-13 的验证口径):把备份里的库名换成临时库 traffic_audit_vfy → 完整导入 → 与源库逐表 COUNT(*) 比对 → 比对后 DROP DATABASE traffic_audit_vfy。
结论:**29 张表全部一致,0 差异**(合计 128,803 行)。关键表:city_taxi_auth 85,272 / h2031_enterprise_monthly 15,811 / h2032_enterprise_monthly 13,056 / audit_result 3,393 / city_bus_monthly 2,860 / investment_project 152 / investment_monthly 284 / freight_turnover_import 234 —— 与交接文档 §1.2 记录一致。
留下的临时文件(未删):_tmp/_verify_20260921.sql(改名后的验证副本,52 MB)、_tmp/_verify_counts.tsv(逐表比对结果)、_tmp/_mk_pkg_20260921.py、_tmp/_fix_pkg_doc.py。
本次无代码改动,属数据类工作,故不另出《功能测试报告》。
待用户确认:① 交付包是否需要压缩 zip(50 MB → 便于微信/网盘传输);② 同事环境若为 MySQL 5.7,需另出一份 5.7 专用导出;③ 是否需要把 docs/(母版、投资源文件)一并打包 —— 该部分已在 git 仓库内,clone 即可获得。
CHECKSUM TABLE 复检 10:17 那份备份时发现 4 张表校验和不一致,进一步查 COUNT(*):audit_result 3393→3421、import_batch 417→419、investment_system 148→277、investment_monthly 284→284(行数同但内容变),最后写入时间 10:20~10:22CREATE TABLE 29/29;逐表 COUNT(*) 29/29 一致;CHECKSUM TABLE 29/29 一致;mysqldump --order-by-primary 有序导出两份数据文件 SHA256 完全相同(逐行内容一致)。docs/工具/数据库备份与还原操作步骤.md(备份参数说明 / 三步验证 / 还原 / 常见问题,命令可直接复制)。用户选择 方案 A(排名页改用母版《中口径明细》2025 静态列),已完成代码、回归与文档更新。
ReportExportService.exportPassengerMidRank() 增加母版工作簿上下文重载;汇总导出复用内存母版,独立排名表导出打开对应母版;按表头识别 2025 年逐月列,读取「总客运量 / 总旅客周转量」并按 1..N 月累计;全省基数由 17 市州求和;静态基数不完整时回退库内现算并写 WARN。mvn -DskipTests compile 通过。7.641733%(原 7.744917%)。2.91e-11;全省累计值 = Σ17 市州;8 月当月同比 34 个数值对最大差 5.48e-15。_tmp/qa_plan_a_20260921/生成_道路运输量汇总表_202608_方案A.xlsx、_tmp/qa_plan_a_20260921/生成_中口径排名_202608_方案A.xlsx(按约定保留)。docs/功能测试报告/功能测试报告_中口径排名同比基数方案A_2026-09-21.md。同事(xyc)推送差异报告(提交 47a8734)并口头要求「人工检查一下报的差异」,本次完成核对:
docs/问题汇总/汇总大表差异核对回执_2026-09-21.md(按对方编号逐条回答)。2026年8月道路运输量汇总表.xlsx + 生成件 生成_道路运输量汇总表.xlsx(9/18)逐格读公式与缓存值(内联 Python,未落盘)。公交/出租/网约车 U5:U76(报告 §4.1):业务口径确认**可清空留空**。根因是母版自相矛盾——U5 只算到 2025 年 6 月,而同页累计同比 T5 的分母含 1-8 月;补 7、8 月后与手工值逐位吻合(公交 114285.68 / 出租 52461.16 / 网约车 22474.11),影响 3 页 × 72 行。轨道、轮渡 R2/R11:确认差异(软件「8月与去年同比」vs 人工「同比」)→ 按人工措辞改。中口径排名:人工那份隐藏表数据不对、展示仅 1-8 月累计 → 以软件输出为准。班线包车(§4.2):2021 年 3 月起累计同比大量 #DIV/0!,且两边列区间不一致(生成 DU:EP / 手工 TD:EO);报告里 220 个 #VALUE! 本机复现不出来(本地母版与 9/18 生成件均为 #DIV/0! 228 + #REF! 8,与报告「软件输出」两项完全一致),判为读缓存值产生的假错值,待对方用 9/21 原件复核。货运 2022 年累计同比(§4.3):软件对。货运周转量排名 的「标题」指哪一格、城市客运 差异格在哪、并把两份源文件放共享位置以便同源复核。用户手工把该原型文件「班线包车」页里文本格式的数值单元格改成数值格式,核对后提交。
docs/生成汇总大表/2026年8月道路运输量汇总表_版式原型.xlsx(1,487,539 → 1,354,428 字节)班线包车 页第 8-57 行 × FV:IX 列,共 196 格 文本 → 数值(如 '33,437.0000' → 33437);逐格比对数值**完全等价,0 处不匹配**。公路总客运 104 格、城市客运 126 格是公式去掉工作表名引号('轨道、轮渡' → 轨道、轮渡,语义不变);货运 23、货运周转量排名 3、城市汇总 4、城市分市州 17、中口径排名 11、中口径分析 3 格是浮点重写(15 位有效数字,相对差约 1e-15)。rg 版式原型 无命中),属参考件;本次无代码改动。git show HEAD:<file> 取出旧版到 _tmp_proto_head.xlsx,再用 openpyxl 逐格比对类型与值(临时文件保留,未删)。用户给定两份文件,要求「比较软件输出与手工计算的结果,列出所有不一致的地方(两者格式可能略有不同)」:
D:\桌面\生成数据\生成_道路运输量汇总表_2026-08 (2).xlsx(09-21 16:49)D:\05_数据分类\汇总表\8月汇总定稿\2026年8月客运量、货运量定稿.xlsx(09-13)产出
docs/问题汇总/汇总大表_软件输出与手工定稿差异清单_2026-08.md(分类清单:数值/结构/文字)docs/问题汇总/汇总大表_差异明细_2026-08.csv(943 条逐格明细)比对方法(可复现,脚本 _tmp_cmpG.py 保留在项目根)
货运 从 V 列起 +1、城市客运 从 AJ 列起 +1、班线包车 尾部 2015/2016 区 −3;三页表头校验均 0 处不一致。结果(943 条)
| 类别 | 条数 |
|---|---|
| 数值差异(>1e-6) | 315 |
| 文本型数字(值相同、格式不同) | 286 |
| 取整差异(≤1e-6) | 207 |
| 仅程序有值 | 129 |
| 错误值差异 | 4 |
| 文本不同 | 2 |
关键结论:
公交/出租/网约车 U5:U76(各 72 格)与 中口径明细 U99:U188(88 格)——程序沿用母版公式只累加到 6/7 月,手工累加到 8 月。与第七节回执口径一致(该列可清空留空)。货运 EA92:EA112 10 格 2022 年累计同比(仙桃/潜江/天门/林区)差异较大,此前业务已确认「软件对」。货运「2021 年累计」EO5:EO112 74 格:程序有值、手工**该列数据区全空**(表头 EP4 有「累计」)。班线包车 IL4:IL57 34 格:手工该列 31 格空白、2 格 #REF!(公式 =(IK4-#REF!)/#REF!)、1 格是杂字符「`」。货运 历史月份(2021-2024)139 格小数尾数差异,相对偏差最大 7.7e-7(手工取整),不影响结论;尾部核算块 63 处两边都是 1e-10 量级残差,实质为 0。货运 程序每市州多 2 行(规上+规下货运量、规下货运量)=多 34 行,且从 V 列起手工整体右移 1 列(手工 V 列多一个无表头的「2025 年 1-8 月累计」辅助列,74 格);城市汇总 程序多 8 月块(41 格);城市分市州 程序多两个 8 月块;中口径分析 程序多 8 月块;中口径排名 布局完全不同但**数据一致**;城市客运 手工多一列「2025 年 1-7 月累计」;班线包车/道路运输周转量 手工各多列。班线包车 196 格(FV8:IX57)——**与第八节用户在《版式原型》里刚改掉的 196 格完全是同一批单元格**;手工 公交 153 格、轨道、轮渡 5 格。程序侧 公交 AF 列 68 格同为文本型数字(两边一致)。道路运输周转量!A23(程序「2026年8月全省完成交通周转量情况」vs 手工多了「累计」二字)、轨道、轮渡!R2/R11(「8月与去年同比」vs「同比」)。公路总客运、2025年城市客运量、中口径客运量、中口径计算过程,以及其余页签的共有部分。本次为比对/文档类工作,无代码改动。
用户 15:59 手工改的工作区改动,核对后提交。此前提到的「公路班线里的数字文本格式改为数值」即指本文件 班线包车 页(该页 A1 = 「公路班线客运量」)。
docs/生成汇总大表/2026年8月道路运输量汇总表.xlsx(**母版**,1,486,884 → 1,355,960 字节)班线包车 页第 8-57 行 × FV/FW/FX/FY/GA/GC/IT/IV/IX 列,共 196 格 文本 → 数值('374.0000' → 374、'33,437.0000' → 33437)。git show HEAD:docs/生成汇总大表/2026年8月道路运输量汇总表.xlsx > _tmp_mother_head2.xlsx,与工作区逐格比对类型与值:str → 数值 = 196 格,数值逐格等价(0 处不等);float → float,是 Excel 另存把浮点重写为 15 位有效数字(相对差 ~1e-15),非业务改动。