База знаний: бронирование пространств «Шумный корпус»

Для сотрудников IT-кампуса «Неймарк» · редакция от 24.08.2026 · Тюнинг бизнеса

Содержание
  1. 0. Все ссылки одним списком
  2. 1. Что такое «Шумный корпус» и как это работает
  3. 2. Сервис-координатор: подтверждение заявок
  4. 3. Администратор на входе: код и отметка явки
  5. 4. Шахматка: день, ручная бронь, перенос, отмена
  6. 5. Работа в CRM Битрикс24: воронка, стадии, поля, отчёты
  7. 6. Настройки: что можно менять самим
  8. 7. Открытая линия «Шумный корпус»: как это работает
  9. 8. Частые ситуации и что делать
  10. 9. Как тестировать систему
  11. 10. Что видит резидент в боте — шпаргалка
  12. 11. Полная техническая инструкция: устройство, исходники, доступы
  13. 12. Уведомления координаторам и распределение заявок

0. Все ссылки одним списком

Быстрый доступ ко всем частям решения. Ниже — боевой контур кампуса и демонстрационный стенд.

Для резидентов

ЧтоСсылка
Публичный календарь — свободные слоты по трём этажам, под QR-код в корпусеhttps://biztune.ru/shumny/
Telegram-бот (пока тестовый, до подключения бота кампуса)https://t.me/UKMiraTest_bot
Публичный календарь сейчас работает на демонстрационном стенде исполнителя: приложение внутри
портала закрыто авторизацией Битрикс24, и студенты его открыть не смогут. Чтобы календарь
резидентов работал на контуре кампуса, приложению нужно разрешить открытый доступ — это
отдельное решение по безопасности, принимает кампус.

Для сотрудников

ЧтоСсылка
Кабинет сервис-координатора — заявки, шахматка, вход по коду, отчётыпункт «Шумный корпус» в левом меню портала
Прямая ссылка на кабинет (открывается только у сотрудников из списка доступа)https://app-a016d788f810.vibecode.bitrix24.tech/admin
Воронка броней в CRM — все брони со стадиями (канбан)https://neymark.bitrix24.ru/crm/deal/kanban/category/9/
Список броней таблицейоткройте канбан (ссылка выше) и переключитесь на «Список» в верхней панели — воронка сохранится
Карточка конкретной брониhttps://neymark.bitrix24.ru/crm/deal/details/НОМЕР/
Вкладка брони в карточке сделкивкладка «Бронь: Шумный корпус» внутри карточки
Открытая линия «Шумный корпус» — настройки, канал, очередьhttps://neymark.bitrix24.ru/contact_center/
База знаний прямо в кабинетевкладка «Инструкции» в разделе «Шумный корпус»
База знаний в вебе (эта инструкция)https://biztune.ru/r/260804-baza-znaniy-shumny-korpus-5c1e/
Контакты резидентов в CRMhttps://neymark.bitrix24.ru/crm/contact/list/

Отдельный пароль не нужен: приложение открывается только у сотрудников, которым выдан доступ

на платформе. Кто вне списка — увидит экран входа Битрикс24.

Про список сделок. Прямой ссылки на список внутри одной воронки в Битрикс24 нет: этот режим
хранит выбор воронки в настройках пользователя, а не в адресе, поэтому любая ссылка вида
/crm/deal/list/... открывает все сделки портала. Рабочий путь один: открыть **канбан
«Шумный корпус» и переключиться на «Список»** в верхней панели — воронка сохранится и
в следующий раз список откроется уже отфильтрованным. Ссылка на канбан всегда ведёт строго
в брони «Шумного корпуса».

Служебное (для исполнителя и ИТ-специалиста кампуса)

ЧтоЗначение
Приложение на платформеhttps://app-a016d788f810.vibecode.bitrix24.tech
Проверка работоспособностиhttps://app-a016d788f810.vibecode.bitrix24.tech/health
Сервер приложения (id)7b2a7daa-cf2c-4594-9244-2a7698cebf9f, тариф bc-agent
Воронка CRMid 9 «Шумный корпус»
Открытая линияid 9 «Шумный корпус», режим «создавать сделку»
Бот линииid 351 «Шумный корпус»
OAuth-приложение (встройка в меню)local.6a69eaf2825a58.03002199
Кабинет платформы VibeCodehttps://vibecode.bitrix24.tech

Демонстрационный стенд исполнителя

