
字节笔记本
2026年10月6日 · 约 15 分钟读完
Agentic Coding 实战一:从零做销售数据看板
本文是 Agentic Coding 实战系列的第一篇。这一篇带你从零做一个真实可用的销售数据看板:这是 Anthropic 报告里反复提到的「专家杠杆」经典场景,懂业务的人加上 Agent,把重复劳动变成自动化。全程跟着步骤走,你不需要懂一行代码,两小时后会得到一个能给老板看的网页看板。

一、项目背景:把每周两小时的 Excel 工作变成自动化
以一位会计的日常为例。她每周一都要花两小时做同一套动作:从 ERP 导出本周销售 Excel,手工剔除退款,按客户汇总,做趋势图,排出 Top 10 客户,最后写进 PPT 发给老板。
目标是做一个网页看板,周一早上打开就能看到所有数据。
这位会计的价值在哪里?在于她懂业务:
- 哪些订单是退款,要剔除
- 毛利率该用什么口径
- 老板想看 Top 几个客户
- 哪些数字异常要预警
这些知识,Agent 永远不会自己知道。懂业务的人加上 Agent,每周省 2 小时,一年就是 104 小时。这种投入一次、长期回报的自动化,正是普通人用 Agent 最划算的切入点。
二、第一步:写项目规格(RFC)
动工前先按 RFC 框架把规格写清楚:R 是角色与背景,F 是功能,C 是验收标准。
# 销售看板项目规格
## R - 角色 / 背景
我是公司会计。每周要从 ERP 导出的销售 Excel 里,
做一份给老板的看板。希望做成网页,每周一早上自动生成。
## F - 功能
读取 sales.csv(ERP 导出格式),生成网页看板:
数据清洗规则(我的专业!):
- amount 为负的行是退款,单独统计但不算入销售
- 客户名为空视为散户,归到「未分类」
- date 列要解析成日期
- product 列去前后空格
展示内容:
1. 4 个 KPI 卡片:总销售额 / 有效订单数 / 客单价 / 毛利率
2. 销售趋势:按周汇总的折线图
3. Top 10 客户表格(按销售额降序)
4. 异常预警:环比下降超过 20% 的客户标红
界面:
- 单页 HTML,能本地打开
- 简洁商务风(蓝灰主色)
- 手机也能看
## C - 验收标准
- 给定 sales.csv 跑一遍,生成 dashboard.html
- 用真实数据核对:总销售额要等于 Excel 里 SUMIF(amount>0),
Top 1 客户要对得上,毛利率要符合行业 25%-35% 的常识把这份规格保存为项目里的 SPEC.md。规格写得越具体,Agent 的产出越接近你要的东西;其中的清洗规则和验收标准,恰恰全部来自你的业务知识。
三、第二步:任务分解
把项目拆成三个模块(L2),再拆成可以独立验证的小任务(L3):
# 销售看板 - 任务分解
## L2 模块
1. 数据层:读 CSV + 清洗
2. 计算层:KPI + Top 客户 + 趋势
3. 展示层:生成 HTML 看板
## L3 任务清单(节选)
- 1.1 写 load_data():读 sales.csv
- 1.2 写 clean_data():清洗规则
- 1.3 写测试验证清洗结果
- 2.1 写 calc_kpis():4 个 KPI
- 2.2 写 top_customers():Top 10
- 2.3 写 weekly_trend():周趋势
- 2.4 写 detect_anomalies():异常预警
- 3.1 生成基础 HTML 框架
- 3.2 渲染 KPI 卡片
- 3.3 嵌入折线图(Chart.js)
- 3.4 渲染客户表格 + 红色预警
## MVP(最小可用版)
完成 1.1 + 1.2 + 2.1 + 3.1 + 3.2 就能跑起来。先做 MVP,让看板尽快跑起来,再逐个补齐异常检测等增强功能。
四、第三步:环境与项目初始化
mkdir sales-dashboard
cd sales-dashboard
git init启动 Agent,输入:
在当前目录建一个 Python 项目,结构如下:
- data/ 放 CSV 数据
- src/ 放源代码
- tests/ 放测试
- output/ 放生成的 HTML
- SPEC.md 项目规格
- .gitignore 忽略规则
- requirements.txt 依赖清单
先创建好这些目录和空文件,再写一份示例 sales.csv 放 data/ 里
(10 行假数据,含中文客户名、有退款行、有空字段)。Agent 会创建出上述结构,并生成类似这样的示例数据:
date,customer,product,amount,cost
2026-06-01,北京科技有限公司,服务A,15000,9000
2026-06-02,上海贸易,产品B,8000,5600
2026-06-03,,产品A,3000,1800
2026-06-04,深圳科技,服务A,22000,13000
2026-06-05,北京科技有限公司,产品B,-5000,-3000注意有一行金额是负数(退款),有一行客户名为空,这正是后面要清洗的对象。初始化完成后做第一次存档:
git add .
git commit -m "项目初始化:目录结构 + 示例数据"五、第四步:实现数据层,用业务常识验证
新开一个会话,让 Agent 全新开始,然后下达任务:
任务:实现数据层(SPEC.md 里的模块 1)
请实现 src/data_loader.py,包含两个函数:
1. load_data(file_path):用 pandas 读 CSV,date 列解析为日期,
amount 列转 float
2. clean_data(df):amount 大于 0 为有效订单,小于 0 为退款;
customer 为空的填「未分类」,返回有效订单、退款单和散单数量
并写 tests/test_data_loader.py,至少 5 个测试用例:正常数据、
含退款、含空客户名、缺失 amount 字段、空文件。跑通测试后告诉我。Agent 会写出类似这样的代码,大致扫一眼即可:
# src/data_loader.py
import pandas as pd
def load_data(file_path):
df = pd.read_csv(file_path, encoding='utf-8-sig')
df['date'] = pd.to_datetime(df['date'], errors='coerce')
df['amount'] = df['amount'].astype(float)
return df
def clean_data(df):
valid = df[df['amount'] > 0].copy()
refunds = df[df['amount'] < 0].copy()
valid['customer'] = valid['customer'].fillna('未分类').str.strip()
unknown = (valid['customer'] == '未分类').sum()
return {'valid': valid, 'refunds': refunds,
'unknown_customer_count': unknown}先跑测试确认全绿:
python -m pytest tests/ -v更关键的是业务验证,这是你的专业价值所在。让 Agent 用真实数据跑一遍,报告有效订单数、退款数、散单数和总金额,然后自己心算核对:这周大概 50 单有效,退款一般 3 到 5 单,总销售应该在 50 万上下。如果 Agent 报告「有效 50 单、退款 4 单、总销售 48 万」,业务验证通过。验证完立刻存档:git commit。
六、第五步:实现计算层,重点验证毛利率
同样新开会话,实现计算层 src/calculator.py,包含四个函数:
- calc_kpis:总销售额、有效订单数、客单价、毛利率
- top_customers:按客户聚合销售额,降序取前 10
- weekly_trend:按周聚合的日期与销售额
- detect_anomalies:找出本周销售额环比下降超过 20% 的客户
同样配上测试:正常 KPI 计算、Top 客户排序是否正确、周趋势数据点数量、异常检测能否识别下降的客户。
这里的业务验证重点是毛利率。让 Agent 用真实数据跑 calc_kpis:报告 27%,对照行业常识(成本率通常 65% 到 75%,毛利 25% 到 35%),落在合理区间。如果 Agent 报出 85% 的毛利率,必有 bug,一眼就能看出来。验证通过后 commit。
七、第六步:实现展示层,生成看板
最后一个模块是展示层:
任务:实现展示层(SPEC.md 里的模块 3)
请实现 src/render.py,生成 output/dashboard.html:
1. 单页 HTML,所有 CSS/JS 内联,不依赖外部文件
2. 用 Chart.js(CDN 引入)画折线图
3. 顶部 4 个 KPI 卡片并排,中间销售趋势折线图,下方 Top 10 客户表格
4. 主色 #2563eb,背景 #f8fafc,文字 #1e293b
5. 异常客户在表格里整行标红(背景 #fef2f2)
6. 响应式,手机也能看
入口 main.py 调用所有模块,生成最终 dashboard.html。
写完跑 python main.py,确认文件生成成功。python main.py 之后用浏览器打开 output/dashboard.html,做最终的业务核对:
- 总销售额对得上 Excel 里的 SUMIF
- Top 1 客户对得上
- 毛利率 27% 落在合理区间
- 退款没有算进销售
- 异常客户确实是那几个在下降的
全部通过后 commit。

最终项目结构长这样:
sales-dashboard/
├── data/sales.csv
├── src/
│ ├── data_loader.py
│ ├── calculator.py
│ └── render.py
├── tests/
│ ├── test_data_loader.py
│ └── test_calculator.py
├── output/dashboard.html
├── main.py
├── SPEC.md
├── CLAUDE.md
├── requirements.txt
└── .gitignoremain.py 把三个模块串起来:读数据、清洗、计算、渲染,最后打印总销售额和毛利率。看不懂代码没关系,重要的是知道:跑这个脚本,看板就出来了。
八、加分项:让它每周一自动跑
看板做完后,还能让它每周一自动更新,这同样交给 Agent:
- Mac 上用 cron:
crontab -e加一行0 8 * * 1 cd /path/to/sales-dashboard && python main.py,每周一早上 8 点自动生成 - Windows 上用任务计划程序:让 Agent 写一个 .bat 脚本,再加进任务计划
- 进阶:在 main.py 末尾加发邮件功能,生成看板后把 dashboard.html 作为附件发出,SMTP 配置从 .env 读取,收件人可以填 boss@example.com 这类占位地址,实际部署时换成你自己的
九、常见坑与排错
- 中文显示成方框:CSV 编码问题,让 Agent 改用
utf-8-sig编码读取 - 图表不显示:Chart.js 没加载成功,检查 CDN 链接,国内访问慢可以换 staticfile 的镜像地址
- 金额算错:最常见的原因是没处理退款,检查 clean_data 是否正确过滤
- 日期解析失败:CSV 里日期格式不一致,让 Agent 用
errors='coerce'解析并丢掉解析失败的行
十、延伸玩法
基础版跑通后,每个小改进都是一个 L3 任务:多月份对比、销售目标与实际的差距、产品维度分析(哪个产品最好卖)、按销售员看的部门维度分析、毛利低于 20% 自动预警。一周加一个,慢慢迭代。这就是 Agentic Coding 的精髓:不用一次性做完,每个小改进都能立刻用上。
想更进一步,可以把项目改造成 Streamlit 应用,让用户上传 CSV、在线生成看板,免费部署到 Streamlit Cloud。这只需要一句提示词,Agent 会写出 app.py 并告诉你部署步骤。
小结
- 实战流程:规格,分解,逐步执行加验证加 commit。
- 业务知识是验证的核心:毛利率的合理区间、退款的处理口径,Agent 自己推不出来。
- 每完成一个 L3 任务立刻 commit,建立安全岛。
- MVP 先跑通,再加优化;真实数据验证胜过任何测试。



