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

投资月报《弹窗提示》规则(定稿 2026-09-17)

用户要求:「程序里面设置一个提示,只要有不对的地方就弹窗提示」。
本文件把**所有检查项、级别、弹窗文案、建议动作**写死成一张表;
《匹配校验报告_.md》开头与 弹窗提示_<YYYY-MM>.tsv 都按本表产出。
将来搬进 Java 后端/网页时**按此逐条弹窗,规则一字不改**。

一、级别定义

级别 含义 程序行为
阻断 数据不齐/解析失败,不能写表 不执行写入,必须先处理
警告 数据有疑点,需人工确认 可写入,但必须人工确认后再写
提示 仅告知,不阻断 记录备查,可继续

二、检查项清单(14 项)

编号 类型 级别 触发条件 数据来源 建议动作
1 缺本期投资系统表 阻断 「输入」目录里找不到本期《模板_查询结果》(按文件名或『时期』列识别) 输入目录 把本期投资系统导出放进 docs\投资\输入\ 后重跑
2 缺上月投资系统表 警告 找不到上月《模板_查询结果》→ 月度校验无法执行 输入目录 每月把上月、本月两份都放进 输入\
3 缺源文件解析校验 阻断 没有 解析校验_<月>.tsv 输出目录 先跑 市州月报解析.py --month <月>
4 源文件解析异常 阻断/警告 源文件「未选中工作表」(警告) 或「解析失败」(阻断) 解析校验_<月>.tsv 人工打开源文件确认表头/数据;必要时登记特例
5 源文件内部对不上 警告 项目行求和 ≠ 合计/小计/市州行 解析校验_<月>.tsv 让市州核对源文件(合计行或项目行有错)
6 源文件与投资系统不一致 警告 5 个数值字段任一:市州月报 vs 投资系统 差额 > 1 源文件 + 投资系统 人工确认以哪个为准
7 疑似取列错位 警告 市州月报某字段的值**恰好等于**投资系统另一个字段 源文件 + 投资系统 检查源文件表头(组表头合并单元格最易错位),修取列规则后重跑
8 投资系统名称写法不同 提示 名称去间隔号/括注后能对上投资系统记录 源文件 + 投资系统 已按投资系统记录做数值对照(项目名称不动)
9 投资系统查无此项目 提示 投资系统本期没有这个项目名 投资系统 知悉即可;如需以系统为准请人工核对名称
10 疑似同一项目(名称写法不同) 警告 与目标表已有项目「宽松等价」或「去括注/间隔号后相同」或相似度 ≥ 0.90 目标表 + 源文件 人工确认:是同一项目 → 不改名称、按投资系统名称更新;否 → 整行新增
11 将新增项目 提示 目标表没有该项目(且不构成第 10 条) 目标表 + 源文件 确认是真实新项目后整行插入(复制相邻行格式);相似度 0.80–0.90 会在详情里附提示
12 月度等式不符 警告 本月自年初累计 ≠ 上月自年初累计 + 本月完成 上月/本月投资系统 写入时按等式纠正,并让市州确认
13 本期无该市州数据 提示 某市州本期一个项目行都没有 源文件 确认是「确实没有项目」还是「漏报」,漏报则让市州补报
14 本期源文件里没有的项目 提示 目标表有、本期源文件没报 目标表 + 源文件 按口径保持上月原值;若已停建请人工确认是否保留

三、2026-07 期实际触发情况(跑 匹配与校验.py --month 2026-07)

共 45 项:**阻断 0 / 警告 9 / 提示 36**。

  • 警告 9:源文件与投资系统不一致 4(宜都供销商贸物流园、巴东青龙桥、松滋星络、麻城农产品综合物流园)、疑似同一项目 4(鄂湘赣一期、中国供销公安、荆门北洋、荆门智慧冷链)、缺上月投资系统表 1。
  • 提示 36:将新增项目 5、投资系统名称写法不同 5、投资系统查无此项目 15、本期无该市州数据 2、本期源文件里没有的项目 2、其它 7。

四、2026-09-17 取列错位修复记录(对应第 7 条规则)

  • 现象:报告里出现「九州通沃田国际供应链中心项目 自年初累计 市州月报 8000 / 投资系统 4200」。
  • 根因:鄂州《2026年7月企业月报汇总(鄂州).xls》表头是**两级表头**:R5 组表头「自年初累计完成投资(万元)」是**合并单元格 I5:K5**,R6 子表头 I=本年计划投资、J=合计、K=其中:本月完成投资。
    原解析规则只认「命中最靠上、词最短」,于是把「自年初累计」定位到了 I 列(本年计划投资) → 8000。
  • 用户核实:九州通沃田国际供应链中心项目 的**本年计划投资就是 8000,是对的**(与投资系统 F 列 8000 一致)。
  • 修复:市州月报解析.py 改为**合并区感知**:如果某字段的命中落在跨多列的合并单元格里,就在该合并区内排除「其它字段更深的子表头」所占的列,只剩唯一一列时才用它。
    → 「自年初累计」落在 J 列,值与投资系统 G 列(4200)、目标明细表 J 列(4200)三方一致。
  • 影响面:全量复跑 2026-07,**只有 4 行变化**(鄂州 3 行 + 天门 1 行),其余 147 行逐字不变;
    天门那行同样有 I5:K5 组表头(源文件 I=36835 是本年计划投资,J=16177.7 才是自年初累计,与目标表一致)。
  • 防复发:新增第 7 条「疑似取列错位」自动告警。回归验证:把修复前的解析结果喂给程序,会自动弹出 5 条「疑似取列错位」,命中的正是 4 个受影响项目。

五、怎么跑

python docs\投资\工具\市州月报解析.py --month 2026-07   # 产出 解析结果 / 解析报告 / 解析校验
python docs\投资\工具\匹配与校验.py   --month 2026-07   # 产出 变更清单 / 匹配校验报告 / 弹窗提示

产出(docs\投资\输出\):

文件 用途
解析结果_<月>.tsv 一行一个项目(机器可读)
解析报告_<月>.md 人读:每个文件的市州/项目数/字段求和/一致性
解析校验_<月>.tsv 每个源文件的自洽性(项目行求和 vs 合计行)
变更清单_<月>.tsv 给写入侧:动作/目标行号/6 列新值
匹配校验报告_<月>.md 人读:弹窗总览 + 匹配统计 + 三方比对 + 月度校验
弹窗提示_<月>.tsv 机器可读弹窗清单(级别/类型/品类/市州/项目名称/来源/详情/建议动作)