
Список покупок
Генерация структурированных списков покупок из рецептов. Агрегация ингредиентов, группировка по категориям, конвертация единиц, маппинг на названия товаров ВкусВилла. Замены для отсутствующих товаров.
SKILL.md
Списки покупок
Превращаем рецепты и планы питания в структурированный список покупок, готовый для заказа. Список агрегируется, группируется по категориям и маппится на реальные названия товаров в магазинах.
Шаг 1: Формат входных данных
Получаешь список рецептов в формате:
Рецепт 1: [Название] (N порций)
- Ингредиент 1 — X г
- Ингредиент 2 — Y шт
Рецепт 2: [Название] (M порций)
- Ингредиент 1 — X г
...
Или развёрнутый план питания на несколько дней.
Шаг 2: Агрегация ингредиентов
Правила объединения
- Одинаковые продукты суммируются: «куриная грудка 150г» + «куриная грудка 200г» = «куриная грудка 350г»
- Разные формы — отдельно: «куриная грудка» ≠ «куриный фарш» ≠ «куриные бёдра»
- Свежие vs замороженные — отдельно: «шпинат свежий» ≠ «шпинат замороженный»
- Консервы vs сырые — отдельно: «чечевица» ≠ «чечевица консервированная»
Конвертация единиц
| Из | В | Правило |
|---|---|---|
| г | кг | ÷ 1000, если итог > 500г |
| мл | л | ÷ 1000, если итог > 500мл |
| шт | шт | оставить |
| зубчик (чеснок) | шт | ~1 зубчик = 5-7г, 1 головка = 8-10 зубчиков |
| ст.л. (масло) | мл | 15 мл |
| ч.л. (специи) | г | ~5 г |
| пучок (зелень) | г | ~30-50г |
| щепотка | — | игнорировать в итоговом списке |
Округление
- Мясо/рыба: округлить до ближайших 100г (продаются примерно так)
- Овощи: до ближайших 100г или поштучно (помидоры, перцы — шт)
- Крупы/макароны: до ближайших 100г
- Молочка: до целой упаковки (творог — 200г, йогурт — 130г)
- Масло: 1 бутылка (если нужно < 200мл — считать что есть дома)
- Специи: не включать если нужно < 1 ч.л. (считать что есть дома)
- Яйца: округлить до десятка
Шаг 3: Категории для группировки
Список покупок группируется по категориям — так удобнее ориентироваться в магазине.
| Категория | Что входит |
|---|---|
| 🥩 Мясо и птица | Курица, индейка, говядина, свинина, фарш |
| 🐟 Рыба и морепродукты | Минтай, горбуша, сёмга, креветки, консервы |
| 🥛 Молочные продукты | Творог, йогурт, молоко, сыр, сливочное масло |
| 🥚 Яйца | Куриные яйца |
| 🥬 Овощи и зелень | Все свежие овощи, зелень, грибы |
| 🍎 Фрукты и ягоды | Все свежие фрукты и ягоды |
| 🌾 Крупы и макароны | Гречка, рис, овсянка, макароны, булгур, киноа |
| 🫘 Бобовые и консервы | Фасоль, нут, чечевица, томатная паста, консервы |
| 🧂 Масло и соусы | Растительное масло, соевый соус, уксус |
| 🧈 Орехи и семена | Грецкие, миндаль, кунжут, чиа, лён |
| 🍞 Хлеб и выпечка | Хлеб, хлебцы, лаваш, тортильи |
| 🧊 Замороженные | Замороженные овощи, ягоды, полуфабрикаты |
| 🫙 Тофу и растительное | Тофу, растительное молоко, кокосовые сливки |
| 🧂 Специи | Соль, перец, паприка, куркума, зира и т.д. |
Шаг 4: Маппинг на VkusVill
Для каждого ингредиента — как он называется и ищется в ВкусВилле.
Мясо и птица
| Рецептное название | Поиск на VkusVill |
|---|---|
| Куриная грудка | «Филе куриной грудки» |
| Куриное бедро б/к | «Бедро куриное без кости» |
| Куриный фарш | «Фарш куриный» |
| Индейка филе | «Филе индейки» |
| Говядина вырезка | «Вырезка говяжья» |
| Говяжий фарш | «Фарш говяжий» |
| Свинина | «Свинина» + нужная часть (шея, карбонад) |
Рыба
| Рецептное название | Поиск на VkusVill |
|---|---|
| Минтай филе | «Филе минтая» |
| Горбуша филе | «Филе горбуши» |
| Сёмга/форель | «Стейк сёмги» / «Филе форели» |
| Тунец консервированный | «Тунец консервированный» |
Молочка
| Рецептное название | Поиск на VkusVill |
|---|---|
| Творог 5% | «Творог 5%» |
| Творог 9% | «Творог 9%» |
| Греческий йогурт | «Йогурт греческий» |
| Сыр (твёрдый) | «Сыр твёрдый» |
| Моцарелла | «Моцарелла» |
| Молоко | «Молоко» + жирность |
| Сливочное масло | «Масло сливочное 82,5%» |
Овощи
| Рецептное название | Поиск на VkusVill |
|---|---|
| Помидоры | «Помидоры» |
| Огурцы | «Огурцы» |
| Болгарский перец | «Перец болгарский» |
| Баклажан | «Баклажан» |
| Брокколи (свежая) | «Брокколи» |
| Брокколи (заморозка) | «Брокколи замороженная» |
| Шпинат (заморозка) | «Шпинат замороженный» |
| Кабачок | «Кабачок» |
| Имбирь | «Имбирь корень» |
| Грибы шампиньоны | «Шампиньоны свежие» |
Крупы
| Рецептное название | Поиск на VkusVill |
|---|---|
| Гречка | «Крупа гречневая» |
| Рис белый | «Рис» |
| Рис бурый | «Рис бурый» / «Рис нешлифованный» |
| Овсянка | «Хлопья овсяные» / «Геркулес» |
| Макароны | «Макароны» (укажи сорт) |
| Булгур | «Крупа булгур» |
| Чечевица | «Чечевица» (красная/зелёная) |
| Киноа | «Киноа» |
Специфичные для ВкусВилла (ЗОЖ)
| Рецептное название | Поиск на VkusVill |
|---|---|
| Тофу | «Тофu» / «Тофу» |
| Растительное молоко | «Молоко овсяное» / «Молоко миндальное» |
| Безлактозный творог | «Творог безлактозный» |
| Безглютеновые макароны | «Макароны без глютена» / «Макароны из риса» |
| Кокосовые сливки | «Сливки кокосовые» |
| Темпе | «Темпе» |
| Хумус | «Хумус» |
Шаг 5: Формат вывода
Стандартный список покупок
🛒 Список покупок — [N] позиций, ~XXX₽
🥩 Мясо и птица
☐ Филе куриной грудки — 400г (~140₽)
☐ Фарш говяжий — 300г (~130₽)
🥛 Молочные продукты
☐ Творог 5% — 2 × 200г (~180₽)
☐ Сыр твёрдый — 200г (~120₽)
🥬 Овощи и зелень
☐ Помидоры — 500г (~80₽)
☐ Огурцы — 300г (~40₽)
...
📊 Итого: ~XXX₽
Для автоматического добавления в корзину
Формат для передачи в навык vkusvill-cart:
products:
1. "Филе куриной грудки" — 400г (весовой, 0.4 кг)
2. "Творог 5%" — 2 шт (по 200г)
3. "Гречка" — 1 пачка (800г)
...
Каждый товар содержит:
- Название для поиска (из маппинга VkusVill)
- Количество (число)
- Тип единицы:
kg(весовой),pcs(штучный),pack(упаковка)
Шаг 6: Замены и альтернативы
Если товара нет в наличии, предложить альтернативу. При автоматическом добавлении в корзину (vkusvill-cart) — пробовать замены автоматически до 2 попыток перед тем как спрашивать пользователя.
Полная таблица замен
| Нет в наличии | Замена 1 | Замена 2 |
|---|---|---|
| Бедро куриное б/к | Филе куриной грудки | Филе индейки |
| Филе куриной грудки | Бедро куриное б/к | Филе индейки |
| Филе индейки | Филе куриной грудки | Бедро куриное б/к |
| Филе горбуши | Филе минтая | Филе трески |
| Филе минтая | Филе трески | Филе горбуши |
| Сёмга/форель | Лосось атлантический | Кета стейк |
| Говядина вырезка | Говяжий фарш (постный) | Свиной карбонад |
| Греческий йогурт | Сметана 10-15% | Натуральный йогурт |
| Тофу | Адыгейский сыр | Брынза |
| Авокадо | Сливочное масло (для текстуры) | — |
| Рис бурый | Рис белый | Гречка |
| Свежий шпинат | Замороженный шпинат | Щавель |
| Свежая брокколи | Замороженная брокколи | Цветная капуста |
| Болгарский перец | Замороженный перец | Паприка молотая |
| Шампиньоны свежие | Шампиньоны консервированные | Вешенки |
| Творог 5% | Творог 9% (уменьшить порцию жира) | Творог обезжиренный |
| Моцарелла | Сыр сулугуни | Адыгейский сыр |
| Чечевица красная | Чечевица зелёная | Нут |
| Нут | Фасоль красная | Чечевица |
| Киноа | Булгур | Кускус |
| Булгур | Кускус | Киноа |
| Овсянка | Геркулес | Хлопья 5-злаковые |
| Миндаль | Грецкие орехи | Кешью |
| Банан | Яблоко (в выпечке) | Авокадо (в смузи) |
| Лимон | Лимонная кислота | Уксус яблочный |
| Имбирь свежий | Имбирь молотый (×0.3 количества) | — |
| Кокосовые сливки | Сливки 20% | Сметана 15% |
| Темпе | Тофу | — |
| Растительное молоко | Любое другое растительное | Молоко обычное (если не веган) |
| Макароны без глютена | Рисовая лапша | Гречневая лапша (соба) |
Как использовать при автоматическом добавлении
При вызове навыка vkusvill-cart:
- Поиск по основному названию → если 0 результатов
- Автоматически попробовать Замену 1 → если 0 результатов
- Автоматически попробовать Замену 2 → если 0 результатов
- Сообщить пользователю: «Не нашёл [товар] и аналоги. Что предложить вместо него?»
- Записать в чекпоинт какая замена была использована
Антипаттерны
Не делай так:
- «Соль, перец — по вкусу» в списке покупок — убери, считай что базовые специи есть
- «Лимонный сок 1 ч.л.» — не покупай лимон ради 1 ч.л., замени на лимонную кислоту или убери
- «Мука 2 ст.л.» — не покупай пачку муки ради 30г
- «Петрушка 1 веточка» — не покупай пучок ради веточки, либо используй весь пучок в рецепте
Делай так:
- Проверяй что все открытые упаковки используются в рецептах
- Если нужен 1 зубчик чеснока — не включай в список (есть дома)
- Яйца — всегда округляй до десятка
- Масло — включай только если нужно > 100мл