/
baelorsw
/
Alarma_Engine
Обзор
Документация
Войти
/
baelorsw
/
Alarma_Engine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
engine/sla_engine.py
45 строк
2 KB
baelorsw
отправка запросов с нормальной кириллицей
11 май 2026, 23:09
11 май 2026, 23:09
86bcebc
Код
Авторство
О чём код?
# engine/sla_engine.py from datetime import datetime, timedelta from typing import Dict # Правила SLA: (категория, срочность) → время обработки в минутах SLA_RULES = { ("жалоба", "высокая"): 5, ("жалоба", "средняя"): 15, ("жалоба", "низкая"): 30, ("вопрос", "высокая"): 10, ("вопрос", "средняя"): 15, ("вопрос", "низкая"): 30, ("предложение", "любая"): 60, ("заявка", "любая"): 30, } def get_sla_minutes(category: str, urgency: str) -> int: """ Возвращает количество минут на обработку по категории и срочности. """ key = (category.lower(), urgency.lower()) if key in SLA_RULES: return SLA_RULES[key] # Если точного совпадения нет — пробуем с "любая" fallback_key = (category.lower(), "любая") return SLA_RULES.get(fallback_key, 60) # По умолчанию 60 минут def calculate_deadline(sla_minutes: int, from_time: datetime = None) -> datetime: """ Рассчитывает дедлайн. """ now = from_time or datetime.utcnow() return now + timedelta(minutes=sla_minutes) def is_overdue(deadline: datetime, as_of: datetime = None) -> bool: """ Проверяет, просрочено ли обращение. """ now = as_of or datetime.utcnow() return now > deadline