影刀RPA工程实战:自动化流程中的人机协同与智能工单调度体系

影刀RPA工程实战:自动化流程中的人机协同与智能工单调度体系

自动化跑得再顺畅,也总会撞上它搞不定的那一下。
不是技术不行,是有些事天生就该交给人来判断。

我们把店群自动化系统一层层建到了今天,流程失败率从早期的百分之十几压到了千分之几,自愈率做到了60%以上。但剩下那百分之几的异常里,有一类是无法绕过的——需要人类认知能力才能做出的判断和操作。

登录过期后的扫码验证,平台弹出的图形验证码,一个模棱两可的买家消息意图,一张被系统标记为“疑似异常”但不确定该不该发货的订单。这些场景的共同特征是:机器能发现问题,但机器不应该替人做决定。

这不是自动化能力的局限,而是自动化应有的边界。我们花了一年半把能自动化的都自动化了,剩下这部分,需要一套人机协同体系来承接。

这篇文章讲我们怎么设计工单系统,让它和自动化流程无缝对接,让人在正确的时间介入正确的事,并把人的处理结果反哺回自动化系统。


一、自动化的天花板不是技术,是责任

我们在设计自动化系统时划了一条硬线:涉及资金、合规、安全、用户体验判断的操作,机器只提供建议,决策必须由人做出。

这条线下,自动化可以做的事情包括:检测到登录态失效后立刻暂停任务并截取二维码图片,而不是自己试图用OCR识别。检测到一条差评消息后将其高亮标记并推送给客服,而不是自动回复一段未经人工确认的道歉文案。发现一个订单的收货地址模糊后将其放入待审队列,而不是自动取消或自动通过。

在这些场景里,自动化不是“做不到”,而是“不应该做”。让机器越过这条线,带来的风险远超效率收益。

自动化的最高境界不是替代人,而是在人类必须出场的时候,用最快的速度、最准的信息把人送到需要他的地方。


二、工单类型与触发点

我们梳理了自动化系统中所有需要人工介入的场景,抽象出五类标准工单。

第一类:认证恢复工单。 登录态失效、二次验证触发、手机验证码要求。自动化流程截取当前页面状态(二维码或验证码图片),生成工单,分配给运营人员。运营在手机端扫码或输入验证码,流程等待确认后自动继续。

第二类:异常决策工单。 规则引擎无法做出高置信度判断的case。比如买家消息意图识别置信度低于阈值、订单风险评分落在灰色区间、商品价格波动幅度触发了“需人工确认”的告警线。工单携带上下文数据,由人工做最终裁定。

第三类:数据审核工单。 自动化采集到的数据触发了数据质量校验的隔离规则(第十九篇),比如解析出的金额与页面不一致、日期格式异常。工单附带页面截图和提取结果,人工核对后修正或放行。

第四类:环境维护工单。 代理切换后需要重新登录、店铺环境迁移需要手动扫码、账号资质过期需要更新。这些是半自动化的环境操作,需要人参与关键步骤。

第五类:故障诊断升级工单。 自动化运维自愈失败、诊断引擎无法确定根因、连续重试超限。工单汇总了诊断快照和已尝试的修复步骤,指派工程师介入。


三、工单数据模型

picture.image 工单不是一个简单的“通知消息”,它需要携带充足的上下文,让人在最短时间内理解情况并做出决策。

picture.image

{
  "ticket_id": "TK20260519-0042",
  "type": "auth_recovery",
  "status": "pending",
  "priority": "P0",
  "shop_id": "temu_045",
  "flow_name": "order_collect",
  "task_id": "task-abc-123",
  "created_at": "2026-05-19T08:23:15Z",
  "deadline": "2026-05-19T08:38:15Z",
  "context": {
    "current_url": "https://seller.temu.com/login/verify",
    "screenshot_url": "https://internal-screenshots/tk042.png",
    "instruction": "请使用TEMU商家APP扫描二维码完成登录验证",
    "available_actions": ["confirm_done", "report_issue", "escalate"]
  },
  "assignee": null,
  "resolution": null
}

picture.image 工单的生命周期受状态机管理:pending → assigned → in_progress → resolved / escalated / expired。每一步流转都记录时间戳和操作人,进入审计日志。

picture.image

四、工单调度:对的人,对的时间

工单生成后,关键问题是分配给谁。我们不是简单地全量丢到一个公共池子里,而是做了一层智能调度。

技能匹配:每个运营人员在系统中注册了自己的技能标签——负责的平台、负责的店铺范围、擅长的工单类型。调度器根据工单的shop_idtype匹配具备对应技能的可用人员。

负载均衡:每个人员手头同时处理的工单数量有上限。调度器检查当前负载,将新工单优先分配给负载最低的匹配人员。

优先级抢占:P0认证恢复工单如果在队列中等待超过5分钟,会触发升级通知——直接推送到整个运营小组的群聊,任何人可以抢单处理。

值班轮转:非工作时间的工单不打扰全体,只推送给当周值班人员。值班表由系统管理,每周自动轮换。

def assign_ticket(ticket):
    candidates = find_candidates(
        skills=ticket.required_skills,
        shop_scope=ticket.shop_id,
        on_duty_only=(ticket.created_at.is_outside_business_hours())
    )
    if not candidates:
        escalate_to_group(ticket)
        return
    candidates.sort(key=lambda u: u.current_ticket_count)
    assignee = candidates[0]
    ticket.assignee = assignee
    ticket.status = "assigned"
    push_notification(assignee, ticket)
    schedule_timeout(ticket)

五、等待与超时:不让自动化无限挂起

认证恢复这类工单需要自动化流程在后台等待人工操作完成。等待不是无限的——如果运营迟迟不处理,流程不能一直占着浏览器实例。

