/База знаний

Графики работы

Шаблоны графиков — это переиспользуемые расписания, которые применяются к сотрудникам и объектам в один клик.

Команда → Графики. (Раньше раздел жил в «Запись → Графики работы» — старая ссылка теперь ведёт сюда.)

Зачем нужны

Если у вас 10 мастеров с одинаковым расписанием — можно один раз создать шаблон «Утро» и применять к каждому новому сотруднику. Изменили шаблон — для weekly-шаблона привязанные мастера автоматически переприменяются, для shift-шаблона расчёт идёт лениво из шаблона по дате старта цикла.

Как задаются часы

Шаблон хранит часы работы на каждый день — открытие и закрытие. Слоты внутри окна вычисляются на лету из шага слота тенанта (Запись → Настройки → Шаг слота). Это значит: поменяете шаг слота — сетка перестраивается без переприменения шаблонов.

Часы филиала используются как подсказка дефолтов при создании шаблона: если у филиала на этот день стоит 10:00–22:00, шаблон сразу заполнится этими часами. Дальше вы можете их сузить или расширить — шаблон сам по себе декларирует валидное окно работы.

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

Обеденный перерыв

У каждого рабочего дня, помимо часов открытия и закрытия, можно задать обед — два поля «Обед с» и «Обед по». Слоты, попадающие в это окно, клиентам не предлагаются: например, при графике 09:00–18:00 с обедом 13:00–14:00 запись на 13:00 и 13:30 будет недоступна.

Обед — часть графика: он едет вместе с днём при применении шаблона к сотруднику и виден в предпросмотре недели в его карточке. Правила:

  • Указывайте обе границы обеда или оставляйте оба поля пустыми — половинчатый обед система не сохранит.
  • Начало обеда должно быть раньше конца, и весь перерыв — внутри рабочих часов дня.
  • Обед задаётся отдельно для каждого дня (хелпер «Скопировать в остальные» переносит часы вместе с обедом на другие рабочие дни).

Ночные смены (overnight)

Если закрытие меньше открытия — это ночная смена с переходом через полночь. Например: 22:00 → 04:00 — смена начинается в 22:00 текущего дня и заканчивается в 04:00 следующего. Слот-движок и проверка конфликтов корректно обрабатывают такие окна; в групповой записи на витрине услуги «после полуночи» отмечаются бейджем +1.

Круглосуточно (24/7)

Если открытие равно закрытию (например, 00:00 → 00:00) — окно считается бесконечным: ресурс работает 24 часа в сутки без ограничений. Используйте для круглосуточных объектов (бильярд, сауна).

Виды шаблонов

По дням недели (weekly)

Семь дней — Пн..Вс. Для каждого дня выбираете «Выходной» либо задаёте часы открытия/закрытия двумя таймпикерами.

Хелпер «Скопировать в остальные» на первом рабочем дне — копирует часы во все остальные рабочие дни.

Примеры:

  • Стандарт — пн-пт 09:00–18:00, сб-вс выходные
  • Утро — пн-сб 08:00–13:00, вс выходной

Сменный цикл (shift)

Для нестандартных циклов вида «2 утренних, 2 вечерних, 2 выходных». Параметры:

  • Длина цикла — N дней (1..30)
  • Старт цикла — конкретная дата, с которой считается «День 1»

Для каждого дня цикла — свой выбор «Выходной / часы работы». Расписание считается лениво по cycleStartDate ресурса: для каждой даты вычисляется индекс дня в цикле, и берутся часы этого дня. В БД ничего материализуется — только привязка applied_template_id + cycle_start_date на ресурсе.

Примеры:

  • 2/2 утро+вечер — цикл 4 дня: День 1-2 = 09:00–13:00, День 3-4 = 17:00–21:00
  • Сутки через трое — цикл 4 дня: День 1 = 00:00–24:00, дни 2-4 выходные
  • Ночные 2/2 — цикл 4 дня: День 1-2 = 22:00–06:00 (overnight), День 3-4 выходные

Применение шаблона

У мастера — на вкладке График его карточки (Команда → сотрудник → График): выбираете график из списка и нажимаете «Применить». У объекта — в его карточке («Запись → Объекты»). Текущее расписание заменяется. Для сменного графика дополнительно указываете дату старта цикла. После применения у мастера сразу виден предпросмотр недели с часами и обедом.

Применение атомарно: для weekly шаблон копируется в resource_schedules 1:1 (без обрезки по часам филиала); для shift на ресурсе проставляется applied_template_id + cycle_start_date, и слоты считаются на лету.

При редактировании weekly-шаблона система автоматически переприменяет его всем привязанным сотрудникам. Перед сохранением проверяется, что активные записи (на ближайшие 180 дней) не выпадут из нового расписания — если выпадают, показывается список конфликтов с подтверждением.