把每周手工报表交给 Python:一次配置驱动的自动化实践

封面:把每周手工报表交给 Python

每周都要交的那份统计报表,以前是这样做的:打开几个查询工具,导出数据,贴进 Excel,算平均值、合格率,再一格一格填进模板。一次一两个小时,还容易填错行。最近我和 AI 一起把它改成了一个脚本:跑一下,报表就填好了。

要点速览

  • 先验证数值对得上,再考虑界面。
  • 用 METRICS 配置列表驱动,新增指标只加一行。
  • 对不上的数先进疑点清单,不让一个问题卡住全局。
  • 把业务口径整理成固定文档,AI 协作效率翻倍。

第一步:先别想界面,先对数

一开始很容易想做成一个带网页界面的系统。但真正决定成败的只有一件事:脚本算出来的数,和人工报表对不对得上。所以第一阶段只做命令行脚本:查数据库、计算、填模板,然后拿历史上的人工报表逐项比对。

流程图:数据库取数,经 METRICS 配置列表与通用循环填入 Excel 模板,再与人工报表比对,疑点清单回流修正
取数 → 配置 → 通用循环 → 填模板 → 比对;疑点回流修正取值函数

第二步:配置驱动,而不是一个指标一段代码

报表里的每个指标本质上是同一个套路:从某张表取数、按某种方式聚合、写到模板的某一行。于是把它抽象成一个指标列表,每一项只描述三件事:起始行、取值函数、是否单位换算。

METRICS = [
    {"name": "指标A", "start_row": 5,  "fn": calc_metric_a, "scale": False},
    {"name": "指标B", "start_row": 12, "fn": calc_metric_b, "scale": True},
    # 新增指标只需加一行
]

for m in METRICS:
    values = m["fn"](conn, week_start, week_end)
    write_block(ws, m["start_row"], values, m["scale"])

核心循环从此不用再动:新加一个指标 = 一行配置 + 一个取值函数。目前已经接入九个模块,输出和人工报表基本一致。

第三步:对不上的数,先记下来

比对中总会遇到对不上的数。比如某项计数,数据库查出来和人工报表差了一倍,大概率是统计口径不同。正确做法是:记进疑点清单,标注原因猜测,先推进其他模块,等找到懂业务口径的人再确认。

别让一个疑点拖住整个项目。

和 AI 合作的感受

  • 它擅长的:搭架构、写重复性的查询和填表代码、分析两份数据哪里不一致。
  • 需要人把关的:业务口径、字段的真实含义、哪些数才是"对的"——这些知识在人的脑子里,得明确告诉它。
  • 最有效的方式:把约定(表结构、常量、口径)整理成一份固定文档,每次改代码前先让它读一遍。

下一步

核心逻辑稳定后,再加一个本地网页界面,让不写代码的同事也能选日期、点一下生成报表。再往后,就是把"取数—计算—填表"交给本地 Agent 定时自动跑。


上一篇
下一篇