# 🤖 Алгоритмы рекомендаций

Алгоритмы формируют основу рекомендательных стратегий в Gravity Field. Каждый алгоритм отвечает за логику формирования товарной выдачи на основе поведения пользователя, контекста страницы и продуктового фида.


# 🧬 Similarity

Рекомендует товары, похожие на текущий товар.

  • Использует поля фида: categories, keywords, price, name
  • Чем реже ключевое слово — тем выше его вес
  • Важна полнота и точность фида

Подходит для: PDP, Cart
Обновление: ежедневно
Fallback: Viewed Together → Popularity


# 👀 Viewed Together

Рекомендует товары, которые другие пользователи смотрели вместе с текущим товаром.

  • Анализирует просмотры в одной сессии
  • Чем чаще товар смотрится с другими — тем выше связь
  • Популярные товары с множеством связей получают меньший вес

Подходит для: PDP, Cart
Диапазон данных: 30 дней
Обновление: ежедневно


# 🛒 Purchased Together

Рекомендует товары, купленные вместе с текущим товаром в рамках одной транзакции.

  • Учитывает силу связи (меньше вес у часто покупаемых товаров)
  • Больший вес у недавних покупок

Подходит для: PDP, Cart
Диапазон данных: 180 дней
Обновление: ежедневно
Рекомендуется запуск после 30 дней сбора данных


# 📈 Popularity

Ранжирует товары по взвешенной активности: просмотр, добавление в корзину, покупка.

Формула оценки по типу действия:

  • Просмотр = 1
  • Добавление в корзину = 20
  • Покупка = 60

Модификатор по сроку давности:

  • До 2 дней = ×8
  • До 30 дней = ×2
  • До 180 дней = ×1

Подходит для: всех страниц
Обновление: при обновлении фида


# 🕵️♂️ User Affinity

Строит персональный профиль интересов пользователя и рекомендует товары на его основе.

  • Учитывает действия: просмотр, добавление в корзину, покупка
  • Оценивает атрибуты товаров: категория, бренд и т.д.
  • Строит affinity-профиль пользователя в реальном времени

Подходит для: всех страниц
Диапазон данных: 180 дней
Рекомендуется запуск после 30 дней сбора данных

Подробнее об аффинити-профиле →


# 🕘 Recently Viewed

Показывает последние просмотренные пользователем товары (от новых к старым).

  • Ограничение: 100 товаров
  • Может вернуть меньше слотов, чем запрошено
  • Не проверяет in_stock

Подходит для: всех страниц
Обновление: в реальном времени
Диапазон данных: 90 дней


# 💳 Recently Purchased

Показывает последние купленные пользователем товары (от новых к старым).

  • Ограничение: 500 товаров
  • Обновление в реальном времени
  • Не зависит от фида

Диапазон данных: 1 год


# 👥 Viewed with Recently Viewed

Показывает товары, которые другие пользователи просматривали, когда также смотрели те же товары, что и вы.

  • Хранит до 50 просмотренных товаров пользователя
  • Строит связки на основе поведения других

# 🤝 Purchased with Recently Purchased

Аналогично предыдущему, но по покупкам.

  • Показывает, что обычно покупают вместе с тем, что купил пользователь ранее
  • Хранит до 50 купленных товаров

# 🛍 Last Purchase

Показывает товары из последней покупки пользователя — в порядке, в котором они были куплены.

  • Используется для сценариев «Спасибо за заказ», повторных продаж, апсейлов
  • Работает только при наличии события purchase

Не использует fallback
Поддерживает только 1 последнюю покупку


# 🕳 Empty Strategy

Стратегия без алгоритма. Используется, если:

  • Вы хотите вручную задать список товаров (через Pin)
  • Вся логика фильтрации и пинов реализуется вручную
  • Нужна строго кастомная выдача без участия алгоритма

# 🔁 Fallback логика

Если основной алгоритм не дал нужного количества товаров — включается fallback по заранее заданной логике:

Основной Fallback-цепочка
Affinity → Viewed with Recently Viewed → Popularity
Similarity → Viewed Together → Popularity
Purchased Together → Viewed Together → Similarity → Popularity
Viewed Together → Similarity → Popularity
Viewed with Recently Viewed → Viewed Together → Popularity
Purchased with Recently Purchased → Purchased Together → Similarity → Popularity
Last Purchase fallback не применяется

Фильтры и ослабления, заданные в стратегии, переносятся на fallback-алгоритмы.


# 📌 Особенности

  • Для стратегий, где передаётся контекст корзины (CART), товары из корзины исключаются.
  • Для Recently purchased и Recently viewed выдаются товары вне зависимости от наличия. Остальные алгоритмы используют in_stock = true.
  • Алгоритмы работают по group_id, чтобы исключить дубли (одинаковые товары с разными SKU).
  • При использовании нескольких виджетов на одной странице — выдача дедуплируется.
  • Для запуска некоторых алгоритмов (Affinity, Purchased Together) требуется накопление данных (от 30 дней).