ITIL 4 · 19 сен 2026 г. · 10 мин чтения

Проектирование SLA-календарей, устойчивых к смене графика и праздникам

Ошибка, которую почти каждое внедрение SLA совершает в первый же день. Рабочие часы, турецкие государственные праздники и отпуска технических специалистов в единой модели календаря.

В любом внедрении ITSM наступает момент — обычно примерно через шесть недель после запуска, — когда руководитель службы поддержки отправляет директору по ИТ первый квартальный отчёт по SLA и тихо замечает, что цифры не сходятся. Не сильно — процентный пункт тут, подозрительное нарушение там, — но не сходятся. Схема всегда одна и та же: инцидент, открытый в 16:55 в пятницу перед Курбан-байрамом, помечен как нарушение в понедельник утром, хотя на самом деле в эти дни ни один специалист не работал. Политика SLA гласила «с 9 до 17, с понедельника по пятницу», календарь показывал, что Рамазан-байрам выпадает на среду, и где-то между этими двумя фактами заявка провалилась в щель.

Наивный SLA-календарь — тот, с которым любая ITSM-система поставляется по умолчанию, — и есть причина этого. Это самый распространённый источник ненадёжной отчётности по SLA, и его можно исправить. В этой статье мы разберём модель календаря, которую используем и рекомендуем, а также четыре категории сложностей, с которыми приходится справляться любому промышленному календарю.

Наивный вариант по умолчанию: «с 9 до 17, с понедельника по пятницу»

Большинство инструментов ITSM «из коробки» предлагают SLA-календарь рабочих часов, который выглядит так:

Это нормально для небольшой компании, где вся ИТ-команда живёт в одном городе, работает по одному графику и уходит в отпуск в одни и те же дни. Для всех остальных случаев это не работает. В реальном мире как минимум четыре категории сложностей ломают эту модель уже в первый год:

  1. Праздники, которые сдвигаются — большинство турецких религиозных праздников привязаны к лунному календарю и смещаются на 10–11 дней раньше каждый год.
  2. Модели смен — круглосуточный центр сетевых операций (NOC) вообще не соблюдает «рабочие часы».
  3. Отпуска технических специалистов — часы SLA продолжают идти независимо от того, находится ли назначенный специалист на месте.
  4. Мультирегиональные операции — Стамбул открывается в 09:00 по Europe/Istanbul; Лондон открывается в 09:00 по Europe/London; заявке уровня P1 нет до этого дела.

Разберём каждую по очереди.

1. Турецкие государственные праздники — не фиксированные даты

В официальном турецком календаре праздников есть два типа дней:

Правило неполного дня имеет значение. Совет министров регулярно объявляет рабочий день, предшествующий байраму, официальным неполным днём (арефе), когда государственные учреждения закрываются в 13:00. Службы поддержки частного сектора действуют по-разному — одни следуют государственному неполному дню, другие работают полный день, третьи закрываются полностью. Какую бы политику ни принимала ваша организация, SLA-календарь должен кодировать её явно. Неполный день — это не «половина рабочих часов»; это конкретное окно, которое начинается в обычное время открытия и заканчивается в 13:00.

Помимо этого, президентство Турции время от времени объявляет внеплановый выходной — день после победы национальной сборной по футболу, экстренный день траура или «мостик» между фиксированным праздником и выходными. Такие дни невозможно заранее загрузить ни в один календарь. Модель SLA-календаря должна поддерживать добавление разового праздника с предупреждением за 24 часа без пересчёта истории.

Любой SLA-календарь, для добавления праздника в который инженеру требуется повторно развернуть код, откажет уже в первый год эксплуатации. Календарь должен быть данными, а не конфигурацией.

2. Модели смен — это не «рабочие часы»

У круглосуточного центра сетевых операций нет рабочих часов. У него есть смены. SLA-календарь для круглосуточной службы должен полностью отличаться от календаря для службы, работающей с понедельника по пятницу. И в большинстве реальных организаций сосуществуют оба варианта — круглосуточный NOC обрабатывает инфраструктурные инциденты P1, а служба с графиком 09–18 обрабатывает заявки уровня L1. Использовать один календарь для обоих нельзя.