Отдельный контур для показов и обкатки — данные туда не попадают в CRM кампуса.

ЧтоСсылка
Календарьhttps://biztune.ru/shumny/
Кабинетhttps://biztune.ru/shumny/admin?k=КЛЮЧ
Ботhttps://t.me/UKMiraTest_bot
CRM стендаbiztune39.bitrix24.ru, воронка «Шумный корпус» id 50

Документы проекта

ЧтоСсылка
Техническое задание (3 этапа)https://biztune.ru/kp/it-kampus/tz-shumny-korpus.html
Описание решения и сценарии тестированияhttps://biztune.ru/r/260803-shumny-korpus-opisanie-i-testy-4b7d/
Макет публичного календаряhttps://biztune.ru/kp/it-kampus/demo/kalendar.html
Макет кабинета управляющегоhttps://biztune.ru/kp/it-kampus/demo/kabinet.html

1. Что такое «Шумный корпус» и как это работает

Система бронирования пространств активного досуга 9 корпуса. Резиденты сами занимают этаж под свою

активность, сотрудники контролируют, кто и когда приходит.

Коротко

Резидент выбирает свободный слот (в Telegram-боте или на публичной странице), указывает активность

и количество человек, отправляет заявку. Сервис-координатор её подтверждает или отклоняет.

После подтверждения резиденту приходит код. На входе группа называет код, администратор гасит его

и отмечает явку.

Что бронируется

ЭтажНазначение
2 этажспортивные активности
3 этажшумные активности
4 этажспокойные активности

Слот — 2 часа. Будни 12:00–00:00, выходные с 10:00. Запись открыта на 5 дней вперёд.

Один резидент может занять один слот в календарный день, максимум 15 человек в группе.

Из чего состоит система

Занятость одна на всех: как только слот забронирован, он мгновенно исчезает и у бота,

и на публичной странице, и появляется в шахматке. Ничего сверять вручную не нужно.

Кто что делает

РольЗадачи
Сервис-координаторПодтверждает и отклоняет заявки, запускает группы в корпус, принимает помещение
Администратор / ресепшнПроверяет код на входе, отмечает «пришли» или «не пришли»
АдминистрацияСмотрит отчёты и историю в CRM, меняет правила в настройках

Жизненный цикл брони

Заявка → На подтверждении → Подтверждена (выдан код) → Идёт → Пришёл
Отказные варианты: Отклонена · Отменена · Не пришёл

Те же названия используются и в кабинете, и в стадиях сделки в CRM — это одна и та же бронь,

показанная в двух местах.

Что система делает сама

Дальше: Инструкция сервис-координатора


2. Сервис-координатор: подтверждение заявок

Заявка от резидента не действует, пока её не подтвердил координатор. Это главное правило —

без подтверждения группа в корпус не заходит.

Где смотреть

Кабинет управляющего → вкладка «Заявки». Рядом с названием вкладки показано число заявок,

ожидающих решения. Список обновляется сам каждые 20 секунд.

Что видно в карточке заявки

Подтвердить

Нажмите «Подтвердить».

Что произойдёт:

  1. Резиденту в бот придёт сообщение с кодом на вход и памяткой (собраться у входа за 5 минут).
  2. Сделка в CRM переедет на стадию «Подтверждена».
  3. В журнале появится запись с вашим действием.

Отклонить

Нажмите «Отклонить» и напишите причину — она уходит резиденту дословно, поэтому формулируйте

понятно: «на это время этаж занят мероприятием кампуса», «активность не подходит для этого этажа».

Что произойдёт:

  1. Резиденту придёт отказ с причиной и кнопкой выбрать другое время.
  2. Слот сразу освободится для остальных.
  3. Сделка перейдёт на стадию «Отклонена».

Если заявку не посмотреть

За час до начала слота необработанная заявка отклоняется автоматически, резиденту уходит

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

Порог настраивается.

Запуск группы в корпус

За 5 минут до начала группа собирается у входа. Порядок:

  1. Спросите код брони (он есть у ответственного в боте).
  2. Введите код в кабинете на вкладке «Вход по коду» — увидите ответственного, состав и активность.
  3. Сверьте группу и нажмите «Пришли — запустить».

Подробнее: Вход по коду

Важные мелочи

сообщить координатору, а вы отменяете бронь через шахматку.

код сохранится, история не задвоится.


3. Администратор на входе: код и отметка явки

