fix(投资): 修复两级表头导致的取列错位 + 新增《弹窗提示》机制(14 条规则)
问题(用户核实后定位):
- 报告里出现「九州通沃田国际供应链中心项目 自年初累计 市州月报 8000 / 投资系统 4200」。
用户核实:本年计划投资 8000 是对的。复核确认源文件 I=8000 是本年计划投资、J=4200 才是自年初累计。
- 根因:鄂州《企业月报汇总》是两级表头,R5 组表头「自年初累计完成投资(万元)」是合并单元格 I5:K5,
原规则「命中最靠上、词最短」把「自年初累计」定位到了 I 列。同一模板还影响天门物流。
修复:
- 格式探测.py 新增 sheet_merges()/merge_span();市州月报解析.py 的 pick_columns 改为合并区感知:
命中落在跨多列合并区内时,排除其它字段更深的子表头所占列,只剩唯一一列才采用。
- 影响面收敛:27 个源文件全量复跑,解析结果与变更清单各只有 4 行变化(鄂州 3 + 天门 1),其余逐字不变。
新增《弹窗提示》机制(用户要求:只要有不对的地方就弹窗提示):
- 市州月报解析.py 新增产出 解析校验_<月>.tsv(源文件自洽性:项目行求和 vs 合计/小计/市州行 + 解析状态)。
- 匹配与校验.py 内置 14 条检查规则,产出 弹窗提示_<月>.tsv(级别/类型/品类/市州/项目名称/来源/详情/建议动作),
并把清单置顶到《匹配校验报告》;级别分 阻断 / 警告 / 提示。
- 规则见 docs\投资\弹窗提示规则_2026-09-17.md(将来搬进 Java 后端逐条弹窗,规则不改)。
- 顺带修好 3 个检查缺陷:投资系统名称写法不同漏报、疑似同一项目漏报(中国供销.公安)、0.05 舍入误报。
本期结果(2026-07):弹窗 45 项(阻断 0 / 警告 9 / 提示 36);变更清单 147 条。
回归:把修复前的解析结果喂入,会自动弹出 5 条「疑似取列错位」告警,命中 4 个受影响项目。
确定性:连跑两次,5 个产出文件 SHA256 完全一致。
文档:《功能测试报告_投资月报取列错位修复与弹窗提示_2026-09-17.md》(C01-C10 全部通过)、工作日结第九节。