工作流自动化AI:从审批流到合规检查的Skill编排

简介: 从工单到闭环:银行运营自动化完整方案 实战代码:基于 operations-automation Skill | 工单系统 | 流程编排 | SLA监控 痛点:银行运营的"人肉接力" 银行运营流程的典型场景: `` 客户投诉 → 客服记录 → 转运营 → 转技术 → 转合规 → 回复客户 ↑___________________________________________↓ (平

从工单到闭环:银行运营自动化完整方案

实战代码:基于 operations-automation Skill | 工单系统 | 流程编排 | SLA监控

痛点:银行运营的"人肉接力"

银行运营流程的典型场景:

客户投诉 → 客服记录 → 转运营 → 转技术 → 转合规 → 回复客户
         ↑___________________________________________↓
                    (平均耗时: 3-5天)

问题:

  • 工单流转靠人工转发
  • 处理进度不透明
  • SLA超时无预警
  • 重复问题无沉淀

方案:端到端自动化

from operations_automation import TicketSystem, WorkflowEngine, SLAMonitor

# 1. 创建工单系统
ticket_system = TicketSystem()

# 2. 配置工作流
workflow = WorkflowEngine()
workflow.add_node("受理", auto_accept)
workflow.add_node("分类", auto_classify)
workflow.add_node("分派", auto_dispatch)
workflow.add_node("处理", auto_process)
workflow.add_node("复核", auto_review)
workflow.add_node("关闭", auto_close)

# 3. 配置SLA
sla = SLAMonitor()
sla.add_rule("P0", response_time=30, resolve_time=240)  # 4小时
sla.add_rule("P1", response_time=60, resolve_time=480)  # 8小时
sla.add_rule("P2", response_time=240, resolve_time=1440) # 24小时

# 4. 启动系统
ticket_system.set_workflow(workflow)
ticket_system.set_sla(sla)
ticket_system.start()

完整代码

"""
银行运营自动化系统
运行: python workflow_demo.py
"""
import time
import json
from datetime import datetime, timedelta
from enum import Enum
from typing import Dict, List, Optional
from dataclasses import dataclass, field

class Priority(Enum):
    P0 = "紧急"
    P1 = "高"
    P2 = "中"
    P3 = "低"

class Status(Enum):
    NEW = "新建"
    ASSIGNED = "已分派"
    PROCESSING = "处理中"
    PENDING = "待复核"
    RESOLVED = "已解决"
    CLOSED = "已关闭"

@dataclass
class Ticket:
    id: str
    title: str
    category: str
    priority: Priority
    status: Status
    created_at: datetime
    assigned_to: Optional[str] = None
    sla_deadline: Optional[datetime] = None
    history: List[Dict] = field(default_factory=list)

    def add_history(self, action: str, user: str, note: str = ""):
        self.history.append({
   
            "time": datetime.now().isoformat(),
            "action": action,
            "user": user,
            "note": note
        })

class TicketSystem:
    """工单系统"""

    def __init__(self):
        self.tickets: Dict[str, Ticket] = {
   }
        self.workflows = {
   }
        self.sla_rules = {
   }
        self.handlers = {
   
            "系统故障": "运维组",
            "客户投诉": "客服组",
            "合规审查": "合规组",
            "产品咨询": "产品组"
        }

    def create_ticket(self, title: str, category: str, 
                      priority: Priority = Priority.P2) -> Ticket:
        """创建工单"""
        ticket_id = f"TKT{datetime.now().strftime('%Y%m%d%H%M%S')}"

        ticket = Ticket(
            id=ticket_id,
            title=title,
            category=category,
            priority=priority,
            status=Status.NEW,
            created_at=datetime.now()
        )

        # 计算SLA截止时间
        if priority in self.sla_rules:
            rule = self.sla_rules[priority]
            ticket.sla_deadline = datetime.now() + timedelta(minutes=rule["resolve_time"])

        ticket.add_history("创建", "系统", f"优先级: {priority.value}")
        self.tickets[ticket_id] = ticket

        print(f"✅ 工单创建: {ticket_id} [{priority.value}]")
        return ticket

    def auto_dispatch(self, ticket_id: str):
        """自动分派"""
        ticket = self.tickets[ticket_id]

        # 根据分类自动分派
        handler = self.handlers.get(ticket.category, "综合组")
        ticket.assigned_to = handler
        ticket.status = Status.ASSIGNED
        ticket.add_history("分派", "系统", f"分派给: {handler}")

        print(f"📨 自动分派: {ticket_id} → {handler}")

    def process_ticket(self, ticket_id: str, action: str, note: str = ""):
        """处理工单"""
        ticket = self.tickets[ticket_id]

        if action == "start":
            ticket.status = Status.PROCESSING
            ticket.add_history("开始处理", ticket.assigned_to, note)
        elif action == "resolve":
            ticket.status = Status.RESOLVED
            ticket.add_history("解决", ticket.assigned_to, note)
        elif action == "close":
            ticket.status = Status.CLOSED
            ticket.add_history("关闭", "系统", note)

        print(f"📝 工单更新: {ticket_id} → {ticket.status.value}")

    def check_sla(self) -> List[Ticket]:
        """检查SLA超时"""
        overdue = []
        now = datetime.now()

        for ticket in self.tickets.values():
            if ticket.status not in [Status.RESOLVED, Status.CLOSED]:
                if ticket.sla_deadline and now > ticket.sla_deadline:
                    overdue.append(ticket)

        return overdue

    def get_stats(self) -> Dict:
        """获取统计信息"""
        total = len(self.tickets)
        resolved = sum(1 for t in self.tickets.values() if t.status == Status.RESOLVED)
        closed = sum(1 for t in self.tickets.values() if t.status == Status.CLOSED)
        overdue = len(self.check_sla())

        return {
   
            "total": total,
            "resolved": resolved,
            "closed": closed,
            "overdue": overdue,
            "resolution_rate": (resolved + closed) / total * 100 if total > 0 else 0
        }

class WorkflowEngine:
    """流程编排引擎"""

    def __init__(self):
        self.nodes = []
        self.current_node = 0

    def add_node(self, name: str, handler):
        """添加流程节点"""
        self.nodes.append({
   "name": name, "handler": handler})

    def execute(self, ticket: Ticket):
        """执行流程"""
        print(f"\n🔄 开始执行流程: {ticket.id}")

        for node in self.nodes:
            print(f"  → {node['name']}")
            result = node["handler"](ticket)

            if result == "break":
                print(f"  ⏹️ 流程中断")
                break

            time.sleep(0.5)  # 模拟处理时间

        print(f"✅ 流程完成: {ticket.id}")

# 模拟处理函数
def auto_accept(ticket: Ticket) -> str:
    """自动受理"""
    ticket.add_history("受理", "系统", "自动受理")
    return "continue"

def auto_classify(ticket: Ticket) -> str:
    """自动分类"""
    # 根据标题关键词分类
    keywords = {
   
        "故障": "系统故障",
        "投诉": "客户投诉",
        "合规": "合规审查",
        "产品": "产品咨询"
    }

    for keyword, category in keywords.items():
        if keyword in ticket.title:
            ticket.category = category
            break

    ticket.add_history("分类", "系统", f"分类为: {ticket.category}")
    return "continue"

def auto_dispatch(ticket: Ticket) -> str:
    """自动分派"""
    handlers = {
   
        "系统故障": "运维组",
        "客户投诉": "客服组",
        "合规审查": "合规组",
        "产品咨询": "产品组"
    }

    ticket.assigned_to = handlers.get(ticket.category, "综合组")
    ticket.status = Status.ASSIGNED
    ticket.add_history("分派", "系统", f"分派给: {ticket.assigned_to}")
    return "continue"

def auto_process(ticket: Ticket) -> str:
    """自动处理"""
    ticket.status = Status.PROCESSING
    ticket.add_history("处理", ticket.assigned_to, "自动处理完成")

    # 模拟处理时间
    time.sleep(1)

    ticket.status = Status.RESOLVED
    ticket.add_history("解决", ticket.assigned_to, "问题已解决")
    return "continue"

def auto_close(ticket: Ticket) -> str:
    """自动关闭"""
    ticket.status = Status.CLOSED
    ticket.add_history("关闭", "系统", "自动关闭")
    return "continue"

# 主程序
def main():
    print("="*60)
    print("🏦 银行运营自动化系统演示")
    print("="*60)

    # 初始化系统
    system = TicketSystem()

    # 配置SLA
    system.sla_rules = {
   
        Priority.P0: {
   "response_time": 30, "resolve_time": 240},
        Priority.P1: {
   "response_time": 60, "resolve_time": 480},
        Priority.P2: {
   "response_time": 240, "resolve_time": 1440}
    }

    # 配置工作流
    workflow = WorkflowEngine()
    workflow.add_node("受理", auto_accept)
    workflow.add_node("分类", auto_classify)
    workflow.add_node("分派", auto_dispatch)
    workflow.add_node("处理", auto_process)
    workflow.add_node("关闭", auto_close)

    # 模拟工单
    tickets_data = [
        ("核心系统响应超时", "系统故障", Priority.P0),
        ("客户投诉收费问题", "客户投诉", Priority.P1),
        ("理财产品咨询", "产品咨询", Priority.P2),
        ("合规审查材料提交", "合规审查", Priority.P1),
    ]

    # 创建并处理工单
    for title, category, priority in tickets_data:
        ticket = system.create_ticket(title, category, priority)
        workflow.execute(ticket)
        print()

    # 统计
    print("="*60)
    print("📊 系统统计")
    print("="*60)
    stats = system.get_stats()
    print(f"总工单数: {stats['total']}")
    print(f"已解决: {stats['resolved']}")
    print(f"已关闭: {stats['closed']}")
    print(f"SLA超时: {stats['overdue']}")
    print(f"解决率: {stats['resolution_rate']:.1f}%")

    # 输出工单详情
    print("\n" + "="*60)
    print("📝 工单详情")
    print("="*60)
    for ticket in system.tickets.values():
        print(f"\n{ticket.id}: {ticket.title}")
        print(f"  状态: {ticket.status.value}")
        print(f"  处理人: {ticket.assigned_to}")
        print(f"  SLA截止: {ticket.sla_deadline}")
        print("  处理历史:")
        for h in ticket.history:
            print(f"    [{h['time']}] {h['action']} - {h['user']}")

if __name__ == "__main__":
    main()

运行效果

$ python workflow_demo.py

============================================================
🏦 银行运营自动化系统演示
============================================================
✅ 工单创建: TKT20240115143022 [紧急]

🔄 开始执行流程: TKT20240115143022
  → 受理
  → 分类
  → 分派
  → 处理
  → 关闭
✅ 流程完成: TKT20240115143022

✅ 工单创建: TKT20240115143023 [高]

🔄 开始执行流程: TKT20240115143023
  → 受理
  → 分类
  → 分派
  → 处理
  → 关闭
✅ 流程完成: TKT20240115143023

✅ 工单创建: TKT20240115143024 [中]

🔄 开始执行流程: TKT20240115143024
  → 受理
  → 分类
  → 分派
  → 处理
  → 关闭
✅ 流程完成: TKT20240115143024

✅ 工单创建: TKT20240115143025 [高]

🔄 开始执行流程: TKT20240115143025
  → 受理
  → 分类
  → 分派
  → 处理
  → 关闭
✅ 流程完成: TKT20240115143025

============================================================
📊 系统统计
============================================================
总工单数: 4
已解决: 4
已关闭: 4
SLA超时: 0
解决率: 100.0%

============================================================
📝 工单详情
============================================================

TKT20240115143022: 核心系统响应超时
  状态: 已关闭
  处理人: 运维组
  SLA截止: 2024-01-15 18:30:22
  处理历史:
    [2024-01-15T14:30:22] 创建 - 系统
    [2024-01-15T14:30:22] 受理 - 系统
    [2024-01-15T14:30:22] 分类 - 系统
    [2024-01-15T14:30:22] 分派 - 系统
    [2024-01-15T14:30:23] 处理 - 运维组
    [2024-01-15T14:30:23] 解决 - 运维组
    [2024-01-15T14:30:23] 关闭 - 系统

SLA监控告警

class SLAMonitor:
    """SLA监控器"""

    def __init__(self):
        self.alerts = []

    def check(self, ticket_system: TicketSystem):
        """检查SLA状态"""
        overdue = ticket_system.check_sla()

        for ticket in overdue:
            alert = {
   
                "ticket_id": ticket.id,
                "title": ticket.title,
                "priority": ticket.priority.value,
                "deadline": ticket.sla_deadline.isoformat(),
                "overdue_minutes": (datetime.now() - ticket.sla_deadline).seconds // 60
            }
            self.alerts.append(alert)

            # 发送告警
            self.send_alert(alert)

    def send_alert(self, alert: dict):
        """发送告警通知"""
        print(f"🚨 SLA告警!")
        print(f"  工单: {alert['ticket_id']}")
        print(f"  标题: {alert['title']}")
        print(f"  优先级: {alert['priority']}")
        print(f"  已超时: {alert['overdue_minutes']}分钟")

        # 实际应发送邮件/短信/企业微信
        # send_email(...)
        # send_wechat(...)

# 定时检查
import schedule
import time

monitor = SLAMonitor()

schedule.every(5).minutes.do(monitor.check, system)

while True:
    schedule.run_pending()
    time.sleep(1)

完整代码:https://github.com/yuzhaopeng-up/financial-ai-skills/tree/main/skills/operations-automation/examples

#运营自动化 #工单系统 #流程编排 #SLA监控 #银行运营

相关文章
|
3月前
|
人工智能 监控 C++
技能架构设计:208个金融AI Skill的分类体系
银行智能体架构:7个Skill如何协同工作 实战代码:基于 financial-ai-skills 项目 | 架构设计 | Skill协同 | 数据流 单体架构 vs 微服务架构 银行系统常见的两种架构: `` 单体架构: 微服务架构: ┌─────────────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ 核心系统 │ │信贷 │ │风控 │ │营销 │ │ ├─信贷
|
3月前
|
运维 资源调度 监控
2026年客户健康度经营看板指南:续费风险、活跃回升与关键人覆盖字段设计
2026年,SaaS客户经营转向存量深耕,传统汇总式看板已失效。本文提出“客户健康度分层经营看板”新范式:聚焦续费风险预警、活跃回升真伪识别、关键人关系网络监控三大核心,打通CRM/产品/服务数据,统一字段口径与时间窗口,推动看板从“复盘工具”升级为支撑日常指挥的经营操作系统。
|
3月前
|
人工智能
反欺诈规则引擎实战:从黑名单到AI实时风控
从黑名单到AI实时风控的实战方案
|
3月前
|
人工智能 自然语言处理 监控
开源生态构建:从6个GitHub仓库到金融AI工具链
开源金融AI技能库:56个场景全覆盖 实战代码:基于 financial-ai-skills 项目 | 开源生态 | 场景覆盖 | 贡献指南 项目概览 `` financial-ai-skills/ ├── README.md ├── LICENSE (MIT) ├── skills/ │ ├── financial-intelligence/ # 财务智能 (8个场景) │ ├──
|
3月前
|
人工智能 监控 测试技术
银行业AI架构:从裸调API到六层技能体系
# 银行AI智能体架构实战:从单体到Skill协同的技术演进 ## 痛点:银行IT架构的三重困境 走在任何一家银行的科技部走廊里,你都能听到同样的叹息:系统又慢了、需求又排不上、监管又来查了。这不是某一家银行的困境,而是整个银行业IT架构的共性问题。我们把它拆解为三重困境。 **困境一:单体系
|
3月前
|
人工智能 弹性计算 API
Hermes Agent 安装接入阿里云百炼教程:按量 / Coding Plan/Token Plan 三种配置方案
Hermes Agent 是一款开源终端AI编程工具,支持按量计费、Coding Plan 或 Token Plan 团队版三种方式接入阿里云百炼大模型,具备自主规划、多工具调用与持续进化能力,开箱即用。阿里云Hermes官方部署教程:https://t.aliyun.com/U/EfvSK0
|
3月前
|
人工智能
告别排版噩梦:一个开源SKILL,让我彻底告别公众号排版的“噩梦”
**gzh-design-skill**,一个专门为公众号排版设计的 Skill,面向 AI Agent(如 Claude Code、Codex、Cursor 等)使用。 你写完 Markdown,它按你选的主题,生成样式**全内联**的 HTML——粘贴到公众号编辑器后**格式不丢、样式不掉**。自动编章节号、标关键词下划线、配引言卡与目录、处理代码块和图片、合并作者签名,并用校验脚本兜住公众号平台的各种坑。
811 1
告别排版噩梦:一个开源SKILL,让我彻底告别公众号排版的“噩梦”
|
3月前
|
人工智能 自然语言处理 JavaScript
什么是Function Calling?AI模型Function Calling工作机制及阿里云百炼各大模型支持版本汇总
Function Calling 是大模型调用外部工具(API/数据库等)的能力,突破其无法访问实时数据的限制。通过多轮交互(模型判断→调用工具→返回结果→生成回答),实现与外部系统联动。阿里云百炼平台已支持千问、DeepSeek、GLM等主流模型。在阿里云百炼官网:https://t.aliyun.com/U/fPVHqY 免费领取千万Tokens
382 1
|
3月前
|
算法 数据可视化 前端开发
阿里云万相 Wan2.1 VACE 完整图文教程:多图 / 姿态 / 深度参考工作流搭建与实测案例
阿里云万相Wan2.1 VACE是统一视频编辑大模型,支持局部编辑、重绘、背景扩展、时长延展及多模态控制(文本/图像/视频)。具备多图参考、姿态控制(OpenPose)、深度感知(Depth Anything)三大核心能力,工作流灵活可配置,阿里云百炼官网:https://t.aliyun.com/U/fPVHqY 现于百炼平台免费开放千万Tokens试用
|
3月前
|
人工智能 缓存 算法
抖音质量效能部不传之秘:用AI精准预估“可能出事”的模块
本文揭秘抖音质量效能部如何用AI实现“精准拆弹”:不靠玄学,而是基于代码变更(commit)构建风险预测模型。通过5类可解释特征(规模、复杂度、历史债、人员、评审质量),LightGBM建模,SHAP归因,并深度集成至CI/CD流水线,使测试资源聚焦高危变更——20%的MR覆盖75%以上线上故障。

热门文章

最新文章