Telegram бот для iiko: план расхода заготовок на день
Новый Telegram бот, который отправляет старшим поварам и администраторам план расхода заготовок на день. Теперь кухня точно знает, сколько потребуется нарезки лосося на "шапки".
Постановка задачи и поиск решения
Одному из наших клиентов потребовалось решить такую задачу: каждое утро, к открытию кухни, получать прогноз расхода заготовок на текущий день.
Пока никакого машинного обучения, никакой сложной регрессии. Простой статистический расчет. Пример, как сделать прогноз расхода сыра: если сегодня среда, то достаточно взять пять последних сред, усреднить расход сыра за эти среды, и, скорее всего, мы не сильно ошибемся, если будем считать полученное значение как среднестатистический расход сыра.
Остается рассчитать прогнозы для каждой контролируемой заготовки, сформировать итоговый отчет и доставить отчет старшему кухни в Telegram.
Главный вопрос — как получить расход сыра за день? Мы обсуждали разные варианты решения в статье Расход товаров и заготовок в Айко с учетом вложенных технологических карт, будем использовать следующий вариант:
- Заранее строим справочник вхождений контролируемых заготовок во все блюда ресторана.
- Строим отчет о продажах за день.
- Зная количество проданных блюд за день и умножая на значения вхождений из справочника, получаем итоговый ответ: "Сколько сыра было потрачено за день?"
Из нюансов: нужно как-то учитывать "дни-аномалии" в истории и удалять их из статистики перед усреднением. 23 февраля и 8 марта можно было бы исключить с помощью привязки к производственному календарю. Но еще есть "перегретые маркетингом" дни, еще есть Сагаалган и другие национальные праздники. Поэтому пока решаем просто исключать статистические выбросы: если количество заказов в день отличается более, чем на 20% от среднестатистического (в плюс или в минус), такой день исключаем из статистики.
Разработка Телеграм бота
Пытаемся реализовать алгоритм минимально возможным количеством вызовов API. Очевидно, потребуются отчеты о вхождении заготовок в блюда и, соответственно, подключение к Server API. Кроме того, чтобы отчет "собирался" быстро, нужно кэшировать историю заказов. Такая возможность у Семёна Фудова реализована с помощью Transport API (iikoCloud API).
Итоговая последовательность вызовов iiko API:
- Авторизация в iiko Server API — /resto/api/auth.
- Выгрузка списка заготовок — /resto/api/products/search.
- Для сформированного списка заготовок получение отчетов о вхождении заготовок в блюда — /resto/api/reports/ingredientEntry (тут нужно помнить про вложенные технологические карты).
- Освобождение лицензии Server API — /resto/api/logout.
- Авторизация в iiko Transport API — /api/1/access_token.
- Выгрузка заказов за день ("пробегаем" несколько выбранных дней из истории) — /api/1/deliveries/by_delivery_date_and_status. Если день есть в кэше, то данные извлекаются из кэша, быстро.
Результат
Задача решена, получен следующий результат:
- Каждое утро по местному времени бот выгружает из Айко данные о вхождениях заготовок в блюда, собирает и усредняет статистику продаж из истории и формирует прогноз расхода заготовок "на сегодня".
- Всем старшим поварам и администраторам бот отправляет сформированный прогноз. На основании полученного прогноза кухни составляют план работы на день.
- Бот формирует подробный отчет о своей работе и отправляет его руководителю доставки.
Кроме того, в отчете "Прогноз расхода заготовок" Семёна Фудова можно получить почасовой прогноз.
Подведение итогов
Семён Фудов умеет разрабатывать Telegram ботов для самых разных задач. У нас уже работают боты, которые:
- Собирают внутренние логи Семёна Фудова для мониторинга производительности.
- Оповещают курьеров доставки о новых назначенных заказах.
- Выгружают данные о продажах для импорта во внешние системы анализа данных (Power BI и др.)
- Находят опоздания и отправляют SMS сообщения клиентам с извинениями и подарками внутри.
- И теперь — ежедневно отправляют прогнозы расхода заготовок.
Если у вас есть идея разработать собственного Телеграм бота для ресторана, доставки или кафе — пишите на почту hello@fudov.ru, обсудим!
Да, кстати, вместо прогноза расхода заготовок можно рассчитать и прогноз продаж отдельных блюд. Чтобы, к примеру, заранее собирать заготовки для пиццы, ставить их в холодильник и экономить драгоценные минуты на приготовлении заказа.