我们设计了分阶段超时机制

  • 等待阶段(前5分钟):流程保持活跃,浏览器实例不释放。工单推送后,等待人工扫码。每30秒通过CDP探测页面是否已跳转到正常后台页面。
  • 提醒阶段(5~10分钟):工单升级,通知扩大范围。流程仍保持等待,但开始记录等待时长指标。
  • 释放阶段(超过10分钟):流程保存当前断点Checkpoint,释放浏览器实例。工单降级为“待处理”,任务进入pending_human队列。等人工完成认证后,工单系统回调调度中心,任务恢复并重新获取实例。
def wait_for_human_action(ticket, timeout_minutes=10):
    deadline = time.time() + timeout_minutes * 60
    while time.time() < deadline:
        if ticket.status == "resolved":
            return ticket.resolution
        if time.time() - ticket.created_at.timestamp() > 300:  # 5分钟
            escalate_reminder(ticket)
        time.sleep(30)
    # 超时释放
    save_checkpoint()
    release_browser_instance()
    ticket.status = "expired"
    raise HumanActionTimeoutError(ticket)

这个设计保证了人工环节不会成为系统资源的黑洞。


六、人工处理结果反哺自动化

工单不只是解决问题的临时通道,更是自动化系统持续进化的数据来源。

规则反哺:当人工对一笔订单标记为“正常”而规则引擎判为“异常”时,这个决策被记录。累计同类修正达到一定阈值后,系统自动建议调整规则引擎的边界条件,工程师审核后更新规则集。

样本积累:买家消息意图识别的不确定case,人工分类后被标注,进入训练样本库。虽然当前我们没有用机器学习模型,但这些标注数据未来可以直接用于训练。

页面知识更新:如果工单是页面改版导致的元素失效,人工修复选择器后,修复结果自动更新页面元素库和DOM基线,防止同类问题再次触发工单。

诊断知识入库:故障诊断工单的最终根因和处理步骤,会被抽象后添加到诊断知识图谱中,丰富自动诊断能力。

def on_ticket_resolved(ticket, resolution):
    if ticket.type == "exception_decision":
        rule_feedback = {
            "original_prediction": ticket.context.get("engine_result"),
            "human_decision": resolution["decision"],
            "features": ticket.context.get("features")
        }
        feedback_store.add(rule_feedback)
        check_threshold_for_rule_update(rule_feedback)

这样,每一次人工介入都在让自动化系统变得更聪明一点。


七、工单的SLA与监控

工单系统上线后,不能只建不管。我们为每一类工单定义了SLA,并纳入监控。

工单类型响应SLA处理SLA超时升级
认证恢复5分钟15分钟10分钟未响应升级全组
异常决策30分钟2小时1小时未处理升级主管
数据审核4小时24小时
环境维护2小时8小时4小时未处理升级
故障诊断15分钟4小时30分钟未响应升级值班工程师

工单看板实时展示当前各类型工单的积压量、平均处理时长、SLA达标率。如果某类工单的积压量连续超过阈值,说明自动化系统的异常率在上升或运营人力不足,需要干预。


八、工单的移动端体验

大部分工单的处理发生在运营人员的手机上——扫码登录、审核截图、确认状态。我们没单独开发App,而是基于企业微信的机器人+小程序做了轻量接入。

工单推送到企业微信时,卡片里包含:

  • 工单类型和优先级
  • 店铺名称和平台
  • 一句话描述和截图
  • 操作按钮(“处理”、“转派”、“标记为误报”)

点击“处理”进入一个H5详情页,展示完整上下文和操作入口。认证恢复类工单,直接展示二维码图片,长按识别即可扫码。

移动端的响应速度和处理便捷程度,直接决定了人机协同体系的效率。我们花了大量精力打磨这个环节,让运营可以在几十秒内完成一次扫码验证,而不是非得回到工位打开电脑。


九、那些在大促期间经受住考验的时刻

这套工单体系真正体现出价值,是在去年TEMU黑五大促期间。

大促当天,平台的安全验证频率明显上升。凌晨流量涌入后,好几个店铺的登录态被平台要求重新验证。认证恢复工单在五分钟内连续弹出,工单调度器把任务均匀分配给了当晚值班的三位运营。运营在被窝里用手机扫码,一分多钟完成一个验证,流程自动恢复,买家消息回复和订单处理没断过。

如果没有这套体系,当时的场景会是:自动化流程卡住、告警半夜炸群、工程师爬起来登录服务器手动扫码、每个店铺折腾十几分钟、买家消息大量积压。大促当天消息回复慢一分钟,转化率就是肉眼可见的损失。

人机协同做得好,不是让人围着机器转,而是让机器在需要的时候精准找到人、把路铺好、把信息准备好,让人花最少的时间做只有人才能做的判断。


十、下一步:从被动工单到主动预警

目前的工单机制还是事件驱动的——出了异常才生成工单。下一步我们想把部分工单升级为主动预警任务

比如,系统预测某个店铺的登录态将在未来6小时内过期(根据历史有效期的规律),提前生成一条“建议重新登录”的工单,让运营在方便的时候主动完成,而不是等过期了被动扫码。再比如,监控到某个代理的延迟在持续上升,提前生成“建议切换代理”的工单,而不是等断了再切。

这种从“被动响应”到“主动运维”的转变,是自动化系统走向成熟的最后几公里。

最好的工单,是根本不需要生成的工单。
次好的工单,是生成了但在一分钟内就能被处理掉的工单。

作者:林焱
一个坚信再强的自动化也要给人留一把椅子的工程师

0
0
0
0
评论
未登录
暂无评论