编辑 | blame | 历史 | 原始文档

功能测试报告_投资明细表就绪与预览类型补齐_2026-09-20

一、功能说明

问题:报表生成页面中,「客运站投资明细表」「物流站场投资明细」显示
未知报表类型:investPassengerDetail / investLogisticsDetail,无法预览/导出。

根因:不是数据问题(8 月客运/物流投资月报已在库:客运 39 行、物流 128 行)。
上一步只把这两个类型接进了**导出**链路(exportSelected switch、REPORT_FILE_NAMES、前端列表、两个导出接口),
漏了**导出前的就绪校验与预览**链路:

  1. checkExportReady() 的 switch (t) 没有这两个 case → 落到 default:rows=0 + notes.add("未知报表类型:" + t),于是 ready=false;
  2. isInvestType(t) 未收录这两个类型 → 预览循环既不归入投资分支,也拿不到月度覆盖与投资摘要。

处置:
- checkExportReady() 新增两个 case:按类别(客运站场 / 物流园区)统计 investment_monthly 该期行数,
并校验 docs/投资/模板/ 下对应母版是否存在(缺母版则提示);
- isInvestType() 收录两个类型(月度覆盖 + 问题清单纳入投资分支);
- investPreview() 增加按类别过滤的重载(category != null 时只统计该类别项目),
使两张明细表的摘要不再混入另一类别的合计;原无参重载保留、行为不变。
- 未知类型的兜底报错**保留**(未被削弱)。

二、测试环境

项 值
日期 2026-09-20 10:4x
后端 Spring Boot 8090(重启加载,Started TrafficAuditApplication 10:49:51)
前端 Vue 8080(HTTP 200)
数据库 MySQL 127.0.0.1:3308 traffic_audit
报表期 2026-08(mode=month)
接口 GET /api/report/ready、GET /api/report/preview(types 逗号分隔)

三、用例表

编号 用例 输入 预期 实际 结论
T01 就绪校验(正向) types=investPassengerDetail,investLogisticsDetail 不再出现「未知报表类型」,ready=true 两项均 ready=true、note 为空;rows = 39(客运)/ 128(物流) ✅ 通过
T02 预览(正向) 同上,调 /api/report/preview 有月度覆盖、摘要与问题清单 覆盖 [8]、problems 为空;摘要:客运「39 项目 / 本月 2048.1 / 自年初 38648.16 / 自开始 550929.76 万元」,物流「128 项目 / 本月 90185.9 / 自年初 704107.7 / 自开始 2656354.31 万元」 ✅ 通过
T03 摘要与库内逐项对齐(入库抽查) 上述摘要 vs SQL 聚合 完全一致 SQL:客运 2048.1 / 38648.16 / 550929.76、物流 90185.9 / 704107.7 / 2656354.31,**逐项一致** ✅ 通过
T04 分类别过滤(正向) 两张表明细摘要 不应混入另一类别数据 客运 39 行、物流 128 行,恰好等于 39+128=167(investPlan 等全类别类型仍返回 167),说明明细表已按类别收敛 ✅ 通过
T05 导出回归(正向) 调 /api/report/export/investPassengerDetail、.../investLogisticsDetail 仍能正常出表 生成 gen_pax_inv.xlsx(29462 字节)、gen_log_inv.xls(134144 字节);此前已验证客运汇总页与定稿 0 差异 ✅ 通过
T06 原有投资类型回归(正向) types=investPlan,investBillion,investCounty,investFiveYearLogistics 行为不变 四项均 ready=true、rows=167、无 note ✅ 通过
T07 未知类型仍被拦截(负向) types=foo 仍提示未知类型且不就绪 ready=false、rows=0、note=未知报表类型:foo ✅ 通过
T08 缺母版提示(负向·设计覆盖) 移走母版 提示「docs/投资/模板 下缺少《…》」 未实测(未临时移动用户母版文件);代码路径与 summaryWorkbook 缺母版判定同构 ⚠ 未执行

四、发现的问题与处置

编号 问题 根因 处置
P01 两张投资明细表在报表生成页显示「未知报表类型:invest*Detail」 只接了导出链路,漏了就绪校验 switch 与 isInvestType 补齐 checkExportReady 两个 case + isInvestType 收录,见上
P02 明细表摘要若沿用原 investPreview 会混入另一类别 原方法只按报表期聚合全部投资月报 新增带 category 的重载,按类别过滤项目 id;原重载保留
P03 「合   计」行入库会虚增合计(前一晚修复的连带影响) 源表合计行被当成项目 已修复;本次核对:客运本月完成由含合计行的 2130.1 收敛为 2048.1,与 SQL 逐项一致,无遗留含「计」的项目行

五、结论

7 条用例通过、1 条(缺母版提示)未实测:
报表生成页两张投资明细表的就绪/预览已恢复正常,摘要按类别过滤且与库内 SQL 逐项一致,
导出与其它投资报表类型均无回归,未知类型兜底拦截仍然有效。
此前「未知报表类型」纯属**代码漏配**,与 8 月投资月报是否导入无关 —— 数据一直在库(客运 39 / 物流 128)。