Перейти к содержимому

Бронирование аудиторий и оборудования

Сервис бронирования помещений и общего оборудования для сотрудников школы, колледжа или вуза. Он закрывает всё, что не входит в учебное расписание: собрания, кружки, мероприятия, пересдачи, а также выдачу проекторов, ноутбуков и лабораторных наборов.

Без него брони ведут в общей таблице, которая всегда немного устарела, и двойные бронирования случаются регулярно, потому что двое правят её одновременно. Оборудование выдают по договорённости и не записывают. Еженедельные собрания и занятия кружков каждый раз вносят заново. Закрытое на ремонт помещение продолжают бронировать, потому что в таблице это никак не отмечено.

Для первого релиза хватает справочника ресурсов, календаря, проверки пересечений и самостоятельной отмены. Согласование востребованных залов, повторяющиеся серии и выдачу оборудования добавляют следующими шагами, по мере того как в сервис переходят кружки, мероприятия и хозяйственная служба. Главный критерий готовности — общая таблица броней больше не нужна никому.

  • Показывает занятость в календаре. Для любого помещения или единицы оборудования видны занятые и свободные интервалы до подачи заявки.
  • Не допускает двойной брони. Пересечение проверяется в момент бронирования, а не после.
  • Применяет правила по типу ресурса. Обычные аудитории подтверждаются сразу, актовый зал, спортзал и лаборатории — после согласования ответственным.
  • Создаёт повторяющиеся брони. Недельный или двухнедельный шаблон на период создаёт все занятия сразу, а отдельное занятие серии можно отменить, не трогая остальные.
  • Учитывает выдачу и возврат. У оборудования фиксируются время выдачи и возврата, просроченный возврат подсвечивается.
  • Блокирует недоступные ресурсы. Статус «ремонт» на период запрещает новые брони и отмечает уже существующие.
  • Граница с учебным расписанием. Регулярные занятия семестра ведут в расписании занятий, а сюда они попадают как занятые интервалы только для чтения. Два независимых источника занятости аудитории гарантируют накладки.
  • Пересечения проверяют на сервере. Два пользователя не должны одновременно забронировать один слот. Проверку выполняют в транзакции при сохранении, а не только подсветкой в календаре.
  • Согласование только там, где нужно. Если согласовывать каждую аудиторию, сотрудники вернутся к таблице. Правило подтверждения задают для типа ресурса.
  • Отмена освобождает слот сразу. Самостоятельная отмена с мгновенным обновлением календаря важнее сложного процесса возврата брони.
  • Ремонт затрагивает существующие брони. При блокировке ресурса владельцы затронутых броней получают уведомление и предложение перенести.
  • Календарь — отдельная страница. Для недельного вида нужна собственная страница панели или сторонний плагин календаря, а брони остаются обычными записями с таблицей и фильтрами.
  • Когда хватит готового. Если в организации есть корпоративный календарь с ресурсами помещений и его правил достаточно, отдельный сервис оправдан только при согласованиях, выдаче оборудования или связи с учебным расписанием.

Промпты рассчитаны на AI-агента (Claude Code, Cursor и аналоги) в Laravel-проекте с установленным Filament 4.x. Отправляйте их по одному и проверяйте результат каждого шага.

Создай модели и миграции для бронирования: ResourceType (название, нужно ли
согласование, выдаётся ли на руки), Resource (тип, название, корпус,
вместимость, ответственный), ResourceBlock (ресурс, период, причина),
BookingSeries (ресурс, автор, шаблон повторения, период), Booking (ресурс,
серия, автор, начало, конец, статус: ожидает согласования, подтверждено,
отменено; время выдачи и возврата). Добавь фабрики с демо-данными.
Реализуй серверную проверку при создании и изменении Booking: нет пересечения
с подтверждёнными и ожидающими бронями, с блокировками ресурса и с занятиями
учебного расписания. Проверку выполняй в транзакции. Статус новой брони
определяй по типу ресурса: сразу подтверждено или ожидает согласования.

Попробуйте создать две брони одного зала на пересекающееся время из двух окон браузера.

Сделай собственную страницу Filament с недельным календарём по выбранному
ресурсу и кнопкой «Забронировать» на свободном интервале. Добавь создание
серии по шаблону повторения с отчётом о датах, где слот занят, и действие
отмены одного занятия серии.
Добавь очередь согласования для ответственных с действиями «Подтвердить»
и «Отклонить с причиной». Для выдаваемого оборудования — действия «Выдать»
и «Принять возврат» и ежедневную проверку просроченных возвратов
с уведомлением. При создании блокировки уведомляй владельцев затронутых броней.
Настрой доступ: сотрудник видит календарь всех ресурсов и управляет своими
бронями, ответственный согласует брони своих ресурсов, администратор
управляет справочниками. Добавь виджет загрузки ресурсов за месяц
и экспорт броней за период.