为化工贸易企业独立完成的销售数据项目。第一部分「可视化客户管理系统」(全国地图下钻、客户管理、Excel 批量导入)已上线并在内部试点使用;第二部分「客户内部数据分类与匹配」正在进行中——我已把整套 SOP 做成工作流和 Skill,目标是落地成一个 Agent。整体用 AI 辅助开发(Vibe Coding),我负责需求、产品定义与质量把关。

xx 化工企业(客户要求保密)是一家化工产品贸易公司,主营纯碱、尿素、小苏打三类产品,全国设有 5 个销售区域,覆盖 31 个省市,销售团队分布在不同大区。本次受邀协助他们把销售数据管理这件事做顺。
先说清楚边界,因为这个案例只展示了其中一部分。客户的真实需求拆下来是两块:一块是把散落的销售数据集中管起来、看得见(客户管理 + 可视化),另一块是客户内部那份数据的分类和匹配。第一块我已经做完并上线了,也就是下面网页里展示的这套「可视化客户管理系统」;第二块还在做,因为涉及客户的具体业务细节,没有做成可以公开演示的界面,我把它的进展放在文末的「进行中」一节里如实说明。
公司的销售数据管理长期依赖 Excel 表格——客户信息、区域分配、销量统计全部靠手动维护的电子表格。随着业务增长,这种方式暴露出明显的痛点:
与销售团队沟通后,梳理了现有的业务结构和数据流:
| 功能模块 | 用户价值 |
|---|---|
| 全国销售地图 | 一目了然看到全国各省 / 市的销售分布,颜色深浅代表销量大小 |
| 省份下钻 | 点击省份进入该省地图,查看各市的销售详情和客户列表 |
| 三产品切换 | 纯碱 / 尿素 / 小苏打一键切换,各自独立的数据视图 |
| 客户管理后台 | 增删改查客户信息,支持多地区关联、批量操作 |
| Excel 批量导入 | 保留业务方熟悉的 Excel / CSV 工作方式,上传即可自动解析入库 |
| 销区配色地图 | 5 个销区用不同颜色标注,含业务员 hover 信息 |
作为一个产品经理背景的开发者,我选择用 AI 辅助开发(Vibe Coding)来完成这个项目。核心考虑是:
| 决策点 | 背景 | 我的判断 |
|---|---|---|
| 数据库从 SQLite 迁移到 PostgreSQL | 项目初期用 SQLite 快速验证,但上线需要生产级数据库 | 数据量不大且都是演示数据,迁移成本低,果断切换 |
| 客户数据模型重构 | 最初一个客户只能对应一个地区,业务方反馈一个客户可能在多城市有业务 | 引入一对多关联(Customer → SalesCoverage),重构数据库 schema |
React 前端(ECharts 地图可视化)
↓
Node.js 后端(Express + Prisma ORM)
↓
PostgreSQL 数据库




| 阶段 | 时间 | 工作内容 |
|---|---|---|
| 需求调研 | Day 1 | 与销售团队沟通,收集销区划分、组织架构、数据格式等业务信息 |
| V1:销区地图 | Day 2 | 完成基础中国地图 + 5 销区配色 + 销区信息面板 + 内蒙古城市级拆分 |
| V2:全栈系统 | Day 3-4 | 搭建 Node.js 后端 + 数据库,实现客户管理 CRUD、地图热力图、省份下钻、产品切换 |
| V3:功能完善 | Day 5 | 客户多地区关联重构、Excel 批量导入、批量删除、UI 美化 |
| 部署上线 | Day 6-7 | 阿里云 ECS 部署、Nginx 配置、子域名方案、PostgreSQL 迁移、CI/CD 配置 |
| 技术点 | 实现方式 | 解决的业务问题 |
|---|---|---|
| 中国地图可视化 | ECharts + 阿里 DataV GeoJSON | 直观展示全国销售分布,替代 Excel 数据表 |
| 省份下钻 | 动态加载省级 GeoJSON + 后端 API 联动 | 支持从全国 → 省 → 市的逐级查看 |
| 客户多地区模型 | Prisma 一对多关联(Customer → SalesCoverage) | 支持一个客户在多个城市有业务的真实场景 |
| Excel 智能导入 | Multer + xlsx.js + 自动 adcode 映射 | 保留业务方熟悉的 Excel 工作方式,同名客户自动合并 |
| 生产级部署 | Nginx 反向代理 + PM2 进程管理 + GitHub Actions CI/CD | 子域名访问、后端自动重启、push 自动部署 |
前面的网页解决的是「客户管理 + 可视化」。但项目里还有一块没在网页上呈现,也是我现在正在做的——客户内部那份数据的分类与匹配。这部分不像地图那样适合做成一个面向所有人的界面,它更像一套需要严格按步骤跑的处理流程,而且每一步都和客户自己的业务口径绑得很死。
我的做法是先把这件事「怎么做」彻底想清楚:和业务方一起把整个数据匹配的判断步骤拆出来,写成一份完整的 SOP,再把这份 SOP 落成一个可重复执行的工作流(workflow)。它本身就是这个项目的一部分,只是因为里面是客户的具体业务细节,没有做成可以对外演示的 UI。
目前我已经进一步把这套工作流封装成了一个完整的 Skill。但这个 Skill 里直接带了客户的具体信息(业务规则、分类口径这些),所以暂时不能公开放出来——这也是它没有出现在上面网页里的原因。
我最终想把这套流程做成一个 Agent,让它在日常里真正跑起来。设想的用法是这样:
这样内勤不需要懂背后的规则,也不用一步步手动操作——他们要的是结论,中间那套判断交给 Agent 按固定流程跑。这部分还在推进中,等它成熟、且能在不暴露客户信息的前提下展示时,我会再补到这个案例里。