# 功能测试报告:M1-城市客运 公交/出租/轨道轮渡 取数核对与 7 月回归(2026-09-08) ## 一、功能说明 M1 第二块:新增城市客运计算服务 `PaxCalc`(`traffic-audit-server/.../reportexport/calc/PaxCalc.java`),对 公交/巡游出租/轨道/轮渡 提供“月 → 市州 → [客运量,周转量,城市内客运量,城市内周转量](轨道轮渡=轨道客运量,轨道周转量,轮渡客运量,轮渡周转量)”矩阵,与既有 exportCityBusDetail / exportCityTaxiDetail / exportCityRailFerryDetail 的取数逻辑同构,供汇总大表与小表共用。 ## 二、测试环境 - 库:`traffic_audit`(127.0.0.1:3308),数据 = 2026-07 现状; - 对账母版:`docs/生成汇总大表/_备份_2026年7月道路运输量汇总表_清理前_20260904.xlsx`(含 5-7 月数据的已修正母版;`2026年7月道路运输量汇总表.xlsx` 为 1-4 月空骨架,不含 7 月台账列); - 工具:mysql CLI + Python 重算 vs 母版 O 列(2026-07);后端 `mvn -q -DskipTests compile` 通过。 ## 三、取数口径(与既有导出一致) | 台账页 | 来源 | 行结构(O 列 2026-07) | |---|---|---| | 公交 | `city_bus_monthly` 按 city 汇总 [passenger_volume,turnover,passenger_city,turnover_city] | 全省 r5-8;市州 r(9+4i)..r(12+4i)(客运量/周转量/城市内客运量/城市内周转量) | | 出租 | `city_taxi_monthly` 同字段 | 同 公交 | | 轨道、轮渡 | `city_bus_monthly` 的 rail_*/ferry_*(轨道=武汉/黄石,轮渡=武汉) | 轨道 r6/7=武汉、r8/9=黄石;轮渡 r15/16=武汉;全省=合计公式 | | 全省 | 17 市州之和(含跨区县多行累加) | 母版全省行公式 | ## 四、用例表 | # | 用例 | 输入 | 预期 | 实际 | 结论 | |---|---|---|---|---|---| | 1 | 公交台账页 2026-07 | DB 2026-07 按 city 汇总 | 与母版 O 列 18 行块(全省+17 市州×4 指标)一致 | diff=0 | 通过 | | 2 | 出租台账页 2026-07 | DB 2026-07 按 city 汇总 | 同上 | diff=0 | 通过 | | 3 | 轨道台账页 2026-07 | city_bus rail 字段(武汉/黄石) | 武汉 11701.74/96240.86、黄石 30.09/404.37、全省 11731.83 | 一致(0 diff) | 通过 | | 4 | 轮渡台账页 2026-07 | city_bus ferry 字段(武汉) | 全省=武汉=46.05(客运量) | 一致(0 diff) | 通过 | | 5 | Java 编译 | `mvn -q -DskipTests compile` | 无错误 | exit=0 | 通过 | ## 五、发现的问题与处置 1. 注释内出现 `rail_*/ferry_*`,其中 `*/` 提前终止 Javadoc 块注释导致编译失败 → 改为“rail 与 ferry 字段”,编译通过(本问题仅影响注释写法,与口径无关)。 2. 对账母版选择:`2026年7月…汇总表.xlsx` 是 1-4 月空骨架(台账页无 5-7 月列),7 月台账数值须以 `_备份_…_清理前_20260904.xlsx` 为基线——已在测试环境注明,M2 回归时统一用该备份文件。 3. 数据侧口径复核(无需改动):市州存在多个区县代码行,须按 city 汇总累加(与 Java 既有实现一致)。 ## 六、结论与下一步 - 结论:公交/出租/轨道/轮渡 7 月台账可从库完整复算(0 差异),`PaxCalc` 已入库并通过编译。 - 下一步:M1-网约车(WyCSplitCalc:订单×全省 pin×巡游出租拆分)→ 城市客运台账/城市汇总/城市分市州 7 月回归 → M1-MidCalc → M2 SummaryFiller 写回与逐格 diff。