Другие сервисы показывают, где дешевле каждый товар. «Моя корзина» считает итог всей закупки — вместе с доставкой, минимальным чеком и остатком лимита по вашим картам — и говорит, что где брать.
В расчёт уже включён штраф 150 ₽ за второй заказ — иначе разбиение всегда выглядело бы выгоднее, чем оно есть.
Оба чека выше подобрались к порогам почти вплотную — и это не совпадение. Перебор ищет не самую низкую цену на каждую позицию, а самый низкий итог. Поэтому в разбиении есть две строки, которые на первый взгляд стоят не в том магазине.
Переплата 7 ₽ держит чек ВкусВилла выше 1 500 ₽. Без неё пропадает кэшбэк 150,94 ₽ — в двадцать раз больше переплаты.
Уберите её из Магнита — чек падает ниже 2 000 ₽ и добавляется доставка 149 ₽. Экономия 35 ₽ оборачивается расходом.
Выгода есть только у варианта целиком — поэтому перебираются все разбиения корзины, а не выбирается самая низкая цена в каждой строке:
subtotal = сумма(цена × количество) по позициям, отнесённым в магазин
доставка = 0, если subtotal ≥ порога бесплатной доставки, иначе тариф
кэшбэк = 0, если subtotal < минимального чека,
иначе min(subtotal × процент ⁄ 100, остаток лимита карты)
итог = subtotal + доставка − кэшбэк
вариант = сумма итогов + штраф × (число магазинов − 1)
Чтобы расчёт был честным, нужны три вещи: что семья обычно покупает, сколько это стоит сегодня в каждом магазине и какие условия дают карты. Каждая приходит своим путём.
Что и в каком количестве берёт семья. Отсюда же берётся сумма, с которой сравнивается экономия.
Цены меняются каждый день, поэтому берутся не из памяти, а с сайта — и сохраняются снимками, из которых растёт история цен.
Кэшбэк решает не меньше, чем цена: процент, лимит за период, минимальный чек и срок меняют ответ целиком.
Открытого адреса, по которому можно просто спросить цену, Магнит не даёт — тот, что напрашивался сам собой, отвечает «страница не найдена». Зато обычная страница сайта приходит уже собранной: товары и цены лежат прямо в ней, в том же виде, в каком их показывают вам в браузере. Оттуда и читаем.
поиск magnit.ru/search/?term=огурцы короткоплодные
→ артикул 1000227406
«Огурцы короткоплодные тепличные 450г»
119,99 ₽
цена magnit.ru/product/1000227406
→ 119,99 ₽
Граммовка вынимается из названия: «450г» в конце превращается в вес, по нему товары сравниваются с допуском ±20 %.
Цена в Магните зависит от конкретного магазина. Без указания кода сайт отдаёт свой по умолчанию — сейчас это Краснодар. Свой код видно в адресной строке после выбора магазина, и он прописывается в настройках: тогда расчёт считает по вашим ценам, а не по чужому городу.
Последнее важнее, чем кажется: сайт магазина может поменяться в любой день, и тогда разбор перестанет находить цены. Расчёт в этом случае не останавливается — он идёт по резервному прайсу, а в интерфейсе видно, что цены не живые.
Магазины не обязаны отдавать цены роботам: разметка меняется без предупреждения, а часть витрин закрыта намеренно. Поэтому источники не связаны друг с другом: отвалился один — остальные считают дальше, — а юридическая сторона разбора оценивается до того, как продуктом начнёт пользоваться кто-то кроме семьи.
Чек PDF от ОФД, JSON из «Мои чеки онлайн» ФНС или таблица заказа из личного кабинета магазина. Весовые узнаются по дробному количеству.
«ВК/ПОЛ.Сыр СТРАЧАТЕЛЛА мяг.200г» превращается в понятную строку и связывается с тем, что лежит в магазинах. Один раз связали — больше не спросим.
Коннектор магазина отдаёт актуальную цену. Снимки не перезаписываются — из них растёт история цен.
Все разбиения корзины между магазинами, для каждого — лучшая карта. Наверх выходят три варианта.
| Часть | Состояние | Подробности |
|---|---|---|
| Точность цен | ориентир | Цены на сайте и в зале расходятся на 5–15 %, поэтому итог — ориентир, а не прайс-лист. Пороги доставки и кэшбэка считаются точно, цены — как получится у магазина в момент запроса. |
| Глубина перебора | 2 магазина | Разбиение на три и больше — в планах, вместе с учётом замен, когда товара нет в наличии, и объяснением, почему позиция попала именно сюда. |
| Данные в примере | вымышленные | Чек, условия карт и названия банков демонстрационные. Свои подставятся при первой загрузке покупок. |
| Проверки | 71 тест | Следят за тем, чтобы формула, разбор чеков и разбиение считались одинаково от сборки к сборке. Итог каждого варианта пересчитывается независимо от кода оптимизатора. |