Порядок на входе

  1. Группа подходит за 5 минут до начала слота.
  2. Ответственный называет код брони — четыре цифры, они пришли ему в бот при подтверждении.
  3. Откройте кабинет → вкладка «Вход по коду», введите код, нажмите «Проверить».
  4. На экране появятся: ФИО ответственного, пространство, дата и время, активность,

количество участников, корпус и комната.

  1. Сверьте, что перед вами та самая группа, и нажмите «Пришли — запустить».

Что происходит после нажатия

Если группа не пришла

Нажмите «Не пришли». Бронь закроется как неявка, сделка перейдёт на стадию «Не пришёл».

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

Если никто ничего не нажал, бронь закроется автоматически через 20 минут после окончания слота.

Частые случаи

«Код не найден или уже погашен». Варианты: код уже использован на этом входе, бронь отменена

или отклонена, либо резидент диктует код от прошлой брони. Найдите его в шахматке по фамилии —

там видно актуальный статус.

Резидент не помнит код. В боте раздел «Мои брони» показывает код по подтверждённой брони.

Либо найдите бронь в шахматке — код указан в ячейке.

Пришли раньше времени. Код работает и до начала слота — можно запустить, если этаж свободен.

Пришло больше человек, чем в заявке. В текущей версии система хранит только количество; сверку

состава ведёт координатор по регламенту. Если людей больше заявленного — решение за координатором.


4. Шахматка: день, ручная бронь, перенос, отмена

Вкладка «Шахматка» — сетка «этаж × время» на выбранный день. Сверху лента дат: вчера, сегодня

и дни вперёд по горизонту записи.

Что показано в ячейке

Статусы в ячейках: *ждёт подтверждения*, *подтверждена*, *идёт*, *пришли*, *не пришли*,

*отменена*, *отклонена*.

Ручная бронь (резидент подошёл лично)

Кликните по свободной ячейке и заполните: ФИО, телефон, корпус, комнату, активность, количество

участников.

Такая бронь создаётся сразу подтверждённой — сотрудник заводит её осознанно, ждать

подтверждения не нужно. В CRM появятся контакт и сделка, как при обычной брони.

Телефон лучше указывать: по нему система находит существующий контакт и не плодит дубли.

Действия с существующей бронью

Кликните по занятой ячейке и выберите действие:

ДействиеЧто делает
arriveОтметить «пришли», закрыть бронь успешно
noshowОтметить неявку
cancelОтменить бронь, слот освобождается
approveПодтвердить заявку (то же, что кнопка на вкладке «Заявки»)
rejectОтклонить с причиной

Перенос брони

Перенос выполняется через действие переноса: указываются новая дата и время. Важно:

код сохраняется, сделка та же — история не задваивается, резиденту уходит уведомление

с новым временем.

Не создавайте вместо переноса новую бронь: в CRM появятся две карточки на одно событие.

Ограничения, о которых стоит помнить


5. Работа в CRM Битрикс24: воронка, стадии, поля, отчёты

Каждая бронь — это сделка в воронке «Шумный корпус», каждый резидент — контакт.

Кабинет и CRM показывают одну и ту же бронь: изменения в одном месте видны в другом.

Контакт резидента

Создаётся при первой брони. Если человек уже есть в базе (ищется по телефону) — используется

существующий контакт, дубль не создаётся. В карточку записываются корпус и комната.

Сделка-бронь

ПолеЧто содержит
Пространство (этаж)2 / 3 / 4 этаж
Слот (дата и время)начало брони
Активностьиз списка этажа или свой текст
Участниковколичество, включая ответственного
Код на входечетырёхзначный код
Комментарийдетали от резидента и служебная информация

Стадии и что они значат

СтадияЗначение
На подтверждениизаявка подана, координатор ещё не решил
Подтвержденакод выдан, резидента ждут
Идётвремя брони началось
Пришёлгруппа пришла, бронь состоялась *(успех)*
Не пришёлнеявка *(провал)*
Отклоненакоординатор отказал или заявка просрочена *(провал)*
Отмененарезидент или сотрудник отменил *(провал)*

Управление прямо из CRM

Стадию сделки можно двигать мышкой в воронке — система подхватит изменение в течение минуты:

статус брони в кабинете изменится, а резиденту уйдёт уведомление, если стадия стала «Подтверждена»

или «Отклонена».

Важно: из CRM тянется только статус. Дата, время и состав меняются в кабинете —

так календарь защищён от случайной правки в карточке.

