# 功能测试报告:M1-网约车 WycSplitCalc 取数/拆分核对与 7 月回归(2026-09-08) ## 一、功能说明 M1 第三块:新增网约车拆分计算服务 `WycSplitCalc`(`traffic-audit-server/.../reportexport/calc/WycSplitCalc.java`),把 exportWycSplit 的拆分算法抽成可复用矩阵:输入=《网约车订单及全省总量.xlsx》(pin B-E + 17 市州订单 G-W)+ 巡游出租月报(DB),输出 17 市州+全省的 客运量/城市内客运量/周转量/城市内周转量。供汇总大表网约车台账页与城市客运各页共用(口径 B5)。 ## 二、测试环境 - 库:`traffic_audit`(2026-07 现状); - 输入文件:`docs/城市客运/模板_网约车订单及全省总量.xlsx`(月度输入 sheet,2026-07 行在 openpyxl 第 8 行); - 对账母版:`docs/生成汇总大表/_备份_2026年7月道路运输量汇总表_清理前_20260904.xlsx` 网约车台账页; - 工具:openpyxl + mysql CLI + Python 复刻算法比对;后端 `mvn -q -DskipTests compile` 通过。 ## 三、算法(与 exportWycSplit 一致) - C[i]=订单占比×全省网约车客运量 pinK;F[i]=巡游出租城市内客运量/客运量(城市内占比代理); - 城市内 H:武汉=C0×F0(保持自身);其余 = (Ci×Fi)/(ΣG−C0F0) × (pinCK−C0F0); - 周转量 Gl[i]=Ci×平均运距 / Σ(Ci×平均运距) × pinZ;城市内周转量 Hl 同法(用城市内平均运距、pinCZ); - 巡游出租平均运距缺省时按 周转量/客运量 取 2 位小数兜底。 ## 四、用例表 | # | 用例 | 输入 | 预期 | 实际 | 结论 | |---|---|---|---|---|---| | 1 | 2026-07 拆分(17 市州×4 指标) | 订单+pin+出租 DB | 与母版网约车台账 O 列一致 | diff=0 | 通过 | | 2 | 全省行 | pin 输入 | 客运量 4852.30 / 周转量 28348.02 / 城市内 4430.84 / 城市内周转 22705.61 | 与母版一致 | 通过 | | 3 | 加总自洽 | 计算数组 | ΣC=pinK、ΣH=pinCK、ΣGl=pinZ、ΣHl=pinCZ | 全等 | 通过 | | 4 | 武汉口径 | 计算 | 城市内=总量(无城际城乡),H=1825.1975、Hl=13036.3929 | 一致 | 通过 | | 5 | Java 编译 | `mvn -q -DskipTests compile` | 无错误 | exit=0 | 通过 | ## 五、发现的问题与处置 1. 输入文件现状名称为 `模板_网约车订单及全省总量.xlsx`,而 ReportExportService.exportWycSplit 仍按精确名 `网约车订单及全省总量.xlsx` 定位(resolveAnyTemplate 不做前缀匹配)→ 该小表生成路径当前可能报“未找到模板”。WycSplitCalc.findInput 已支持两种命名,先保证大表取数可用;小表入口的模板定位待 M4 统一接线时修正。 2. 类名与文件名不一致曾导致 javac 失败并牵连无关文件报错(javac 错误恢复级联)→ 已统一为 WycSplitCalc.java,编译通过。 ## 六、结论与下一步 - 结论:网约车拆分可完整复算 7 月母版(0 差异),`WycSplitCalc` 已入库并通过编译。 - 下一步:城市客运台账/城市汇总/城市分市州 7 月整链回归(公交+出租+网约+轨道轮渡组合口径 C7)→ M1-MidCalc → M2 SummaryFiller。