每周都要交的那份统计报表,以前是这样做的:打开几个查询工具,导出数据,贴进 Excel,算平均值、合格率,再一格一格填进模板。一次一两个小时,还容易填错行。最近我和 AI 一起把它改成了一个脚本:跑一下,报表就填好了。
要点速览
- 先验证数值对得上,再考虑界面。
- 用 METRICS 配置列表驱动,新增指标只加一行。
- 对不上的数先进疑点清单,不让一个问题卡住全局。
- 把业务口径整理成固定文档,AI 协作效率翻倍。
第一步:先别想界面,先对数
一开始很容易想做成一个带网页界面的系统。但真正决定成败的只有一件事:脚本算出来的数,和人工报表对不对得上。所以第一阶段只做命令行脚本:查数据库、计算、填模板,然后拿历史上的人工报表逐项比对。

第二步:配置驱动,而不是一个指标一段代码
报表里的每个指标本质上是同一个套路:从某张表取数、按某种方式聚合、写到模板的某一行。于是把它抽象成一个指标列表,每一项只描述三件事:起始行、取值函数、是否单位换算。
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 定时自动跑。