Отчёты

Всё, что нужно руководителю, строится штатными средствами Битрикс24 по сделкам воронки:

Быстрые цифры без CRM — вкладка «Отчёты» в кабинете: брони за 30 дней, ожидающие

подтверждения, состоявшиеся, неявки, загрузка пространств, топ активностей.

Права доступа

Права на воронку выдаются администратором портала в интерфейсе Битрикс24

(CRM → Настройки → Права доступа). Через API права не выдаются — только руками.


6. Настройки: что можно менять самим

Кабинет → вкладка «Настройки». Изменения вступают в силу сразу — бот и публичный календарь

начинают работать по новым правилам без перезапуска и без программиста.

Пространства и активности

Для каждого этажа задаются:

Растяжка|Йога|Танцевальная тренировка|Функциональная тренировка|Другое.

Вариант «Другое» даёт резиденту написать свою формулировку — оставляйте его в списке.

Расписание и правила

НастройкаЧто делаетПо умолчанию
Длительность слота, миншаг сетки времени120
Будни: с / доокно работы в будни12:00 / 24:00
Выходные: с / доокно работы в выходные10:00 / 24:00
Горизонт записи, днейна сколько дней вперёд открыта запись5
Броней на резидента в деньлимит на календарный день1
Максимум участниковвместимость группы15
Подтверждение координатором1 — заявки требуют решения, 0 — бронь сразу действует1
Удержание слота, минсколько держится слот на время оформления15
Авто-отклонение заявки, мин до слотакогда снимать необработанную заявку60
Запрет отмены, мин до слотапозже резидент не отменяет сам120
Напоминание за, чпервое напоминание3
Сбор у входа за, минвторое напоминание5
Автозакрытие после слота, минкогда закрывать прошедшую бронь20
Закрывать какdone (пришли) или noshow (не пришли)done
Ответственный в CRM (id)на кого вешать контакты и сделки
Ссылка на правиладокумент, который бот показывает резиденту

Типовые задачи

Закрыть этаж на ремонт или мероприятие. Занять нужные слоты ручными бронями либо временно

выключить пространство. Для разового мероприятия проще ручная бронь на нужное время.

Изменить время работы на праздники. Поменяйте окно «с / до» — сетка пересчитается сразу.

Открыть запись дальше на неделю. Увеличьте «Горизонт записи».

Разрешить две брони в день. Поставьте «Броней на резидента в день» = 2. Помните, что вечерние

слоты дефицитные — правило защищает от захвата времени одними и теми же группами.

Отключить подтверждение (например, на время эксперимента). Поставьте «Подтверждение

координатором» = 0 — брони будут действовать сразу с выдачей кода.

Чего в настройках нет

Тексты сообщений бота, состав шагов диалога и правила проверки участников меняются в коде —

это делает исполнитель. Скажите, что нужно изменить, — правка занимает минуты.


7. Открытая линия «Шумный корпус»: как это работает

Резидент пишет в мессенджер кампуса → сообщение попадает в Открытую линию «Шумный корпус»

диалог ведёт бот → бронь оформляется, и вся переписка остаётся в карточке сделки.

Что настроено на портале

ЧтоЗначение
Открытая линия«Шумный корпус», id 9
Бот линии«Шумный корпус», id 351 — ведёт диалог с резидентом
Что создаёт линиясделку (не лид) — режим «создавать сделку»
Воронка«Шумный корпус» — туда попадают все брони
Перевод на операторачерез 24 часа бездействия либо по просьбе резидента
Очередь операторовсотрудники, указанные в настройках линии

Почему переписка оказывается в сделке

Когда резидент пишет впервые, Открытая линия сама заводит контакт и сделку и привязывает к ним

чат. Бот не создаёт вторую сделку — он заполняет ту, которую завела линия: подставляет

пространство, слот, активность, количество участников и код.

Результат: в карточке сделки одновременно видно и параметры брони, и всю переписку — кто что

писал, когда бот выдал код, о чём просил резидент. Отдельно искать диалог не нужно.

Что видит оператор

Диалог приходит в Чат Битрикс24 → раздел «Открытые линии». Пока диалог ведёт бот, он

операторов не занимает. Оператор подключается в двух случаях:

  1. Резидент попросил человека — бот выходит из чата, диалог встаёт в очередь.
  2. Прошло 24 часа без завершения — линия переводит диалог на оператора автоматически.

Когда диалог у оператора, бот в него не вмешивается.

