未知报表类型:investPassengerDetail / investLogisticsDetail,无法预览/导出。ReportExportService.checkExportReady() 的 switch (t) 兜底分支(ReportExportService.java:231)。exportSelected switch、REPORT_FILE_NAMES、ReportExportController 两个接口、ReportExport.vue 两项),isInvestType() 也没收录这两个类型。checkExportReady() 新增两个 case:按类别统计 investment_monthly 该期行数 + 校验 docs/投资/模板/ 母版是否存在(缺母版给提示);isInvestType() 收录两个类型(纳入投资分支的月度覆盖与问题清单);investPreview() 增加按类别过滤重载 (period, mode, category, summary, problems),原无参重载保留;Started TrafficAuditApplication 10:49:51)。=Q4/AJ4-1 实际是「8月值 ÷ 2025年1-7月累计」;累计同比分母又把 1-6 月重复计、8 月漏计。colIndexOf() 返回 1 基列号,而 POI 列号是 0 基 → 月份列查表全落空、退化成「+2 列」,=O5/AH5-1 被算成 =R5/AK5-1(自引用)→ 货运/网约车/中口径明细 共 360 格循环引用。setCellFormula 不接受带 = 前缀的公式串,异常又被 catch (Exception ignore) 吞掉,isCellDateFormatted 判定会漏判。W4 → =V4/AW4-1),再把删列产生的 36 处 #REF! 累计同比公式还原为 AJ;_bak_202608母版删除AJ列前_20260920.xlsx;删列后母版与版式参照件《生成_道路运输量汇总表.xlsx》列结构一致。colIndexOf 改 0 基;setCellFormula 去掉 = 前缀并把 catch 改成 WARN 日志;yearMonthOf 支持裸日期序列;repairCumulativeYoyFormulas() 保留作母版兜底。ReportExport.vue 预览补齐货运量/城市客运/中口径共 8 项同比映射,修正「当月货物周转量(万吨)」单位。D:\桌面\生成数据\生成_全省预安排计划进度情况汇总 (2).xls 发现武汉物流段多出 27 个项目(高桥货运站…越海华中供应链总部基地,开工年 2006-2016)。investPlan 是「母版原位替换 + 动态插行」——母版武汉物流只预留 7 行,库里多出的项目按「市州+类别」自动补插到小节末尾ReportExportService.java 动态插行段)。所以库里有多少项目,生成表就出多少行。docs/投资/输出/清理残留_十堰汇总表带出的非十堰项目_2026-09-20.tsv(31 个项目 + 39 条月度数)后删除;docs/投资/输入/物流(物流园区)/8月 里没有武汉文件),6 个新项目在库里没有 2026-08 月度数,ReportExportService.investPlan() 新增 addProjectsWithoutMonthly(...),在**市州小节/块合计/全省合计**三处累加后,$alert(MessageBox)承载导入结果 HTML,内容一长就把「确认」挤出屏幕,且不能拖动。el-dialog:v-dialog-drag 标题栏拖动、custom-class="import-result-dialog"(全局样式,圆角 + 内容区 max-height 滚动 + 底部按钮固定),ReportExportTaskService(固定 1 线程池 daemon):提交即返回 taskId,前端 700ms 轮询「步骤 + 百分比 + 已用时长」;结果保留 30 分钟(内存态,进程重启失效)。SELECT IFNULL(MAX(id),0) FROM import_batch,期间只要有新导入就自动失效(取不到版本时禁用缓存);同一报表期并发提交自动去重、复用同一任务。ReportExportService 新增带进度回调的 exportSummaryWorkbook(period, mode, toMonth, progress) 重载(原两个重载委托它),进度点 2%/6%/12%/22%/45%/70%/95%。ReportExportController 新增 3 个接口:/exportTask/summaryWorkbook(提交)、/exportTask/{taskId}(进度)、/exportTask/{taskId}/file(下载);原同步接口保留兼容。ReportExport.vue 进度弹窗:进度条 + 步骤 + 用时 + 缓存来源时间 + 失败原因,以及「保存文件 / 重新生成 / 后台运行 / 关闭」。refresh=true 真实重算;临时插一条导入后缓存自动失效。computed 与文件中已有 computed 同名重复,JS 对象后者覆盖前者 → username/myModules/visibleModules 全部丢失,created() 直接抛错、**整页白屏**。接口测试发现不了,是浏览器实测才暴露的(详见测试报告第四节)。《功能测试报告_投资明细表就绪与预览类型补齐_2026-09-20.md》:**7 条用例通过,1 条未实测**(缺母版提示,未临时移动用户母版文件)。
| 校验项 | 结果 |
|---|---|
/api/report/ready(两新类型) |
ready=true,rows=39 / 128,note 为空 |
/api/report/preview(两新类型) |
覆盖 [8],problems 为空 |
| 摘要 vs SQL 逐项对齐 | 客运 2048.1 / 38648.16 / 550929.76、物流 90185.9 / 704107.7 / 2656354.31,**一致** |
| 分类别过滤 | 客运 39 + 物流 128 = 167,全类别类型仍 167(未串类) |
| 导出回归 | 两张明细表仍可导出(29462 / 134144 字节) |
| 原有投资类型回归 | investPlan / investBillion / investCounty / investFiveYearLogistics 均 ready=true,rows=167 |
| 未知类型负向 | foo → ready=false、note=未知报表类型:foo(兜底仍有效) |
《功能测试报告_城市客运月度与累计同比_2026-09-20.md》:**15 条用例通过**。
| 校验项 | 结果 |
|---|---|
| 城市客运 R4 / T4 公式 | =Q4/AJ4-1、=S4/(V4+X4+Z4+AB4+AD4+AF4+AH4+AJ4)-1(不再是 #REF!) |
| 全省客运量 8 月同比 / 累计同比 | +4.44% / +0.117%(修复前 −86.5% / −43.5%) |
| 辅助列 | 生成表与母版均无「2025年1-7月累计」,城市客运页 BV→BU |
| 循环引用 | 全表 0 处(修复前 360 处,含货运/网约车/中口径明细 R 列) |
| 其它 18 个页签回归 | 除上述 R 列修复外逐格一致 |
| 预览接口 | 24 项指标含 8 项同比,1.03 秒 |
| 导出耗时 | 14 秒(母版读取+回填 6.5s、公式重算 4.1s、写盘传输 3.4s) |
《功能测试报告_投资预安排汇总补计与导入弹窗_2026-09-20.md》:**14 条用例通过(1 条为静态/编译级验证,点击级验收待用户实测)**。
| 校验项 | 结果 |
|---|---|
| 残留出库 | 物流项目 135→104、月度数 167→136;备份 TSV 77 行 |
| 生成表武汉物流段 | 33 行 → 6 行(航发/中通/阳逻港/极兔/华中化学品/迈睿达) |
| 武汉物流小计(补计) | c8=272476(6 个项目总投资和),其余列空 |
| 黄石物流小计 | 729375.69 → 614991.69 |
| 块合计/全省合计 | 物流 5889737.36、客运 763632.2、全省 6653369.56,与 SQL 一致 |
| 1-8月累计(c23) | 744262.86 → 733956.06,差额 = 被删项目 year_cum 之和,补计未污染该列 |
| 伪项目清除 | 咸宁客运小计 27454 → 13727 |
| 生成表行数 | 313 → 281 |
| 其它投资报表回归 | investBillion/County/FiveYearLogistics 各 136 行、两张明细表 39/97 行,ready=true,均可导出 |
| 负向 | types=foo → ready=false,note「未知报表类型:foo」 |
《功能测试报告_汇总大表异步导出与缓存_2026-09-20.md》:**17 条用例通过(接口 8 + 浏览器实测 7 + 复验 2)**。
| 校验项 | 结果 |
|---|---|
| 提交异步任务 | 0.07s 返回 taskId;进度 6→22→45→70→95→100;14.4s 完成 |
| 任务文件下载 | 1,325,109 字节,1.27s |
| 10 分钟内缓存复用 | fromCache=true、同 taskId、0.01s |
| refresh=true 强制重算 | 新任务号,真实重算 14.2s |
| 运行中并发去重 | 两次提交返回同一 taskId(11.1s) |
| 新增导入使缓存失效 | import_batch id 533→534 后 fromCache=false(测试后已 DELETE 清回 533) |
| 负向:不存在 / 未完成 taskId | 「导出任务不存在或已过期」「尚未完成(当前状态:RUNNING)」 |
| 浏览器实测 | 进度弹窗采样、自动下载、缓存提示、重新生成、后台运行、失败提示 6 项全通过 |
| 产物一致性 | 缓存件与重算件解包后逐条目一致;三份缓存件 SHA256 相同 |
| 附带修复 | computed 重复键导致报表生成页整页白屏(已修复并浏览器复验) |
| 复验(用户问题 2) | 预览同比 12 行齐全;「累计货物周转量 0%」经查库为取数源本身 total_yoy=0.00000346,非缺陷 |
deploy/traffic-audit-deploy-20260913/backend/docs/生成汇总大表/ 与 _deploytest/ 下仍是**带 AJ 列的旧母版** ——#DIV/0!(不可比),如需改空白需用户确认口径。8 月版十堰汇总表未清理:用户只清了 7 月版(108032→90112 字节),8 月版(mtime 2026-08-20)仍含武汉 27 + 黄石 4 段;
若重导 8 月物流,已删除的 31 个项目会重新建档 → 重导前需同样清理(或由我代做,待用户确认)。