Графики работы
Шаблоны графиков — это переиспользуемые расписания, которые применяются к сотрудникам и объектам в один клик.
Команда → Графики. (Раньше раздел жил в «Запись → Графики работы» — старая ссылка теперь ведёт сюда.)
Зачем нужны
Если у вас 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 дней) не выпадут из нового расписания — если выпадают, показывается список конфликтов с подтверждением.