Разработка AI-системы мониторинга SLA контакт-центра
SLA мониторинг отслеживает соответствие ключевых показателей контакт-центра договорным обязательствам в реальном времени и предупреждает о рисках нарушения задолго до его наступления.
Ключевые SLA-метрики
from dataclasses import dataclass
@dataclass
class SLATarget:
metric_name: str
target_value: float
unit: str
direction: str # "below" или "above"
warning_threshold: float # % от целевого для предупреждения
SLA_TARGETS = [
SLATarget("service_level", 80, "%", "above",
warning_threshold=0.85), # 80% звонков за 20 сек
SLATarget("abandonment_rate", 5, "%", "below",
warning_threshold=0.80),
SLATarget("average_handle_time", 240, "sec", "below",
warning_threshold=0.90),
SLATarget("first_call_resolution", 75, "%", "above",
warning_threshold=0.85),
SLATarget("average_speed_of_answer", 20, "sec", "below",
warning_threshold=0.85),
SLATarget("customer_satisfaction", 4.0, "score", "above",
warning_threshold=0.95),
]
Real-time SLA трекер
class SLAMonitor:
def __init__(self, targets: list[SLATarget]):
self.targets = {t.metric_name: t for t in targets}
self.alert_manager = AlertManager()
async def check_sla_status(self, current_metrics: dict) -> list[dict]:
alerts = []
for metric_name, target in self.targets.items():
current = current_metrics.get(metric_name)
if current is None:
continue
status = self.evaluate_metric(current, target)
if status != "ok":
alerts.append({
"metric": metric_name,
"current": current,
"target": target.target_value,
"status": status, # "warning" | "breach"
"timestamp": datetime.utcnow().isoformat()
})
if alerts:
await self.alert_manager.send_alerts(alerts)
return alerts
def evaluate_metric(self, current: float, target: SLATarget) -> str:
warning_level = target.target_value * target.warning_threshold
if target.direction == "above":
if current < target.target_value:
return "breach"
elif current < warning_level:
return "warning"
else: # below
if current > target.target_value:
return "breach"
elif current > warning_level:
return "warning"
return "ok"
Предиктивное предупреждение о нарушении
class SLABreachPredictor:
def predict_breach_risk(
self,
current_metrics: dict,
historical_pattern: list[dict],
time_horizon_minutes: int = 30
) -> dict:
"""Предсказываем риск нарушения SLA в ближайшие N минут"""
# Тренд метрики за последние 15 минут
sl_trend = self.calculate_trend(
[h["service_level"] for h in historical_pattern[-15:]]
)
# Прогноз
current_sl = current_metrics.get("service_level", 80)
projected_sl = current_sl + sl_trend * time_horizon_minutes
return {
"projected_service_level": projected_sl,
"breach_risk": projected_sl < 80,
"minutes_to_breach": self.estimate_time_to_breach(
current_sl, sl_trend, target=80
) if sl_trend < 0 else None,
"recommended_action": self.recommend_action(projected_sl, current_metrics)
}
Автоматические корректирующие действия
При риске нарушения SLA система может автоматически:
- Вызвать операторов из перерыва
- Перенаправить звонки на другой skill-группу
- Увеличить скорость предиктивного набора
- Отправить уведомление супервайзеру
Сроки: SLA мониторинг + алертинг — 2–3 недели. С предиктивными предупреждениями — 1.5 месяца.







