Skip to content

MeetingRoom — занятость переговорной: факт против брони

Проект на стыке архитектуры и инженерии: измерить, как помещение используется на самом деле, и сравнить с тем, как оно забронировано.

Датчик присутствия уже пишет факт занятости. Календарь говорит, когда переговорку планировали занять. Разница между этими двумя рядами — и есть результат проекта.

Вопрос, на который отвечаем

Сколько часов переговорка простаивала, будучи забронированной?

Это не учебная задача. Это то, за что платят: неиспользуемая арендованная площадь — прямые деньги. Архитектор, который умеет измерить фактическую утилизацию помещения и обосновать её данными, работает на другом уровне, чем исполнитель планировок.

Что уже есть (не строим заново)

КомпонентСостояние
ESP32 + датчик присутствия (HMMD-радар)✅ работает
MQTT → Node-RED → TimescaleDB✅ работает
Таблица bookings (составной PK под RRULE)✅ схема готова, пуста
occupancy_hourly — доля занятости по часам✅ работает
Grafana✅ работает
Синк календаря → bookingsэто и есть проект

Схема bookings спроектирована заранее и уже учитывает главную сложность календарей: составной первичный ключ (booking_uid, starts_at) — потому что у повторяющейся встречи (RRULE) один UID на всю серию, и ключ по одному UID перетирал бы экземпляры друг другом.

Порядок чтения

ДокументО чём
Источник ICSоткуда взять календарь: три пути и что делать, если доступа не дадут
Синк и метрикапарсер, upsert, SQL метрики, дашборд
Результат в портфолиочто показывать и как рассказывать
План наставникадля наставника, не для ученика: как вести проект и где отпускать

Принцип проекта

Источник данных отделён от обработки. Вся инженерная ценность — в парсере и метрике; они работают одинаково, читаете вы ICS по ссылке, из файла или из генератора. Если корпоративный доступ не дадут — проект не блокируется, меняется одна строка конфигурации.

Это тот же приём, что в основном стеке: единый источник правды, потребители не знают, откуда пришло значение.

Объём

Несколько вечеров, не месяцы. Задача сознательно ограничена: довести до одного измеримого вывода, а не построить систему управления бронированием.