结论先行:电商订单的全自动监控完全可行——每天3次自动同步、退款自动排查、云仓发货表自动生成、快递单号自动回填、企微机器人实时通知,整套系统已稳定运行数月,将人工操作从每天2小时降到接近零。核心技术栈:Python + 平台API + OCR验证码识别 + 多维表数据中枢 + 企微Webhook。
这篇文章分享完整的架构设计和踩坑记录,品牌信息已脱敏,技术思路可直接复用。
先说结果
现在这套系统已经稳定运行了几个月,每天自动执行3次:
| 时间 | 系统自动做什么 |
|---|---|
| 上午9点 | 全量同步订单到多维表 + 排查退款 + 清理已发货 + 推送今日待发货汇总 |
| 下午3点 | 全量同步 + 回填快递单号到平台 + 推送待发货明细 |
| 下午3:50 | 自动导出云仓发货表Excel + 企微机器人发文件给云仓 |
整个过程完全不需要人工介入。我老婆现在只需要看企微群里机器人发的消息,知道今天有哪些单要发就行了。
系统架构
先看整体架构,不复杂,但每一环都有坑:
| |
核心组件就三个:
- 电商平台API对接:登录、拉取订单、回填快递、退款查询
- 多维表作为数据中枢:主表存全部订单,云仓表存待发货信息
- 规则引擎:去重逻辑、退款过滤、赠品计算、快递编码映射
第一个坑:平台登录态管理
电商平台的登录流程比想象中复杂。不是简单的账号密码,还有图形验证码。
我的方案是用Python的requests库模拟登录流程,遇到验证码时,调用OCR引擎自动识别。
这里有一个关键细节:验证码识别不是100%准确的,实际成功率大概在80%-90%。所以我加了一个重试机制——识别失败就自动重新请求验证码再试,最多3次。3次都失败就通过企微机器人通知人工介入。
实际运行中,几乎没触发过人工介入。因为验证码本身不复杂,4位数字字母,OCR引擎处理起来压力不大。
技术选型提示:验证码OCR我选了一个开源的轻量方案,不需要GPU,CPU就能跑。对于这种简单验证码,精度完全够用。
第二个坑:订单状态判断
平台的API返回数据里,有多个状态字段,文档说得不清晰。
比如deliveryStatus字段,待发货的订单也返回delivered,如果用这个字段判断发货状态就会出错。实际应该用orderStatus字段:"Y"表示已发货,"N"表示待发货。
这个坑我踩了两天。一开始用错字段,导致所有订单都显示"已发货",云仓表一条数据都同步不进去。
教训:第三方API的文档不一定准确,关键逻辑一定要用真实数据验证。我后来专门写了一个对比脚本,把API返回的字段值和平台后台显示的状态一一对照,才找到正确的判断逻辑。
第三个坑:订单去重
平台的全量订单接口每次返回的是所有历史订单,不是增量的。这意味着每天同步都会拉到大量重复数据。
去重逻辑看似简单——按订单号去重就行——但实际有一个问题:同一个订单号下可能有多个商品。比如一个订单里同时买了A产品和B产品,在云仓发货表里需要拆成两行。
所以我的去重维度是**(订单号 + 商品名称)**组合去重,而不是只按订单号。
此外还有一个业务需求:同一收件人的订单要排列在一起,方便云仓拣货打包。这个排序逻辑是在写入多维表时做的,按收件人姓名+手机号分组后排序写入。
第四个坑:退款订单处理
退款订单需要从正常流程中排除——同步到主表标记为"已退款",但不进入云仓发货表。
平台有专门的售后API,可以查询退款状态。我筛选status为refund(退款中)或refunded(已退款)的订单,同步时做排除处理。
这里有一个边界case:部分退款。比如一个订单里3个商品,退了1个,剩下2个还是要发货的。对于这种情况,我的策略是标记为"需人工审核",不自动处理。
实际业务中,部分退款的比例很低,大概不到2%。所以暂时用人工兜底是合理的。
赠品计算的自动化
我们有一个活动规则:同一收件人,排除某个特定产品后,其他产品数量满4送1赠品,满6送2,以此类推。
这个计算逻辑不复杂,但要考虑几个因素:
- 计算范围是"当日所有订单中同一收件人的产品汇总"
- 排除特定产品(晚安霜)后计数
- 赠品记录追加在该收件人所有订单记录的最后
我用Python写了一个阶梯计算函数,核心逻辑大概20行代码。赠品计算完成后,自动生成一条赠品记录写入云仓发货表,商家编码填赠品对应的编码,数量按阶梯结果填写。
这个功能后来加了活动截止日期的控制,超过截止日期后不再自动计算赠品,避免活动结束后还在送。
物流单号回填
发货完成后,快递单号需要填回电商平台。平台提供了express/add接口,但这里也有一个坑:
订单ID必须用商品子订单ID,不能用父订单ID。
一个父订单下可能有多个子订单(对应不同商品),每个子订单需要单独回填快递信息。如果用父订单ID调接口,会报"订单信息不存在"的错误。
快递编码也需要映射。平台有自己的编码体系(比如极兔是JT,京东是JD,圆通是YTO),需要把快递公司名称转换成对应的编码。
企微机器人通知
通知是整个系统的"最后一公里"。不管前面自动化做得多么完善,如果信息不能及时触达到人,价值就大打折扣。
我对接了企业微信机器人Webhook,分两种通知:
1. 退款通知(即时触发) 发现退款订单时立即推送,包含订单号、退款金额、产品名称,方便及时处理。
2. 订单推送(定时) 上午发汇总(今天有多少单要发,涉及哪些产品),下午发明细(每一条待发货订单的详细信息)。
3. 文件推送(定时) 下午3:50自动导出云仓发货表为Excel文件,通过企微机器人发送。云仓那边直接下载就能用。
数据中枢:为什么选多维表
这个系统最核心的设计决策是用多维表作为数据中枢,而不是直接写数据库。
原因有三个:
- 可视化:多维表自带表格界面,任何人打开都能看,不需要写SQL查询
- 协作性:云仓、发货、客服等角色可以直接在多维表里操作,不需要额外的系统
- 集成性:多维表有完善的API,Python脚本可以读写,和企业微信等工具也能对接
主表存全部订单的详细信息(订单号、产品、收件人、地址、手机号、发货状态、快递公司、快递单号等),云仓表只存需要发货的订单(店铺名称、原始单号、商家编码、货品数量等)。
两个表通过订单号关联,但数据结构不同,因为各自服务的业务场景不一样。
一个关键的设计原则
整个系统的设计遵循一个原则:AI做能做的,人做AI做不了的。
- 能自动判断的(发货状态、退款状态、去重),全自动
- 需要业务判断的(部分退款、异常订单),人工兜底
- 信息触达(企微通知),实时推送
不是追求100%自动化,而是追求最小化人工介入的同时保证业务安全。
电商订单自动化常见问题
Q:不懂编程的电商卖家能做自动化吗? A:可以,但需要有人帮你搭建。核心逻辑不复杂,关键是理解你的业务流程,然后把重复性操作抽象成规则。建议找有电商+技术经验的服务商做交付,比自己摸索快得多。
Q:平台API对接会不会被封号? A:正常使用API不会。大多数电商平台都提供开放API给商家使用,只要不超过调用频率限制、不做违规操作就没问题。建议用官方API而不是爬虫。
Q:多维表和Excel有什么区别?为什么不用Excel? A:多维表本质上是云端数据库,支持多人同时协作编辑、有API接口可以程序化读写、数据实时同步。Excel是本地文件,没法做自动化对接。如果你需要和其他系统联动,多维表是更好的选择。
Q:系统出故障了怎么办? A:我的方案是"企微通知兜底"——任何环节出错都会通过企微机器人推送告警,人工介入处理。实际运行中故障率很低,因为逻辑不复杂,主要风险在于平台API变更或登录态过期。
这个思路能复用到哪里?
这套系统的核心逻辑其实很通用:
| |
任何有"从A系统拉数据、处理后写入B系统、再通知C角色"需求的场景,都可以参考这个架构。比如:
- 跨平台订单管理(多个电商平台的数据汇总)
- 客户跟进系统(自动同步线索、分配、提醒)
- 财务对账(自动拉取流水、匹配订单、标记差异)
- 库存管理(自动监控库存、预警补货)
关键不在于用什么工具,而在于把重复性业务流程抽象成可自动执行的规则。
如果你也在做类似的事情,或者想了解某个环节的具体实现,欢迎交流。
希望这篇文章对你有帮助。如果你在实践中遇到问题,欢迎交流讨论,我的微信:18010612009(杨哥)。