Skip to main content

ТЗ: Telegram-бот для планов питания (n8n)

Техническое задание на разработку Telegram-бота для составления планов питания на базе n8n

1. Общие сведения

1.1. Назначение

Разработка Telegram-бота на базе n8n для составления и коррекции планов питания в соответствии с индивидуальными параметрами пользователя.

1.2. Цели и задачи

  • Автоматизация процесса составления индивидуальных планов питания
  • Предоставление пользователям персонализированных рекомендаций по питанию
  • Возможность генерации планов питания с учетом различных ограничений и предпочтений
  • Монетизация сервиса через платные функции

2. Требования к функциональности

2.1. Сбор данных пользователя

Бот должен последовательно собирать следующие данные:

2.1.1. Основные биометрические параметры:

  • Возраст
  • Пол
  • Рост (см)
  • Вес (кг)
  • Статус грудного вскармливания (да/нет)
  • Цель (похудеть/поддержать/набрать)

2.1.2. Уровень физической активности:

  • Низкая
  • Средняя
  • Высокая
  • Очень высокая

Примечание: предусмотреть измерение активности в количестве шагов и понятной метафоре

2.1.3. Пищевые ограничения (множественный выбор):

  • Говядина
  • Свинина
  • Птица
  • Рыба
  • Яйца
  • Молочные свежие
  • Кисломолочные
  • Бобовые
  • Злачные
  • Глютеновые продукты

2.1.4. Количество приемов пищи в день:

  • Варианты: 1, 2, 3, 4, 5

2.1.5. Предпочтительный протокол питания:

  • Сбалансированный
  • Низкоуглеводный
  • Кето

2.1.6. Количество дней планирования:

  • От 1 до 14 дней

2.2. Алгоритм составления плана питания

Алгоритм должен выполнять следующие действия:

  1. Расчет базового обмена веществ по формуле Миффлина-Сан Жеора
  2. Определение целевого суточного калоража исходя из цели пользователя
  3. Распределение калоража по указанному количеству приемов пищи
  4. Анализ базы рецептов
  5. Исключение рецептов с нежелательными ингредиентами
  6. Подбор рецептов для каждого приема пищи в соответствии с:
    • Калорийностью
    • Типом приема пищи (завтрак, обед, ужин и т.д.)
    • Выбранным протоколом питания
  7. Формирование итогового плана питания в формате PDF

2.3. Авторизация и хранение данных

  • Авторизация пользователей через Telegram
  • Хранение профилей пользователей
  • Сохранение истории запросов пользователя
  • Возможность повторного доступа к ранее сгенерированным меню

2.4. Система ограничений и оплаты

  • Ограничение количества бесплатных запросов в соответствии с настройками администратора
  • Интеграция платежной системы для покупки дополнительных возможностей
  • Разграничение прав доступа (бесплатные/платные функции)

2.5. Замена продуктов

  • Предоставление пользователю возможности замены отдельных продуктов в блюдах
  • Обращение к таблице совместимости продуктов для определения возможных альтернатив
  • Предложение подходящих альтернатив с сохранением пищевой ценности блюда
  • Информирование пользователя о невозможности замены, если подходящих альтернатив не найдено

2.6. Техническая поддержка

  • Возможность обмена сообщениями между пользователем и службой поддержки
  • Система обратной связи

3. Технические требования

3.1. Платформа

  • Разработка на базе n8n
  • Интеграция с Telegram Bot API

3.2. База данных

  • Хранение пользовательских данных
  • Хранение базы рецептов с метаданными:
    • Калорийность
    • Макронутриенты (белки, жиры, углеводы)
    • Тип приема пищи (завтрак, обед, ужин и т.д.)
    • Список ингредиентов
    • Соответствие протоколам питания
  • Таблица совместимости продуктов для обеспечения функционала замены:
    • Категоризация продуктов по группам
    • Информация о возможных заменах с сохранением пищевой ценности
    • Учет особенностей приготовления при замене

3.3. Интеграции

  • Интеграция с платежными системами
  • Интеграция с сервисом генерации PDF-документов

4. Пользовательский интерфейс

4.1. Навигация

  • Понятное меню с кнопками для взаимодействия
  • Пошаговый сбор информации
  • Возможность вернуться к предыдущему шагу

4.2. Отображение результатов

  • PDF-документ с планом питания на выбранный период
  • Структурированное отображение меню по дням и приемам пищи
  • Включение в документ информации о калорийности и макронутриентах

4.3. Интерфейс замены продуктов

  • Возможность выбора конкретного блюда для изменения состава
  • Интуитивный выбор продукта для замены из списка ингредиентов блюда
  • Отображение списка возможных альтернатив с указанием влияния на пищевую ценность
  • Визуальное подтверждение произведенной замены
  • Возможность отмены замены

5. Формулы для расчетов

5.1. Формула Миффлина-Сан Жеора для расчета базового обмена веществ (BMR)

Для мужчин: BMR = (10 × вес в кг) + (6.25 × рост в см) - (5 × возраст) + 5

Для женщин: BMR = (10 × вес в кг) + (6.25 × рост в см) - (5 × возраст) - 161

5.2. Коэффициенты активности (PAL):

  • Низкая активность: BMR × 1.2
  • Средняя активность: BMR × 1.375
  • Высокая активность: BMR × 1.55
  • Очень высокая активность: BMR × 1.725

5.3. Коэффициенты целей:

  • Похудение: общий калораж × 0.8
  • Поддержание: общий калораж × 1.0
  • Набор массы: общий калораж × 1.2

Примечание: для женщин в период грудного вскармливания добавить 500 ккал к итоговому значению

6. Этапы разработки

