影刀RPA 物流轨迹自动追踪快递状态实时监控与通知什么情况用什么 → 怎么做 → 有什么坑作者林焱 | 飞行社出品什么情况用什么电商发货后客服每天被问我的快递到哪了问到崩溃手动查快递100单/天纯体力活。这套方案适合批量跟踪所有订单的物流状态物流异常滞留、退回、超时未签收自动告警签收后自动触发好评邀请/售后跟进核心工具影刀RPA 快递100/菜鸟/快递鸟API 企微/钉钉推送怎么做拼多多店群自动化上架方案第一步获取待追踪的快递单号列表从你的订单系统Excel/数据库/ERP里导出待追踪的快递单号importsqlite3fromdatetimeimportdatetime,timedeltadefget_active_shipments():获取已发货但未签收的订单connsqlite3.connect(orders.db)cursorconn.cursor()# 发货后15天内的订单都需要追踪fifteen_days_ago(datetime.now()-timedelta(days15)).strftime(%Y-%m-%d)cursor.execute( SELECT order_id, tracking_no, logistics_company, ship_time, buyer_phone FROM orders WHERE ship_time ? AND delivery_status ! SIGNED AND delivery_status ! RETURNED ,(fifteen_days_ago,))rowscursor.fetchall()conn.close()result[]forrowinrows:result.append({order_id:row[0],tracking_no:row[1],company:row[2],ship_time:row[3],buyer_phone:row[4]})returnresult第二步调用物流查询API以快递100为例有免费额度企业版更稳定importrequestsimportjsonimporthashlibdefquery_kuaidi100(tracking_no,company_code,app_key): 查询快递轨迹 company_code: 快递公司编码如 yuantong, shunfeng urlhttps://poll.kuaidi100.com/poll/query.doparams{customer:你的customer编号,param:json.dumps({com:company_code,num:tracking_no,from:,# 出发地可选填空自动识别to:,# 目的地可选resultv2:1# 返回状态解析})}# 生成签名sign_strparams[param]app_keyparams[customer]signhashlib.md5(sign_str.encode()).hexdigest().upper()params[sign]sign resprequests.post(url,dataparams,timeout10)dataresp.json()ifdata.get(status)200:returnparse_tracking_data(data[data])else:print(f查询失败:{data.get(message)})returnNonedefparse_tracking_data(data):解析轨迹数据tracks[]foritemindata[track]:tracks.append({time:item[time],status:item[status],description:item[context]})# 最新状态latesttracks[0]iftrackselseNonereturn{tracking_no:data[num],status:data.get(state,UNKNOWN),# 0:在途 1:揽收 2:疑难 3:签收 4:退回latest_track:latest,full_tracks:tracks}第三步识别异常状态并告警fromdatetimeimportdatetimedefcheck_delivery_anomaly(tracking_info): 检查物流异常返回 (是否异常, 异常类型, 描述) statustracking_info[status]trackstracking_info[full_tracks]# 1. 已签收ifstatus3:returnFalse,SIGNED,已签收# 2. 已退回ifstatus4:returnTrue,RETURNED,包裹已被退回# 3. 超时未更新超过48小时无轨迹更新iflen(tracks)2:last_updatedatetime.strptime(tracks[0][time],%Y-%m-%d %H:%M:%S)hours_since_update(datetime.now()-last_update).total_seconds()/3600ifhours_since_update48:returnTrue,STUCK,f超过48小时无更新最近更新{tracks[0][time]}# 4. 疑难件状态为疑难ifstatus2:returnTrue,EXCEPTION,f包裹异常{tracks[0][description]}# 5. 揽收后超过7天未签收ship_timeget_ship_time(tracking_info[tracking_no])ifship_time:days_since_ship(datetime.now()-ship_time).daysifdays_since_ship7andstatus!3:returnTrue,OVERDUE,f发货后已超过{days_since_ship}天未签收returnFalse,NORMAL,运输中状态正常defsend_anomaly_alert(order_id,tracking_no,anomaly_type,description):发送异常告警到企微群importrequests webhook_urlhttps://qyapi.weixin.qq.com/cgi-bin/webhook/send?keyYOUR_KEYmessages{STUCK:f **物流滞留告警**\n订单{order_id}\n快递单{tracking_no}\n问题{description}\n请及时处理,RETURNED:f **包裹退回告警**\n订单{order_id}\n快递单{tracking_no}\n请立即联系买家,EXCEPTION:f⚠️ **包裹异常**\n订单{order_id}\n快递单{tracking_no}\n详情{description},OVERDUE:f⏰ **签收超时**\n订单{order_id}\n快递单{tracking_no}\n{description}}contentmessages.get(anomaly_type,f未知异常{description})payload{msgtype:markdown,markdown:{content:content}}requests.post(webhook_url,jsonpayload)第四步签收后自动触发售后跟进defhandle_signed_order(order_id,buyer_phone,tracking_no):签收后自动处理# 1. 更新本地订单状态update_order_status(order_id,SIGNED,signed_timedatetime.now())# 2. 延迟24小时发送好评邀请等买家收到货schedule_review_invite(buyer_phone,delay_hours24)# 3. 如果是高价值订单500元同时发送企微通知客服跟进order_amountget_order_amount(order_id)iforder_amount500:send_high_value_order_notification(order_id,order_amount)defschedule_review_invite(phone,delay_hours24):安排延迟发送好评邀请写入定时任务表connsqlite3.connect(tasks.db)cursorconn.cursor()trigger_time(datetime.now()timedelta(hoursdelay_hours)).strftime(%Y-%m-%d %H:%M:%S)cursor.execute( INSERT INTO scheduled_tasks (task_type, phone, trigger_time, status) VALUES (?, ?, ?, PENDING) ,(REVIEW_INVITE,phone,trigger_time))conn.commit()conn.close()第五步影刀RPA编排完整追踪流程【定时触发】每天早上9点、下午3点各运行一次 ↓ 【Python节点】get_active_shipments() → 获取待追踪订单 ↓ 【循环】遍历每个快递单号 ↓ 【Python节点】query_kuaidi100() → 查询物流状态 ↓ 【Python节点】check_delivery_anomaly() → 检查异常 ↓ 【条件判断】是否有异常 ├─ 是 → 【Python节点】send_anomaly_alert() → 发送告警 └─ 否 → 继续 ↓ 【条件判断】是否已签收 ├─ 是 → 【Python节点】handle_signed_order() → 触发售后跟进 └─ 否 → 继续 ↓ 【写入Excel/数据库】更新物流状态 ↓ 【生成报告】汇总今日物流异常情况发送给运营主管有什么坑坑1不同快递公司的编码不统一快递100用的是yuantong菜鸟用的是YTO快递鸟又是另一套。维护一个统一映射表# 统一内部编码 → 各平台编码的映射LOGISTICS_MAPPING{YTO:{# 圆通内部统一编码kuaidi100:yuantong,cainiao:YTO,kdniao:YTO},SF:{# 顺丰![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d4333482b01e4b41b9ce4222711b495d.png#pic_center)kuaidi100:shunfeng,cainiao:SF,kdniao:SF}}坑2API查询频率限制快递100免费版限制每天100次免费查询超了要付费。解决思路TEMU店群如何管理运营只查状态未签收的订单已签收的不再重复查用本地缓存同一单号5分钟内不重复查询importtimefromfunctoolsimportlru_cachelru_cache(maxsize500)defcached_query(tracking_no,company_code,_cache_busterNone):带缓存的查询5分钟内不重复请求returnquery_kuaidi100(tracking_no,company_code,APP_KEY)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/675ba69e79884d61ac50f7157010d4bc.png#pic_center)defsmart_query(tracking_no,company_code):智能查询优先用缓存cache_busterint(time.time()/300)# 每5分钟变一次returncached_query(tracking_no,company_code,cache_buster)坑3物流状态解析不稳定同一个已签收状态不同快递公司的描述不一样顺丰您的快件已由本人签收圆通签收人: 本人中通客户签收人: 门卫建议用关键词匹配而不是完全相等SIGNED_KEYWORDS[签收,已签收,SIGNED,delivered]defis_signed(description):判断是否已签收forkeywordinSIGNED_KEYWORDS:![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4989bc9232db48a38786d6be1d33c7f5.png#pic_center)ifkeywordindescription:returnTruereturnFalse坑4买家收到货但快递显示未签收快递员把包裹放在丰巢/菜鸟驿站系统显示投递但实际未签收导致误判。增加一个estimated_delivery字段结合快递公司的派件中状态做更智能的判断。总结功能节省时间附加价值批量查物流每天省1.5小时客服不用逐个查异常自动告警—问题件处理时效提升80%| 签收后自动跟进 | — | 好评率提升15-20% || 物流数据分析 | — | 找出最慢的快递公司优化选择 |落地建议先接快递100有免费额度跑通一个完整循环查状态→判异常→发通知再考虑扩容到每天上千单的规模。