← ко всем проблемам
Калорийность/БЖУ не учитывают модификаторы (сиропы, молоко, сахарность)
Симптом (что видит пользователь / что реально происходит)
- Добавляешь сироп — калории и БЖУ остаются без изменений.
- Вторая помпа — по-прежнему ноль реакции.
- Замена молока на овсяное/миндальное не меняет ни калории, ни Б/Ж/У.
- И карточка товара, и корзина показывают статичные значения.
Почему это больно бизнесу
- Пользователи, выбирающие альтернативное молоко/сладость, как правило следят за нутриентами — отсутствие честных цифр подрывает доверие.
- Часть заказов отваливается: "раз приложение не показывает нутриенты, я закажу в другом месте".
- Риск репутационных претензий: бренд заявляет внимание к деталям, а интерфейс это не подтверждает.
- Упускаем осознанные апселлы: пользователь мог бы выбрать 1/2 порции сиропа, если бы видел вклад в калории.
Техническая причина
- У модификаторов нет описанных нутри-дельт (на единицу: помпа/порция/10 мл).
- Клиент/бэкенд не пересчитывают нутриенты при изменении состава.
- Нет единиц измерения и масштабирования по объёму (S/M/L).
- Нет nutrition_version для управления кешем на клиенте.
Что надо сделать (технические шаги)
- Бэкенд: добавить к модификаторам `nutrition_delta` (на единицу), к товарам — `base_nutrition` (на порцию и/или 100 мл), объём по размерам.
- Определить группы взаимоисключающих опций (например, молоко) и правило: заменить базовое, а не добавлять сверху.
- Добавить `nutrition_version` и схему кеширования нутри-данных на клиенте.
- Клиент: при любом изменении опций пересчитывать kcal/БЖУ локально (≤100 мс) и мгновенно обновлять UI в карточке и корзине.
- Альтернатива/дополнение: эндпоинт `/nutrition/calc` для серверного расчёта, результаты должны совпадать с клиентским.