Задача
Барбершоп на четырёх мастеров просил перевести запись клиентов в бота.
До этого писали администратору в личку, он сверялся с бумажным журналом и называл время.
Неявки шли фоном - человек записывался за неделю и не приходил, отменить не считал нужным, окно простаивало.
Ночные сообщения администратор видел только утром, часть людей за это время уходила в соседний барбершоп.
Задача была снять с него ручную сверку и убрать пустые окна в сетке.
Что сделал
Бот на Python и aiogram 3, база PostgreSQL, расписание живёт на своём сервере - сторонний календарь не подключали.
Запись идёт шагами - услуга, мастер, день, свободное время. Можно начать с мастера, если человек ходит к своему.
Слоты считаются от длительности услуги: стрижка сорок минут, борода двадцать, комплекс час. Окно, в которое услуга не влезает, бот не покажет.
Слот блокируется на время оформления и перепроверяется прямо перед записью, второму бот предлагает соседнее время.
Напоминания за сутки и за два часа, в напоминании кнопки перенести и отменить.
Результат
Запись целиком ушла в бота, администратор перестал работать диспетчером и занимается залом.
Пустых окон стало меньше - отмена возвращает время в сетку, и его успевают занять в тот же день.
Неявки просели после напоминания за два часа, по словам заказчика примерно вдвое за первый месяц.
У клиента остались исходники, админка и доступ к серверу, мастер и услуга добавляются без разработчика.