6.1. Планирование и проектирование

  • Разработка архитектуры бота
  • Проектирование потоков в n8n
  • Проектирование структуры базы данных

6.2. Разработка основного функционала

  • Реализация сбора данных
  • Разработка алгоритма расчета и формирования планов питания
  • Интеграция с базой рецептов
  • Разработка модуля замены продуктов и интеграция с таблицей совместимости

6.3. Разработка дополнительных функций

  • Авторизация и хранение данных пользователей
  • Интеграция платежной системы
  • Реализация технической поддержки

6.4. Тестирование

  • Функциональное тестирование
  • Нагрузочное тестирование
  • Тестирование пользовательского опыта

6.5. Запуск и поддержка

  • Запуск бота в продакшн
  • Мониторинг работы
  • Техническая поддержка и обновления

7. Требования к документации

  • Документация по API и интеграциям
  • Руководство администратора
  • Руководство пользователя

8. Дополнительные требования

  • Масштабируемость решения
  • Возможность добавления новых функций и расширения базы рецептов
  • Резервное копирование данных пользователей
  • Обеспечение безопасности персональных данных в соответствии с ФЗ-152

2. Сбор данных и персонализация

2.1. Опрос и ввод данных

  • Пользователь последовательно вводит рост, вес, возраст, пол, уровень активности, пищевые ограничения, цель (похудение / поддержание / набор) и число дней планирования.
  • Одно‑вариантные вопросы (пол, цель) выводятся кнопками.
  • Пищевые ограничения выбираются из предустановленного списка кнопками с множественным выбором.
  • Там, где возможен свободный ввод (рост, вес, возраст, PAL, количество дней), бот проверяет корректность введённого значения и при необходимости запрашивает повторный ввод.

2.2. Генерация плана питания

  1. Расчёт BMR по формуле Миффлина–Сан Жеора (см. раздел 5).
  2. Умножение на коэффициент PAL (см. 5.2).
  3. Применение коэффициента цели (см. 5.3).
  4. Учёт пищевых ограничений при подборе блюд из базы рецептов.
  5. Формирование меню на выбранное число дней.
  6. Расчёт суммарной калорийности и распределения КБЖУ по дням.
  7. Формат вывода: генерируется простая HTML‑страница (веб‑ссылка). PDF формируется опционально по запросу пользователя.

2.3. Хранение данных

  • В базе сохраняются параметры пользователя, история запросов и два последних сгенерированных меню.
  • Полные тексты диалогов не сохраняются.

2.4. Доступ к сохранённым меню

  • Команда /menu возвращает ссылки на два последних меню.
  • При генерации нового плана самый старый автоматически удаляется.

2.5. Отсутствие блюда в базе

  • Если подходящего рецепта нет, бот сообщает об этом и выдаёт текстовую рекомендацию, сформированную ИИ‑ассистентом (без автоматической генерации нового рецепта).

3. Платёжная система и безопасность

3.1. Авторизация

  • По номеру телефона Telegram; при первом входе создаётся карточка пользователя.

3.2. Защита данных

  • Хранение персональных данных в соответствии с ФЗ‑152.
  • Шифрование соединений (HTTPS) и регулярное резервное копирование БД.

3.3. Платёжная интеграция

  • Подписка и разовые покупки реализуются через Stripe.
  • n8n‑поток обрабатывает web‑hooks Stripe и активирует или продлевает доступ.

4. Функционал меню

4.1. Интеграция с базой рецептов

  • Рецепты содержат ингредиенты, вес, КБЖУ и теги ограничений.
  • База расширяема без изменения логики бота.

4.2. Модуль совместимости ингредиентов

  • Таблица замен хранит список допустимых альтернатив и их влияние на пищевую ценность.

4.3. Интерфейс замены продуктов

  • Возможность выбрать конкретное блюдо из текущего меню для изменения состава.
  • Интуитивный выбор ингредиента из списка компонентов блюда.
  • Список возможных альтернатив с указанием изменения КБЖУ выводится текстом.
  • После подтверждения страница меню перегенерируется и автоматически обновляется — это служит визуальным подтверждением замены.
  • Доступна отмена замены (возврат к предыдущей версии страницы).
  • PDF перегенерируется только если пользователь запросил PDF‑версию меню.

5. Формулы для расчётов

5.1. Формула Миффлина–Сан Жеора (BMR)

  • Мужчины: BMR = (10 × вес кг) + (6.25 × рост см) – (5 × возраст) + 5

  • Женщины: BMR = (10 × вес кг) + (6.25 × рост см) – (5 × возраст) – 161

5.2. Коэффициенты активности (PAL)

  • Низкая — BMR × 1.2
  • Средняя — BMR × 1.375
  • Высокая — BMR × 1.55
  • Очень высокая — BMR × 1.725

5.3. Коэффициенты целей

  • Похудение — общий калораж × 0.8
  • Поддержание — общий калораж × 1.0
  • Набор массы — общий калораж × 1.2
  • Женщинам в период грудного вскармливания добавить 500 ккал к итоговому значению

6. Этапы разработки

6.1. Планирование и проектирование

  • Архитектура бота и потоков n8n
  • Структура базы данных

6.2. Разработка основного функционала

  • Сбор данных, расчёт, генерация меню
  • Интеграция с базой рецептов
  • Модуль замены продуктов

6.3. Разработка дополнительных функций

  • Авторизация и хранение данных
  • Интеграция Stripe
  • Система технической поддержки

6.4. Тестирование

  • Функциональное
  • Нагрузочное
  • UX‑тестирование

6.5. Запуск и поддержка

  • Деплой в прод
  • Мониторинг, обновления, резервное копирование

7. Требования к документации

  • Описание REST‑API и схем Web‑hook‑ов
  • Руководство администратора
  • Руководство пользователя