Подключение мессенджера кампуса

Канал подключается в интерфейсе Битрикс24: **Контакт-центр → нужный мессенджер → выбрать линию

«Шумный корпус»**. Для Telegram — штатный коннектор Битрикс24: указывается токен бота кампуса,

созданный в BotFather.

После подключения проверьте: напишите в канал с личного аккаунта, диалог должен появиться в линии

«Шумный корпус», а бот — ответить приветствием.

Пока канал кампуса не подключён, бот доступен напрямую в Telegram — тестовый @UKMiraTest_bot.
Логика диалога у обоих каналов одна и та же.

Важные правила эксплуатации

их по одному в API, интерфейс покажет «сохранено», а значение не изменится. Меняйте настройки

в интерфейсе или просите исполнителя.

Правда — в настройках линии, которые возвращает API; при сомнении спросите исполнителя.

по контакту, который линия привязала к чату, и дозаполняет карточку из ответов бота.

Если что-то идёт не так

Бот не отвечает в линии. Проверьте, что линия активна и в её настройках включён бот

«Шумный корпус». Затем — что приложение работает (у исполнителя есть страница состояния).

Диалог сразу уходит к оператору. Значит бот отключён на линии или упал — обращения при этом

не теряются, их видит оператор.

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

в Telegram-боте или руками в кабинете — там переписки в Битрикс24 просто нет.


8. Частые ситуации и что делать

Резидент

«Бот не даёт забронировать — пишет, что бронь уже есть».

Действует правило «одна бронь в календарный день». Пусть выберет другой день или отменит текущую

бронь в разделе «Мои брони».

«Не приходит код».

Код приходит только после подтверждения координатором. Проверьте вкладку «Заявки» — возможно,

заявка ещё ждёт решения.

«Хочу отменить, но кнопка не работает».

До начала осталось меньше двух часов — самостоятельная отмена закрыта. Отмените бронь за резидента

в шахматке и напомните, что предупреждать нужно заранее.

«Ошибся в комнате / корпусе».

В боте есть «Профиль» → «Изменить данные». Карточка контакта в CRM обновится при следующей брони;

если нужно сразу — поправьте контакт в Битрикс24 руками.

«Слот был свободен, а теперь занят».

Скорее всего, его придержал другой резидент на время оформления (15 минут). Если он не завершит

оформление, слот вернётся в календарь автоматически.

Сотрудник

Нужно закрыть этаж на мероприятие.

Заведите ручные брони на нужные слоты в шахматке — с пометкой в поле активности («мероприятие

кампуса»). Резиденты этих слотов не увидят.

Группа пришла без ответственного.

По правилам ответственный должен присутствовать всю бронь. Решение за координатором; систему это

не касается — она хранит, кто ответственный.

Пришли не в свой слот / раньше.

Код работает и до начала. Если этаж свободен — можно запустить, но помните: следующий слот может

быть занят другой группой.

Нужно перенести бронь на другое время.

Используйте перенос в шахматке, а не новую бронь: код сохранится, история не задвоится,

резидент получит уведомление.

Резидент нарушил правила.

Отметьте это в комментарии к сделке. Ограничение бронирования пока применяется вручную:

скажите исполнителю, если нужно закрыть резиденту доступ на срок.

Заявок много, все похожие.

Смотрите на этаж и активность: спорт — только 2 этаж, шумные форматы — 3, спокойные — 4.

Несоответствие — повод отклонить с понятной причиной.

Технические мелочи

Кабинет не открывается. Нужна ссылка с ключом доступа — она у координатора и у исполнителя.

Ключ можно поменять, если он попал не тем людям.

Данные в кабинете «застыли». Страница обновляется сама каждые 20 секунд; если нет —

перезагрузите вкладку.

Стадию сделки подвинули в CRM. Это разрешено: система подхватит изменение в течение минуты

и, если стадия «Подтверждена» или «Отклонена», пошлёт резиденту уведомление.

Сделку удалили в CRM. Бронь останется в кабинете; при следующем действии система заведёт

карточку заново. Лучше так не делать — историю не восстановить.


9. Как тестировать систему

Раздел для приёмки: что проверить перед тем, как открывать бронирование резидентам.

Тесты независимы, порядок любой. Удобнее проверять с телефона.

Что понадобится

Чек-лист

