# Управление персонализацией

После создания персонализации вы можете управлять её жизненным циклом: запускать и останавливать, переобучать модель, удалять, конвертировать между типами и управлять вариантами.


# Кеширование персонализаций

# Кеш на стороне сервера

При изменении настроек персонализации (статус, варианты, условия показа) изменения не применяются мгновенно из-за серверного кеширования.

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

  • Список персонализаций кешируется на сервере с ключом {projectId}_allPersonalizationsList
  • Кеш сбрасывается при:
    • Сохранении настроек персонализации
    • Сохранении настроек варианта
    • Удалении варианта
    • Удалении персонализации

Важно:

  • После изменения статуса персонализация может продолжать показываться (или не показываться) до 1-2 минут пока кеш не обновится
  • Это нормальное поведение, не требующее вмешательства

# Кеш на стороне клиента (браузера)

JavaScript-бандл Sales Ninja кеширует выбранный вариант персонализации в браузере посетителя для ускорения работы.

Типы клиентского кеширования:

  1. Session (кеш на уровне сессии)

    • Вариант сохраняется на время сессии пользователя
    • Используется когда условия персонализации зависят от параметров сессии (utm_source, session_number и т.д.)
    • Проверяется sessionId — если сессия изменилась, кеш сбрасывается
  2. TTL (кеш с временем жизни)

    • Вариант сохраняется на указанное время (validUntilUtc)
    • При каждой загрузке страницы проверяются зависимости (dependencies)

Зависимости (Dependencies):

Это условия, которые проверяются на стороне браузера для валидации кеша:

  • page_url — URL текущей страницы
  • page_title — заголовок страницы

Операторы проверки: Equal, NotEqual, Contains, NotContains, StartsWith, EndsWith, IsSet, IsNotSet, UrlMatches

Отключение клиентского кеша:

Для отладки можно отключить клиентское кеширование:

localStorage.setItem('snj/usePersonalizationsCache', 'false');

Или полностью отключить персонализации:

localStorage.setItem('snj/personalizations-disable', 'true');

Важно:

  • Клиентский кеш означает, что даже после изменения варианта на сервере посетитель может видеть старый вариант до истечения TTL кеша или до окончания сессии
  • При тестировании используйте режим инкогнито или очистку localStorage

# Статусы персонализации

Персонализация может находиться в одном из трёх статусов:

# 1. Активна (Working)

  • Персонализация работает и показывается посетителям
  • AI-модель (если обучена) активно персонализирует трафик
  • Собираются статистика и данные для обучения/переобучения

# 2. Остановлена (Stopped)

  • Персонализация НЕ показывается посетителям
  • Статистика НЕ собирается
  • Все данные и настройки сохранены; можно возобновить в любой момент

# 3. Архивирована (Archived)

  • Персонализация полностью неактивна
  • Скрыта из основного списка
  • Все данные и статистика сохранены
  • Можно восстановить, изменив статус обратно на "Активна" или "Остановлена"

# Обучение и переобучение модели

# Автоматическое обучение

Первое обучение запускается автоматически при накоплении достаточного количества данных на стадии "Сбор данных":

  • Минимум 75 конверсий в контрольной группе
  • Прогресс отображается в процентах (0-100%)

# Автоматическое переобучение

Модель автоматически переобучается по мере накопления новых данных. Система оценивает качество текущей модели (прирост конверсии, статистическую значимость, время работы) и принимает решение о переобучении.

Важно — переобучение НЕ запускается автоматически при:

  • Изменении вариантов (включение/выключение, добавление, удаление)
  • Изменении метрики оптимизации
  • Изменении модели атрибуции

В этих случаях нужно запустить переобучение вручную.

# Ручное переобучение

Когда нужно:

  1. Изменили метрику оптимизации
  2. Изменили модель атрибуции
  3. Изменили состав вариантов (включили, выключили, добавили, удалили)
  4. Существенно изменили контент вариантов
  5. Хотите обновить модель на свежих данных быстрее, чем это сделает система автоматически

Как запустить:

  1. Откройте персонализацию
  2. Нажмите "Запустить тренировку новой модели"
  3. Выберите режим:
    • Обычное переобучение — обучается на всех накопленных данных, применяется только если новая модель лучше старой
    • Использовать новую модель в любом случае (чекбокс) — принудительно заменяет текущую модель новой, даже если она хуже
  4. Нажмите "Запустить"

