Мастера и ресурсы

Создание мастера/кабинета/оборудования, привязка к услугам, опциональная таймзона, активность.

Мастера и ресурсы

Ресурс — это то, что физически выполняет услугу: конкретный мастер, кабинет, единица оборудования, переговорная комната. У ресурса своё расписание (которое расшаривается между всеми услугами, что он оказывает), и это естественная единица учёта пропускной способности.

Когда нужен ресурс

СценарийНужен ресурс?
Один мастер делает все услугиДа — один ресурс «Мастер Маша», все услуги привязаны к нему.
Несколько мастеров одной специальностиДа — по ресурсу на каждого. Клиент выбирает или система берёт first available.
Кабинет с оборудованием, мастера сменяемыеДа — ресурс «Кабинет 1», расписание по кабинету, не по людям.
Онлайн-консультация без привязки к конкретному человекуНе обязательно. Услугу можно оставить без ресурса — slot-engine работает по правилам с resourceId=NULL.

Создание

/account/services → вкладка «Мастера»«Создать».

ПолеОписание
ИмяВидно клиенту при выборе мастера на чекауте.
ОписаниеКороткая регалия / профиль.
АватарURL картинки. Можно загрузить через файловый менеджер.
Таймзона (опционально)Если ресурс физически работает в другой зоне, чем услуга — переопределяет service.timezone. NULL = используется зона услуги.
АктивенЕсли выключено — ресурс не отдаётся ни в одном slot-расчёте, новые записи на него не делаются.

Привязка ресурса к услугам

Один ресурс может оказывать несколько услуг — например, мастер Маша делает и стрижку, и окрашивание. Это идёт через M2M service_to_resource. Управляется:

  • Со стороны услуги — в карточке услуги блок «Мастера».
  • Со стороны ресурса — в карточке ресурса блок «Услуги».

Оба интерфейса пишут в одну и ту же M2M.

Расписание ресурса

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

Опционально можно ограничить правило конкретной услугой (например, мастер делает массаж только утром, а консультации — днём) — для этого в правиле задаётся serviceId.

Что произойдёт, если удалить ресурс

Каскадно отвалятся:

  • привязки service_to_resource;
  • правила расписания (service_availability_rule);
  • time-off для этого ресурса.

Существующие брони останутся, но booking.resourceId станет NULL (через ON DELETE SET NULL) — клиент уже записан, и эту запись надо обслужить, даже если мастера в системе больше нет.

Если ресурс уходит в отпуск или болеет — не удаляйте его, а заведите time-off. Расписание автоматически перестанет отдавать слоты на это время.

Деактивация vs удаление

  • Деактивация (isActive=false) — ресурс больше не показывается клиенту, slot-engine не отдаёт его слотов. Но история броней и привязки остаются. Это безопасный «выключатель».
  • Удаление — destructive. Используйте только если ресурс заведён по ошибке или давно не работает.

Таймзона ресурса (про DST)

Мастер в Питере, бизнес в Москве — обе зоны Москвы, всё работает. Но если мастер из Калининграда оказывает услуги московского бизнеса, у него своё локальное время. Тогда заполните service_resource.timezone = 'Europe/Kaliningrad'. Slot-engine корректно учтёт это: правила «9:00–18:00» этого ресурса будут резолвиться в его зоне, а клиентам отображаться в их.

Что хранится в БД

ТаблицаЧто
service_resourceРесурс (мастер/кабинет/оборудование)
service_to_resourceM2M услуга ↔ ресурс

На этой странице