Что делаемЧто должно получиться
1Пишем боту первый раз, проходим знакомство (ФИО, корпус, комната, телефон)Бот запоминает данные, в CRM появляется контакт с корпусом и комнатой
2Бронируем слот: дата → этаж → время → активность → участникиПриходит «Заявка №N отправлена», в кабинете во вкладке «Заявки» карточка, в CRM сделка на стадии «На подтверждении»
3Подтверждаем заявку в кабинетеРезиденту приходит код, сделка → «Подтверждена», запись в журнале
4Отклоняем другую заявку с причинойРезиденту приходит причина, слот сразу свободен, сделка → «Отклонена»
5Вводим код на вкладке «Вход по коду», жмём «Пришли»Показан состав группы, статус → «Пришли», сделка → «Пришёл», повторный ввод кода не срабатывает
6Смотрим публичный календарь после брониСлот показан занятым, у бота он больше не предлагается, в шахматке виден
7Пробуем занять второй слот на тот же деньБот отказывает: одна бронь в день
8Начинаем оформление и бросаем на полпутиСлот занят ~15 минут, потом освобождается сам
9Отменяем бронь в разделе «Мои брони»Слот свободен, сделка → «Отменена». Если до начала меньше 2 часов — бот отказывает и предлагает координатора
10Заводим ручную бронь кликом по свободной ячейке шахматкиБронь сразу подтверждена, в CRM контакт и сделка
11Двигаем стадию сделки руками в CRM (например, в «Не пришёл»)В течение минуты статус в кабинете меняется, в журнале запись с автором «CRM»
12Меняем настройку (например, горизонт записи) и сохраняемБот и календарь сразу работают по новым правилам
13Открываем вкладку «Отчёты»Счётчики, загрузка этажей, популярные активности
14Пишем в канал Открытой линииДиалог появляется в линии «Шумный корпус», бот отвечает, переписка видна в карточке сделки

На что смотреть особенно внимательно

формулировки, порядок вопросов, эмодзи.

сценарии выходного дня: сетка там начинается раньше.

бот должен вежливо переспросить, а не молчать.

Как сообщать о проблемах

Пишите одним сообщением исполнителю:

  1. Что делали (шаг за шагом).
  2. Что ожидали увидеть.
  3. Что увидели на самом деле.
  4. Скриншот и время с точностью до минуты — по времени найдём событие в журнале.

Если проблема в боте — приложите номер заявки или код брони. Если в кабинете — скажите,

на какой вкладке.

Когда считать, что можно запускать


10. Что видит резидент в боте — шпаргалка

Чтобы отвечать на вопросы студентов, не открывая бота.

Главное меню

КнопкаЧто делает
📅 ЗабронироватьЗапускает выбор: дата → этаж → время → активность → участники
🕒 Свободное времяПоказывает ближайшие свободные слоты по всем этажам списком
🎫 Мои брониСписок броней со статусом и кодом, кнопка отмены
👤 ПрофильФИО, корпус, комната, телефон; можно изменить
📋 ПравилаКороткая выжимка правил и ссылка на полный документ
💬 КоординаторКак связаться с сервис-координатором

Порядок диалога при первом обращении

  1. Приветствие и объяснение, зачем данные.
  2. «Как вас зовут? Напишите фамилию и имя».
  3. «В каком корпусе вы живёте?»
  4. «Номер вашей комнаты?»
  5. Телефон — кнопкой «Отправить мой номер» (в Telegram) или текстом.
  6. Подтверждение: данные сохранены, дальше главное меню.

Повторно эти вопросы не задаются.

Что бот пишет на каждом шаге брони

бронь, не показывается.

Сообщения после отправки

СобытиеЧто получает резидент
Заявка отправленаНомер заявки, напоминание, что приходить рано
ПодтвержденаКод на вход и памятка: собраться у входа за 5 минут
ОтклоненаПричина от координатора и предложение выбрать другое время
ПросроченаЗаявку не успели подтвердить, слот освобождён
Напоминание за 3 часаВремя брони и код
За 5 минут«Соберите группу у входа», код
Код принят на входе«Хорошей активности», напоминание сдать помещение
Перенос сотрудникомНовое время, код прежний

Типовые ответы бота на отказ

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


11. Полная техническая инструкция: устройство, исходники, доступы

Документ для тех, кто сопровождает решение: как всё устроено, где лежит код, как внести правку,

кому что доступно и как выдать доступы.

11.1. Из чего состоит решение

