Розробка сайту коворкінгу на 1С-Бітрікс
Коворкінг заробляє на заповненості. Порожнє робоче місце о 14:00 — це втрачена виручка, яку вже не вернути. Сайт коворкінгу повинен продавати час: показати простори, дати можливість вибрати вільний слот, прийняти оплату та видати QR-код для входу — все без участі адміністратора. На 1С-Бітрікс це поєднання модуля sale, Highload-блоків для бронювання та інтеграції зі СКУД.
Каталог просторів
Інформаційний блок «Простори» з розділами за типами:
- Hot desk — будь-яке вільне місце в спільній зоні
- Fixed desk — закріплене робоче місце
- Переговірна — кімната на 4-12 осіб
- Private office — окремий офіс на команду
- Event-зал — для заходів та воркшопів
Властивості елемента:
- Вміст (число): кількість робочих місць
- Площа (число): м²
- Оснащення (множинний список): монітор, маркерна дошка, проектор, відеоконференцзв'язок, принтер, кавомашина
- Поверх (список): прив'язка до плану будівлі
- Фото (множинні файли): галерея з різних ракурсів
- 3D-тур (рядок): посилання на embed Matterport
- Мінімальний час бронювання (число): у годинах (1 для переговірної, 8 для private office)
На карточці простору — слайдер фотографій, таблиця оснащення, кнопка «Забронювати» з переходом до календаря занятості.
Тарифи та абонементи
Тарифна сітка коворкінгу складніша, ніж здається. Одне й те ж hot desk може продаватися почасово (разова візит), подневно або абонементом на місяць. Переговірна — тільки почасово. Private office — помісячно.
Реалізація через товари модуля sale з торговими пропозиціями (SKU):
Товар «Hot desk» має торгові пропозиції:
- 1 година
- 1 день (8 годин)
- 10 днів/місяць
- Безлімітно/місяць
Товар «Переговірна "Байкал"» має пропозиції:
- 1 година
- 3 години
- Повний день
Кожна торгова пропозиція має свою ціну в каталозі. Абонементи (10 днів, безлімітно) оформляються як підписки: після оплати користувачу присвоюється група «Абонемент Hot Desk 10» з датою закінчення. Агент (CAgent) щодня перевіряє істекші абонементи і переміщує користувачів у групу «Без абонемента».
Віртуальний тур
Matterport 3D-тур вбудовується через iframe на окремій сторінці та у карточках просторів. Для кожного поверху — свій тур з точками інтересу (hotspots): наведення на робоче місце показує його номер, оснащення та кнопку бронювання.
Альтернатива Matterport — панорамні фото 360°, зібрані у Pannellum.js (open-source). Дешевше, але без ефекту «ходіння» по простору.
Community-розділ
Інформаційний блок «Резиденти» — карточки компаній та фрилансерів, які працюють у коворкінгу (з згоди). Властивості: логотип, назва, сфера діяльності, сайт. Показує живе співтовариство та допомагає нетворкінгу.
Інформаційний блок «Заходи» — майбутні мітапи, воркшопи, нетворкінг-сніданки. Інтеграція з формою реєстрації: при записі створюється елемент Highload-блоку «Реєстрації на заходи» з підтвердженням по email.
Бронювання з календарем занятості та СКУД: детальний розгляд
Бронювання — ядро сайту коворкінгу. Стандартні модулі Бітрікс (корзина, оформлення замовлення) заточені під товарний e-commerce, а тут потрібно продавати часові слоти з візуалізацією занятості. Потребує кастомної розробки поверх модуля sale.
Highload-блок бронювань
Центральна сутність — Highload-блок «Бронювання» (BookingTable):
| Поле | Тип | Призначення |
|---|---|---|
| UF_SPACE_ID | Прив'язка | Простір з інформаційного блоку |
| UF_USER_ID | Число | Хто забронював |
| UF_DATE | Дата | Дата бронювання |
| UF_TIME_FROM | Рядок | Час початку (HH:MM) |
| UF_TIME_TO | Рядок | Час закінчення (HH:MM) |
| UF_ORDER_ID | Число | ID замовлення в модулі sale |
| UF_STATUS | Список | Чекає оплати / оплачено / скасовано / завершено |
| UF_QR_TOKEN | Рядок | Унікальний токен для QR-коду |
| UF_CHECKIN | Дата/час | Фактичний час входу через СКУД |
| UF_CHECKOUT | Дата/час | Фактичний час виходу |
Індекси: складений індекс по UF_SPACE_ID + UF_DATE + UF_STATUS для швидкої вибір занятості.
Календар занятості
Компонент фронтенду показує календар на тиждень вперед. Для переговірних та hot desk — почасова сітка (з 8:00 до 22:00, 14 слотів по годині). Для private office — подневна (вільна/занята кожен день).
Дані завантажуються одним AJAX-запитом: контролер D7 вибирає всі бронювання для даного простору за запитаний період зі статусами «Оплачено» та «Чекає оплати». На клієнті слоти розфарбовуються: зелений — вільна, червоний — занята, жовтий — чекає оплати (зарезервована на 15 хвилин).
Користувач кліває по вільним слотам (можна вибрати кілька поспіль), натискає «Забронювати». Якщо авторизований та має дійсний абонемент, що покриває цей тип бронювання, — броня створюється миттєво зі статусом «Оплачено». Якщо абонемента немає — формується замовлення в модулі sale, користувач переходить до оплати (Yandex.Kassa, CloudPayments).
Захист від конфліктів
При одночасному бронюванні одного слота двома користувачами використовується оптимістична блокування: перед створенням запису контролер перевіряє відсутність перетинів та використовує транзакцію БД. Якщо слот вже займата — повертається помилка, і фронтенд оновлює календар.
Крім того: слоти зі статусом «Чекає оплати» автоматично скасовуються через 15 хвилин агентом. Це запобігає блокуванню популярних переговірних неоплаченими бронями.
Інтеграція зі СКУД
Після успішної оплати система генерує унікальний UF_QR_TOKEN (UUID v4) та відправляє QR-код на email та у особистий кабінет. При скануванні QR на зчитувачі СКУД:
- Зчитувач відправляє HTTP-запит на endpoint
/api/skud/verify/ - Контролер перевіряє токен: існує, статус «Оплачено», поточний час попадає в інтервал
UF_TIME_FROM – UF_TIME_TOз допуском ±15 хвилин - При успішній перевірці повертає
{"access": true}, СКУД відкриває турнікет/двері - Записується
UF_CHECKIN— фактичний час входу
Протокол залежить від моделі СКУД. Для систем на базі ZKTeco або Sigur — REST API. Для Болід «Орион» — інтеграція через промежуточний сервер на Python, який транслює HTTP-запити в протокол Орион.
Для абонементів «Безлімітно» QR-код генерується один раз на весь період дії та прив'язується не до конкретного бронювання, а до користувача.
Особистий кабінет орендаря
Вкладки:
- Мої бронювання — майбутні та минулі, QR-коди для активних
- Абонемент — тип, залишок днів/відвідувань, дата закінчення, продовження
- Історія — фактичні відвідування (чекін/чекаут із СКУД), рахунки
- Улюблене — часто бронюються простори для швидкого доступу
Терміни реалізації
| Етап | Вміст | Термін |
|---|---|---|
| Аналітика | Каталог просторів, тарифна матриця, вимоги до СКУД | 5–7 днів |
| Проектування | Прототипи, ER-схема Highload, сценарії бронювання | 7–10 днів |
| Дизайн | Макети (каталог, календар, ЛК), мобільний адаптив | 10–12 днів |
| Каталог та тарифи | Інформаційні блоки, товари sale, торгові пропозиції |
7–10 днів |
| Система бронювання | Highload, календар, оплата, захист від конфліктів | 14–18 днів |
| СКУД-інтеграція | API endpoint, генерація QR, тестування з обладнанням | 7–10 днів |
| ЛК та community | Особистий кабінет, резиденти, заходи | 7–10 днів |
| Тестування та запуск | Навантажувальне тестування, пуско-наладка СКУД | 5–7 днів |
Загальний термін — 9–12 тижнів. Інтеграція зі СКУД залежить від моделі обладнання: якщо система підтримує REST API з коробки, вкладаємося в 7 днів. Якщо потрібен промежуточний сервер — до 10 днів. Обладнання повинно бути змонтоване та налаштоване до початку етапу інтеграції.