Три паттерна смен, которые мы моделируем чаще всего:

Правильная модель календаря привязывается к политике SLA, а не к службе поддержки в целом. Инфраструктурный инцидент P1 измеряется по круглосуточному календарю; заявка P4 «пожалуйста, добавьте меня в групповой почтовый ящик» измеряется по календарю 09–18. Одна и та же организация, два календаря, маршрутизация по каждой отдельной заявке.

3. Отпуска технических специалистов — спор, который никто не хочет вести

Вот вопрос, который рано или поздно всплывёт на совещании по разбору SLA: заявка уровня P2 была назначена на Айше в пятницу днём. Следующий понедельник Айше взяла как ежегодный отпуск. Часы SLA продолжали идти. Она решила заявку во вторник утром, через четыре рабочих часа после своего возвращения, и отчёт показывает нарушение. Справедливо ли это?

Есть две точки зрения:

  1. Точка зрения клиента. Клиент не знает и не заботится о том, что Айше была в отпуске. SLA обещает ответ в течение X рабочих часов; ответ пришёл с опозданием; SLA нарушен. Первопричина: маршрутизация должна была переназначить заявку с Айше в момент оформления отпуска.
  2. Точка зрения команды. Если отпуск технического специалиста не приостанавливает SLA, службы поддержки с высоким уровнем использования отпусков выглядят искусственно хуже служб, отговаривающих сотрудников от отпусков. Это извращённый стимул.

Наша рекомендация и модель, которую мы строим по умолчанию:

Это вынуждает к правильному поведению: планирование отпусков — управленческая ответственность, а отчёт по SLA отражает опыт клиента, а не внутреннюю расстановку кадров. Стимул команды сохраняется, потому что перемещаются заявки, а не приостанавливаются часы.

4. Тихие часы для каждого пользователя

Отдельное, но смежное понятие: некоторые организации хотят обещать клиенту «ваша заявка получит ответ в течение четырёх рабочих часов», одновременно обещая техническому специалисту «вы не будете получать push-уведомления между 22:00 и 07:00, даже если SLA-календарь активен». Современная ITSM-система должна моделировать это раздельно.

Различие такое:

Эти два понятия будут конфликтовать. Инцидент P1, открытый в 03:00 по круглосуточному календарю, — это настоящее нарушение, если его никто не подхватит. Если у всех дежурных специалистов отключены уведомления, заявка простаивает до 07:00, и четырёхчасовые часы клиента истекают. Ответ — не объединять эти два понятия, а моделировать дежурную ротацию как отдельный календарь, который перекрывает личные тихие часы на время дежурства.

5. Мультирегиональность и часовые пояса

Организация с офисами в Стамбуле, Анкаре и Лондоне не имеет одного рабочего дня — у неё их три, накладывающихся друг на друга. Если SLA-календарь хранится в локальном времени сервера, переходы на летнее/зимнее время дважды в год будут незаметно ломать отчётность. Если он хранится в UTC, рабочие часы будут выглядеть смещёнными для пользователей в других часовых поясах, если интерфейс не позаботится об этом.

Наше правило: все записи календаря хранятся в UTC, и у каждого календаря есть собственный часовой пояс отображения. Расчёт SLA выполняется относительно UTC; интерфейс отображает данные относительно часового пояса календаря. Пользователи в другом часовом поясе всё равно видят правильное время открытия для того календаря, на который смотрят.

Заявка P1, поданная в 08:55 по Europe/Istanbul по стамбульскому календарю, находится внутри рабочих часов. Та же заявка, поданная в 08:55 по Europe/London по лондонскому календарю, ещё не находится внутри рабочих часов (Лондон открывается в 09:00 GMT = 11:00 по Europe/Istanbul зимой, 12:00 летом). Именно маршрутизация решает, какой календарь применяется.

6. Окна экстренных изменений

Управление изменениями добавляет ещё одну сложность. Экстренное изменение в производственной системе может потребовать от службы поддержки приостановить SLA по любой заявке, решение которой зависит от этой системы. Это единственный законный случай приостановки SLA, инициированной менеджером.

Правило, которое мы реализуем:

Это не способ скрыть нарушения. Это способ смоделировать тот факт, что решение действительно было невозможно во время контролируемого простоя.

Собираем всё вместе

Полная модель календаря на уровне сущностей выглядит так:

СущностьНазначениеПример
WorkCalendarОбещание бизнеса. Прикрепляется к политикам SLA.«Стамбул 09–18», «Круглосуточный NOC», «Лондон 09–17»
WorkCalendarWeekЕженедельное повторяющееся окно для каждого календаря.Пн–пт, 09:00–18:00 Europe/Istanbul
WorkCalendarHolidayИсключение на полный или неполный день. Применяется однократно.10.03.2027, Рамазан-байрам, день 1 (полное закрытие)
WorkCalendarOverrideВнеплановое правило, добавленное с коротким уведомлением.14.11.2026, «мостик», закрыто
OnCallRotationКто доступен в каждую смену; перекрывает личные тихие часы.Айше — ночь с пн на вт, Мехмет — ночь со вт на ср, ...
UserSilentHoursЛичные настройки уведомлений.Бора: без push 22:00–07:00, если не на дежурстве
SlaPauseWindowЯвная пауза, вызванная экстренным изменением или переходом статуса.КЕ-4728, изменение №331: пауза 19.09.2026 с 20:00 до 22:00

Это отдельные сущности, и взаимодействуют они предсказуемо. Расчёт SLA читает WorkCalendar плюс WorkCalendarHoliday плюс WorkCalendarOverride плюс SlaPauseWindow. Уровень уведомлений читает OnCallRotation плюс UserSilentHours. Отчётность может нарезаться по календарю, по причине паузы или по причине нарушения — потому что каждая единица информации хранится, а не выводится косвенно.

Почему это важно для отчётности

Хорошо спроектированный календарь отвечает на вопрос, который рано или поздно возникает на втором или третьем квартальном обзоре: почему заявка №4728 нарушила SLA? Ответ должен быть чем-то большим, чем «просто нарушила». В идеале, при открытии заявки видна панель SLA, и эта панель показывает, какой именно календарь применялся, какие окна были открыты, какие паузы происходили и сколько рабочих минут прошло до ответа. Если пауза была вызвана изменением, идентификатор изменения связан с ней. Если специалист был в отпуске и заявка была переназначена, переназначение отображается в хронологии.

Смысл правильного моделирования этого — не перфекционизм. Дело в том, что отчёты по SLA подвергаются тщательной проверке. Когда директор по ИТ спрашивает, почему упал показатель соответствия по P2, у операционной команды либо есть обоснованный ответ — с конкретными заявками, календарями и паузами, которые вызвали изменение, — либо его нет, и тогда отчёт по SLA становится предметом сомнений, а не инструментом.

Реализация в LinaDesk, вкратце

LinaDesk моделирует каждую из сущностей в таблице выше как полноценный агрегат домена. WorkCalendar — это якорь; WorkCalendarHoliday и WorkCalendarOverride — дочерние записи; SlaPolicy ссылается на WorkCalendarId. Расчёт SLA — это чистая функция от переходов статуса заявки и сущностей календаря, видимых на момент каждого перехода. Поскольку паузы хранятся как явные записи, повторный расчёт SLA для любой исторической заявки сегодня даёт тот же результат, что и в день её закрытия, — а это именно то, чего хотят команды аудита, и то, что неверно для ITSM-систем, пересчитывающих значения относительно текущего календаря.

Заявка о Рамазан-байраме в начале этой статьи в такой модели — не нарушение. Заявка открывается в 16:55 в последний рабочий день перед байрамом. WorkCalendarHoliday на четыре дня байрама переводит календарь в статус «закрыто». Часы SLA отсчитывают лишь оставшиеся пять рабочих минут до 17:00 той пятницы, а затем возобновляются в 09:00 в первый рабочий день после байрама. Окно ответа сохраняется.

Посмотрите модель календаря в демо-версии

В демо-панели LinaDesk есть три предварительно настроенных календаря, государственный праздник в середине байрама и одно намеренное окно паузы из-за экстренного изменения — так вы сможете увидеть, как отчёт по SLA обрабатывает каждый случай.

Открыть демо-панель

Похожие материалы