ТЗ: 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. Алгоритм составления плана питания
Алгоритм должен выполнять следующие действия:
- Расчет базового обмена веществ по формуле Миффлина-Сан Жеора
- Определение целевого суточного калоража исходя из цели пользователя
- Распределение калоража по указанному количеству приемов пищи
- Анализ базы рецептов
- Исключение рецептов с нежелательными ингредиентами
- Подбор рецептов для каждого приема пищи в соответствии с:
- Калорийностью
- Типом приема пищи (завтрак, обед, ужин и т.д.)
- Выбранным протоколом питания
- Формирование итогового плана питания в формате 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. Генерация плана питания
- Расчёт BMR по формуле Миффлина–Сан Жеора (см. раздел 5).
- Умножение на коэффициент PAL (см. 5.2).
- Применение коэффициента цели (см. 5.3).
- Учёт пищевых ограничений при подборе блюд из базы рецептов.
- Формирование меню на выбранное число дней.
- Расчёт суммарной калорийности и распределения КБЖУ по дням.
- Формат вывода: генерируется простая HTML‑страница (веб‑ссылка). PDF формируется опционально по запросу пользователя.
2.3. Хранение данных
- В базе сохраняются параметры пользователя, история запросов и два последних сгенерированных меню.
- Полные тексты диалогов не сохраняются.
2.4. Доступ к сохранённым меню
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‑ов
- Руководство администратора
- Руководство пользователя
No Comments