# 功能测试报告_网约车订单报告 WordML 兼容导入_2026-09-18 ## 一、功能说明 **背景(用户报障)**:把《湖北网络预约出租汽车2025年09月分析报告.docx》放到桌面后用「网约车订单报告」导入,一直失败。 **定位结论**:该文件**不是真正的 docx**。它是 **Word 2003 XML(WordML 平铺 XML,单文件)**被改名成了 `.docx`: - 文件头是 ` ` - 3.1MB 纯 XML,**不是 zip 包**;POI 的 `XWPFDocument` 只能读 OPC(zip) 包,于是抛 `File is not a zip file`。 - 这类文件是 WPS/Word「Word 2003 XML 文档」格式,网约车监管平台/同事之间流转很常见,会反复出现。 **改动**:`traffic-audit-server/src/main/java/com/trafficaudit/dataimport/service/DataImportService.java` 1. `importWycOrderReport()` 入口先按文件头嗅探格式,再分派: - `PK` 开头 → docx(zip):原 `XWPFDocument` 路径; - `//` 文本化后调用; - 表头识别、17 市州取值、合计行识别**完全复用同一套逻辑**,两条路径不会出现口径分叉。 5. 报表期识别抽成 `periodOfParagraphs(List)`,两种格式共用(标题 `网约车行业YYYY年M月` 优先,取不到回退「前 10 段任意 YYYY年M月」)。 ## 二、测试环境 - 后端 8090(`mvn -o compile` 后重启,加载新类;启动日志 `Started TrafficAuditApplication`);数据库 `traffic_audit`(127.0.0.1:3308)。 - 接口:`POST /api/import/wycOrderReport`(`file` + `period`,`period` 可为空 → 由报告标题推断)。 - 测试文件:`D:\桌面\湖北网络预约出租汽车2025年09月分析报告.docx`(WordML,3,145,560 字节);`D:\05_数据分类\城市客运\8月\湖北网络预约出租汽车2026年08月分析报告0910最终版.docx`(真 docx)。 - 证据文件:`_tmp/_qa_out/`(命令输出见本报告表格;数据核对见 `_wyc_2025_09_row.txt`)。 ## 三、用例表 | 编号 | 类型 | 输入 | 预期 | 实际 | 结论 | |---|---|---|---|---|---| | 1 | 正向 | WordML「2025年09月」报告,`period=2025-09` | 解析出 17 市州订单,写入 2025-09 | `导入成功:报表期 2025-09,订单合计 17,652,159 单,已写入 17 个市州` | 通过 | | 2 | 正向 | 同上,`period=` 留空 | 由标题 `网约车行业2025年9月` 推断出 2025-09 | 报表期 2025-09,结果与用例 1 一致 | 通过 | | 3 | 正向 | 真 docx「2026年08月」报告重导 | 与库内既有值一致(幂等,不改变结果) | 订单合计 30,508,652、武汉 11,550,551,与导入前完全相同 | 通过 | | 4 | 正向 | 2026年06月报告 | 订单合计 = 报告正文「全省订单总数 2684.30 万单」 | 库内 2026-06 = 26,843,037 | 通过 | | 5 | 负向 | `.doc`(OLE2 复合文档,Word 97-2003) | 明确提示改用 docx | `这是 Word 97-2003 老格式(.doc),请用 WPS/Word 打开后「另存为」docx 格式再导入` | 通过 | | 6 | 负向 | xlsx 改名成 `.docx` 上传 | 明确提示不是 Word | `这不是 Word 文档(压缩包里没有 word/document.xml),多半是 Excel 或其它格式……` | 通过 | | 7 | 负向 | 非网约车报告的 docx(《投资表之间的关系.docx》) | 提示未解析到订单数 | `未解析到任何市州订单数,请确认上传的是《网约车行业YYYY年M月运行监测情况分析报告》` | 通过 | | 8 | 边界 | WordML 中表格含 16 列、表头在第 1 行、市州名用简称(`武汉`/`林区`) | 简称能映射到规范名(武汉市/神农架林区) | 17 市州全部识别,无缺失 | 通过 | **入库抽查**(报表期 2025-09,与报告附件1逐项对齐) | 项 | 报告附件1 | 库内 `wyc_order_monthly` | 结论 | |---|---|---|---| | 订单合计 | 17,652,159 | 17,652,159 | 一致 | | 武汉 | 8,076,610 | 8,076,610 | 一致 | | 黄石 | 676,644 | 676,644 | 一致 | | 十堰 | 1,048,593 | 1,048,593 | 一致 | | 恩施 | 804,736 | 804,736 | 一致 | | 神农架林区 | 1,424 | 1,424 | 一致 | | 全省 pin(B~E) | 报告无 | 2794.31 / 2522.54 / 16394.73 / 12998.74(从 `wyc_total_monthly` 同期复制) | 符合设计 | ## 四、发现的问题与处置 1. **格式兼容缺口(本次修复)**:WordML 报告无法导入。已加解析路径;两种格式共用同一套表格匹配逻辑,避免口径分叉。 2. **错误信息不友好(本次修复)**:xlsx 改名后报 `org.apache.xmlbeans.XmlException: Element workbook@... is not a valid document@...`。已改为中文业务提示。 3. **20XX 年前后报告标题格式不同**:2025 年报告标题是「湖北**网约车行业 2025年9月** 运行情况分析报告」,2026 年是「网约车行业2026年6月运行监测情况分析报告」。同一套正则均可命中,无需再改。 4. **数据缺口已由用户补齐**:2026-01~06(14:21 导入 6 份)、2025-01(14:47)、2025-10~12(14:49)均已入库;2025-09 由本次修复后补入(14:59 首次、15:04 复核)。 - 全部 2025-01~12、2026-01~08 的订单与 pin 现已齐全。 - 影响:中口径维度 4(城际城乡网约车)1~6 月由「无源」变为「可算」,**中口径排名件与中口径明细件累计口径自动归一**(此前差值 2063.45 = 1~6 月网约车城乡)。 ## 五、结论 - WordML(Word 2003 XML 改名 .docx)报告现已可直接导入,17 市州 + 合计解析正确、入库逐项对齐;真 docx 路径无回归。 - 3 条负向用例均给出中文可操作提示(.doc / 非 Word 包 / 非本报告)。 - 8 例用例全部通过;`docs/功能测试报告/` 下已归档本报告。