СлойЧто делаетГде живёт
Telegram-бот / бот Открытой линииДиалог с резидентом: знакомство, бронь, код, уведомлениявнутри приложения
Движок бронированияКалендарь занятости, правила, удержание слотов, статусывнутри приложения (SQLite)
Публичный календарьОткрытая страница со свободными слотамивнутри приложения, роут /
Кабинет управляющегоЗаявки, шахматка, вход по коду, отчёты, журнал, настройкивнутри приложения, роут /admin
CRM Битрикс24Контакты, сделки-брони, история, отчётностьпортал кампуса

Источник истины по занятости — база приложения, а не календарь Битрикс24. Стадия сделки —

отражение статуса брони. Обратная связь тоже есть: если стадию подвинуть руками в CRM,

приложение подтянет статус к себе в течение минуты (только статус, не время и не состав).

11.2. Что где развёрнуто

Контур кампуса (боевой)

ЧтоЗначение
Порталneymark.bitrix24.ru
Приложение (VibeCode)https://app-a016d788f810.vibecode.bitrix24.tech
Сервервыделенная VM, тариф bc-agent (≈300 ₽/мес), id 7b2a7daa-cf2c-4594-9244-2a7698cebf9f
Служба на сервереsystemd shumny, порт 3000, код в /opt/app, база в /var/lib/booking/
Воронка CRM«Шумный корпус», id 9
Открытая линия«Шумный корпус», id 9, режим «создавать сделку»
Бот линии«Шумный корпус», id 351
Встройка в порталпункт левого меню «Шумный корпус» + вкладка в карточке сделки
База знанийвкладка «Инструкции» в кабинете + веб-версия по ссылке

«Горячая вода» живёт отдельно (сервер db523e01…, воронка 7, линия 3, бот 339) и этим проектом

не затрагивается.

Демо-контур (наш, для показов и обкатки)

ЧтоЗначение
Публичный календарьhttps://biztune.ru/shumny/
Кабинетhttps://biztune.ru/shumny/admin?k=<ключ>
Telegram-бот@UKMiraTest_bot
CRMнаш портал biztune39.bitrix24.ru, воронка «Шумный корпус» id 50
Сервер159.194.236.48, systemd shumny, порт 3111, база /var/lib/shumny/booking.db

Два контура независимы: тесты на демо-стенде не попадают в CRM кампуса.

11.3. Исходники

Где лежат: рабочая копия у исполнителя — ~/ai-lab/gotovye-resheniya/apps/resource-booking/.

app/
  tg.py        транспорт Telegram (long-polling, кнопки)
  ol.py        транспорт Открытой линии (события бота → тот же сценарий)
  tgbot.py     сценарий диалога: знакомство, бронь, «мои брони», уведомления
  booking.py   правила, удержание слота, модерация, статусы, фоновые проверки
  slots.py     сетка слотов (в т.ч. через полночь), свободное время, шахматка
  store.py     SQLite: настройки, пространства, брони, резиденты, журнал
  b24.py       клиент API Битрикс24: контакты, сделки, стадии, бот
  main.py      HTTP: публичная страница, кабинет, API, фоновые задачи, синхронизация
  static/      public.html (календарь), admin.html (кабинет)
scripts/
  setup_b24.py настройка портала: воронка, стадии, поля (можно запускать повторно)
  deploy.py    сборка и деплой на VibeCode
docs/kb/       эта база знаний
PLAN.md        разбор ТЗ и принятые решения
README.md      краткая карта решения и команды

Поставка лежит у кампуса. Полный комплект — исходный код, скрипты настройки портала и

деплоя, вся база знаний, README и разбор ТЗ — находится:

Ничего отдельно запрашивать у исполнителя не нужно: всё, что нужно для поддержки и доработки

решения, уже на стороне кампуса.

Как скачать код с боевого сервера. Платформа хранит снимки исходников при каждом деплое:

SRV=7b2a7daa-cf2c-4594-9244-2a7698cebf9f
BASE=https://vibecode.bitrix24.tech/v1/infra/servers/$SRV

# список версий: помеченная релизная имеет теги release, v1, full-delivery
curl -H "X-Api-Key: $VIBE_API_KEY" "$BASE/sources"

# скачивание идёт в два шага — сначала ссылка, потом файл
URL=$(curl -s -H "X-Api-Key: $VIBE_API_KEY" "$BASE/sources/<версия>/download" \
      | python3 -c "import sys,json;print(json.load(sys.stdin)['data']['url'])")
