Бот распознает еду по фото, считает КБЖУ и ведет дневник питания. Система построена на нескольких взаимосвязанных сценариях: основной отвечает за мгновенное взаимодействие с пользователем (обработка фото, команд и сообщений), а фоновый — за ежедневную аналитику рациона и отправку отчетов. В качестве памяти бота, где хранится вся история питания и профили пользователей, используется база данных Supabase.
В основе лежит принцип разделения логики на независимые, но связанные между собой модули. Это делает систему надежной и легко масштабируемой. Главный воркфлоу (callbacks) выступает в роли маршрутизатора. Он принимает все входящие события от Telegram (текст, фото, нажатия кнопок) и с помощью ноды Switch определяет, что именно прислал пользователь. В зависимости от типа события, он передает управление одному из специализированных воркфлоу, каждый из которых отвечает за свою задачу.
text). Здесь логика также ветвится: это может быть ручной ввод еды (команда /v), который парсится и сразу сохраняется, или обычное сообщение для AI-агента. Агент, в свою очередь, имеет доступ к инструменту — который делает запрос в базу данных. Это позволяет ему вспоминать предыдущие приемы пищи и отвечать на вопросы вроде "Что я сегодня ел?".digest). Он запускается по таймеру (Schedule Trigger) раз в сутки. Сценарий делает запрос в Supabase, чтобы получить все приемы пищи пользователя за день, агрегирует их, а затем отправляет эту сводку в GPT-модель с задачей проанализировать рацион и дать рекомендации. Таким образом, ресурсоемкая аналитическая задача вынесена в отдельный процесс и не мешает основной работе бота.