Розклад, де дві броні не стануть поруч
День і тиждень: години по вертикалі, зали або дні колонками, лінія поточного моменту. Перетин заборонений самою базою — обмеженням за діапазоном, а не перевіркою у формі: другий одночасний запит таку перевірку обходить. Буфер на прибирання входить у зайнятий відрізок, заявка притримує час, скасування його звільняє.
Публічна сторінка броні
За власною адресою майданчика стороння людина без облікового запису обирає зал, день і годину, бачить зайняте закресленим і залишає заявку. Ціну рахує сервер за правилами майданчика, зайнятість віддається без імен гостей, на потік стоять стелі. Вісімнадцять перевірок зроблено від імені сторонньої людини: склад відповіді, відмови на перетин, години роботи, горизонт запису, спроба дістати таблиці напряму.
Ціна, що залежить від часу доби
55 + 55 + 90 = 200, якщо третя година потрапила у вечірній тариф: сума збирається за відрізками, а не множенням на одну ставку. Рахується переробіток із множником і округленням блоками, передоплата й застава за шкоду лежать у різних полях, правила скасування задані щаблями. Згода гостя з договором зберігається знімком тексту — суперечка буде про те, з чим людина погоджувалася тоді.
Захоплення: фото, документ і голос стають чернеткою
Надіслати можна текст, знімок чека, PDF або голосове. Розбір пропонує чернетки п’яти видів — броня, проведення, задача, звернення, клієнт — і окремі рядки додаткових послуг із сумами. Модель нічого не записує сама: запис створює людина натисканням, і помилка розбору коштує одного «відкинути». Розбір іде на сервері, тому згорнутий застосунок або мережа, що кліпнула, його не рвуть.
Гроші, які не можна задвоїти
Підсумки броні — обчислювані колонки бази, їх не можна скласти в коді неправильно; сплачене перераховується тригером з історії платежів, а не зберігається окремим полем. Дохідне проведення не може посилатися на броню — інакше одна оплата потрапила б у місяць двічі. Перелік операцій за місяць, зведення за залами, каналами та статтями, поріг беззбитковості; межі місяця рахуються в поясі майданчика, а не за UTC.
Клієнтська база, яка не лестить
Зрізи: усі, постійні, зникають, ризик, дублі. «Зник» рахується від ритму самого клієнта: той, хто ходить раз на тиждень, зник після трьох тижнів тиші, а той, хто раз на квартал, — ні. Дублі шукаються ступенем схожості: збіг телефону — 100 %, «ї» замість «і» — 95 %, різні прізвища зі спільним початком порога не проходять. Без цього виторг однієї людини поділений між двома картками.
П’ять ролей із розмежуванням у базі
Власник, керівник, адміністратор, бухгалтер, працівник. Працівник не «не бачить» гроші — вони до нього не доїжджають: політики на броні, клієнтів і проведення вимагають ролі, а власний розклад він отримує функцією, де грошових колонок фізично немає. Особисті витрати власника не побачить навіть керівник прямим запитом. Права перевірені запитами з-під справжніх токенів, а не читанням політик.
Звернення й час першої відповіді
Заявки надходять за посиланням-каналом — форма на сайті, Tilda, Make, Zapier — і через власного бота майданчика в Telegram: бот господаря, а не спільний. Система відзначає момент першої відповіді й звіряє його з нормативом майданчика. AI-ресепшн уміє запропонувати вільний час і довести до заявки тим самим шляхом, що й публічна сторінка; кожна машинна відповідь позначена як машинна.
Команда, задачі та зміни
Запрошення посиланням, а не листом: за токеном видно лише назву майданчика й роль, посилання приймається один раз. Задачі сортуються за терміновістю, виконавець рухає статус і пише наступний крок. Зміни — тижнева сітка «люди × дні» із закріпленою колонкою імен; ставка копіюється у зміну знімком, тому підвищена ставка не перераховує минулі місяці.