curl -L "$URL" -o shumny-korpus.tar.gz
tar -xzf shumny-korpus.tar.gz

В архиве: app/ — код, scripts/ — настройка портала и деплой, docs/kb/ — база знаний

статьями, docs/*.html — она же одним документом, README.md, PLAN.md, .env.example.

Секреты (ключи портала, токен бота) в поставку не входят — они лежат только в .env

на самом сервере.

11.4. Как внести правку

  1. Поправить файл в рабочей копии.
  2. Проверить локально: python3 -m uvicorn app.main:app --port 3111 (нужен .env с ключом портала).
  3. Задеплоить на кампус:
set -a; . ./.env; set +a
export B24_CATEGORY_ID=9 B24_STAGE_NEW=C9:NEW B24_STAGE_PREPARATION=C9:PREPARATION \
       B24_STAGE_EXECUTING=C9:EXECUTING B24_STAGE_WON=C9:WON B24_STAGE_LOSE=C9:LOSE \
       B24_STAGE_UC_REJECT=C9:UC_REJECT B24_STAGE_APOLOGY=C9:APOLOGY \
       OL_ENABLED=1 OL_BOT_ID=351 OL_LINE_ID=9 ADMIN_PASSWORD=<ключ кабинета> \
       PLACEMENT=dedicated PLAN=bc-agent REGION=ru-central1-a RUNTIME=static
python3 scripts/deploy.py

Деплой заменяет код в /opt/app, база в /var/lib/booking/ остаётся — брони не теряются.

Грабли, на которые уже наступили:

деплой падает. Поэтому RUNTIME=static и системный Python: так работает стабильно.

отвечает «сохранено» и молча игнорирует.

он живёт 24 часа и не продлевается. Персональным ключом плейсменты не привязать.

привязки Битрикс не использует — он проксирует через bitrix-handler на appUrl приложения.

Поэтому на каждое решение нужно своё OAuth-приложение: одно на «Горячую воду», другое на

«Шумный корпус». Если привязать оба пункта к одному приложению, второй пункт будет открывать

первое решение (наступили на это 04.08.2026).

таймауту, поэтому Telegram-бот на сервере приложения сам по себе не поднимается. Решается

двумя способами: либо канал Telegram подключается штатным коннектором к Открытой линии

(трафик идёт через инфраструктуру Битрикса), либо запросы бота проксируются через сервер

исполнителя — переменная TELEGRAM_API указывает на прокси вместо api.telegram.org.

Сейчас включён второй вариант.

демо-стенде с тем же токеном, Telegram отдаёт Conflict: terminated by other getUpdates.

Держите TG_ENABLED=1 только там, где бот должен работать.

11.5. Кто имеет доступ

К приложению (кабинет управляющего, левое меню)

Политика — «только названные пользователи». Сейчас в списке:

Сотрудникid
Домницкий Виталий1
Шерстобитов Алексей15
Ламинцева Евгения149
Звездин Константин161
Пазина Милена187
Бобырь Александр (исполнитель)313

Тот же состав, что и у «Горячей воды».

К данным броней

11.6. Как выдать доступ к приложению

Через интерфейс VibeCode: кабинет платформы → приложение «Шумный корпус» → «Доступ» →

добавить сотрудника.

Через API (быстрее, если сотрудников несколько):

SRV=7b2a7daa-cf2c-4594-9244-2a7698cebf9f
# найти пользователя портала
curl -H "X-Api-Key: $VIBE_API_KEY" ".../v1/infra/servers/$SRV/b24-users?search=Иванов"
# выдать доступ
curl -X POST -H "X-Api-Key: $VIBE_API_KEY" -H "Content-Type: application/json" \
  -d '{"type":"user","userId":"243","userName":"Иванов Иван"}' \
  "https://vibecode.bitrix24.tech/v1/infra/servers/$SRV/access"
# посмотреть список
curl -H "X-Api-Key: $VIBE_API_KEY" ".../v1/infra/servers/$SRV/access"

Убрать доступ — DELETE .../access/<id записи>.

11.7. Как выдать права на воронку «Шумный корпус»

Права CRM выдаются только руками в интерфейсе — API для этого у платформы нет.

  1. CRM → «Настройки» (шестерёнка) → «Права доступа» → «Сделки».
  2. Выбрать роль сотрудника (или создать новую, например «Сервис-координатор»).
  3. В строке роли открыть воронку «Шумный корпус» и задать права: