# Функция "Алгоритм на слот"

Функция "Алгоритм на слот" (Algorithm per slot) — это мощный инструмент для создания сложных рекомендательных стратегий, который позволяет назначать разные рекомендательные алгоритмы на разные позиции (слоты) в виджете.

Это даёт возможность комбинировать различные подходы к рекомендациям в рамках одного блока, делая его более гибким и эффективным.


# Концепция и преимущества

Вместо того чтобы использовать один алгоритм для всего виджета, вы можете, например, настроить следующую логику:

  • Слоты 1-3: Персональные рекомендации на основе User Affinity.
  • Слоты 4-6: Товары, которые часто покупают вместе (Purchased Together).
  • Остальные слоты: Самые популярные товары (Popularity).

Ключевые преимущества:

  1. Гибкость: Комбинируйте сильные стороны разных алгоритмов в одном виджете.
  2. Повышение релевантности: Показывайте наиболее персональные рекомендации на самых видных местах.
  3. Управление разнообразием: Избегайте однотипной выдачи, смешивая разные типы рекомендаций.

# Механика работы и настройка

Логика "Алгоритм на слот" основана на конфигурации массива algorithm в модели стратегии. Настройка происходит в интерфейсе создания/редактирования стратегии.

Как это работает:

  • В настройках алгоритма вы можете переключиться в режим "Алгоритм на слот".
  • Появляется интерфейс для настройки 10 слотов (с 1 по 10) и алгоритма по умолчанию.
  • Индекс слота соответствует его позиции в виджете.
  • Алгоритм по умолчанию (Default) применяется ко всем слотам, начиная с 11-го, или к тем, для которых алгоритм не был задан явно.

Пример конфигурации:

  • Слот 1: User Affinity
  • Слот 2: User Affinity
  • Слот 3: Recently Viewed
  • Слоты 4-10: Не заданы (будет использован Default)
  • Default: Popularity

Результат:

  • В первых двух слотах будут персональные рекомендации.
  • В третьем — недавно просмотренный товар.
  • Во всех остальных слотах — популярные товары.

# Особенности и ограничения

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

# 1. Фильтры и правила применяются глобально

Все предустановленные фильтры и пользовательские правила Include/Exclude, настроенные в стратегии, применяются глобально ко всем алгоритмам, а не к какому-то конкретному слоту.

Пример: Если вы добавили правило Exclude для бренда "X", то товары этого бренда будут исключены из выдачи всех алгоритмов, назначенных на слоты (User Affinity, Popularity и т.д.).

# 2. Взаимодействие с Pin-правилами

Правила Pin (закрепление товара) имеют наивысший приоритет и выполняются до логики "Алгоритм на слот".

  • Если вы закрепили товар в слоте №2, то в этом слоте будет показан именно этот товар, а алгоритм, назначенный на слот №2, будет проигнорирован.
  • Остальные слоты будут заполнены в соответствии с их назначенными алгоритмами.

# 3. Логика fallback

Если один из алгоритмов, назначенный на конкретный слот, не возвращает результат (например, User Affinity для нового пользователя), система не будет применять fallback-цепочку этого алгоритма. Вместо этого она сразу переключится на алгоритм по умолчанию (Default), заданный в стратегии.

Пример:

  • Слот 1: User Affinity (не вернул результат)
  • Default: Popularity

Результат: В слоте 1 будет показан товар из алгоритма Popularity, а не из fallback-цепочки User Affinity (которая обычно Viewed with Recently ViewedPopularity).

# 4. Дедупликация

Система автоматически дедуплицирует товары по group_id между всеми слотами, чтобы избежать показа одинаковых товаров в одном виджете.