Во время обучения:

  • Флаг IsModelLearningNow = true
  • Прогресс отображается в CurrentModelLearningProgressPercent
  • Персонализация продолжает работать на старой модели
  • После завершения новая модель применяется автоматически

# Остановка обучения

Если обучение запущено по ошибке:

  1. Откройте персонализацию
  2. Нажмите "Остановить текущее обучение"
  3. Подтвердите, нажав "Продолжить"

# Возврат к стадии "Сбор данных"

Когда использовать:

  • Модель показывает плохие результаты
  • Существенно изменили варианты или метрики
  • Хотите собрать больше данных перед обучением

Как вернуться:

  1. Откройте персонализацию
  2. Нажмите "Вернуться к накоплению данных"
  3. Укажите дату в поле "Накапливать данные до"
    • По умолчанию: текущая дата + 5 дней
    • До этой даты автоматическое обучение не запустится
  4. Нажмите "Продолжить"

Что произойдёт:

  • Стадия модели изменится на StashData
  • Персонализация вернётся к случайному показу вариантов (или с автобалансировкой)
  • После накопления достаточного количества данных и прохождения указанной даты обучение запустится автоматически

# Конвертация в A/B тест

Персонализацию типа "Персонализация" можно конвертировать в классический A/B тест.

Как конвертировать:

  1. Откройте персонализацию
  2. Нажмите "Сделать персонализацию A/B тестом"
  3. Подтвердите действие

Что произойдёт:

  • Тип изменится с Personalization на ABTest
  • ML-модель перестанет работать
  • Варианты будут показываться равномерно или согласно заданным весам
  • Все варианты и статистика сохраняются

Важно:

  • Обратная конвертация (A/B тест → Персонализация) через UI недоступна
  • Только персонализации типа Personalization могут быть конвертированы (не StreamPersonalization, не RuleBasedAction)

# Управление вариантами

# Включение и выключение вариантов

Каждый вариант имеет флаг IsWorking ("Активен"), который определяет, участвует ли вариант в показе.

Как выключить:

  1. Откройте вариант в редакторе
  2. Снимите галочку "Активен"
  3. Сохраните

Что произойдёт:

  • Вариант перестанет показываться посетителям (с учётом кеширования)
  • Трафик перераспределится между активными вариантами
  • Статистика сохраняется
  • Переобучение НЕ запускается автоматически — запустите вручную через "Запустить тренировку новой модели"

Минимум один вариант должен быть активен.

# Вариант по умолчанию (IsDefaultOption)

Показывается как fallback, когда AI-модель не может выбрать оптимальный вариант. Только один вариант может быть по умолчанию — при установке флага у нового варианта он снимается со всех остальных автоматически.

# Оригинальный вариант (IsOriginal)

Исходная версия страницы без изменений. Используется в контрольной группе для сравнения результатов.


# Удаление персонализации

Внимание: Удаление — необратимая операция.

Что удаляется:

  • Персонализация и все её настройки
  • Все варианты и их модификации
  • Условия показа
  • Связи с целями

Что НЕ удаляется:

  • ML-модель и история обучений
  • События в ClickHouse (аналитика)

Как удалить:

  1. Откройте персонализацию
  2. Нажмите "Удалить персонализацию"
  3. Прочитайте предупреждение
  4. Установите галочку "Я понимаю последствия"
  5. Нажмите "Удалить"

Если не уверены — используйте архивацию вместо удаления.


# Частые вопросы

Почему изменения не применяются мгновенно?

Из-за двухуровневого кеширования:

  1. Серверный кеш — обновляется в течение нескольких минут
  2. Клиентский кеш — может сохраняться до окончания сессии или TTL

При тестировании используйте режим инкогнито или очистку localStorage.

Можно ли менять статус во время обучения модели?

Да. Смена статуса не останавливает обучение. Для остановки обучения используйте отдельную кнопку "Остановить текущее обучение".

Влияет ли конвертация в A/B тест на статистику?

Нет, вся накопленная статистика сохраняется. Изменяется только логика распределения трафика.

Можно ли переобучить модель на другой метрике?

Да:

  1. Измените метрику оптимизации в настройках
  2. Запустите ручное переобучение через "Запустить тренировку новой модели"
  3. Модель переобучится на новую метрику, используя все накопленные данные

# Следующие шаги