404 lines
12 KiB
Markdown
404 lines
12 KiB
Markdown
# 🧭 Правила навигации - Полное руководство
|
||
|
||
## 🎯 Возможности
|
||
|
||
Правила навигации поддерживают **все типы условий** как и вариативность экранов:
|
||
|
||
### 1. ✅ AB тесты (Unleash)
|
||
Направляйте пользователей на разные экраны в зависимости от AB теста
|
||
|
||
### 2. ✅ Опции (list экраны)
|
||
На основе выбранных опций в list экранах
|
||
|
||
### 3. ✅ Значения (возраст, зодиак, email)
|
||
На основе конкретных значений из специальных экранов
|
||
|
||
---
|
||
|
||
## 📚 Примеры
|
||
|
||
### Пример 1: AB тест - короткий vs длинный onboarding
|
||
|
||
```json
|
||
{
|
||
"id": "gender",
|
||
"template": "list",
|
||
"navigation": {
|
||
"defaultNextScreenId": "birthdate",
|
||
"rules": [
|
||
{
|
||
"conditions": [
|
||
{
|
||
"screenId": "gender",
|
||
"conditionType": "unleash",
|
||
"unleashFlag": "onboarding-flow-test",
|
||
"unleashVariants": ["short"],
|
||
"operator": "equals"
|
||
}
|
||
],
|
||
"nextScreenId": "payment"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
**Результат:**
|
||
- Вариант `short` → сразу на payment (пропустить birthdate)
|
||
- Другие варианты → на birthdate (стандартный путь)
|
||
|
||
---
|
||
|
||
### Пример 2: AB тест + пол пользователя
|
||
|
||
```json
|
||
{
|
||
"id": "welcome",
|
||
"template": "info",
|
||
"navigation": {
|
||
"defaultNextScreenId": "standard-flow",
|
||
"rules": [
|
||
{
|
||
"conditions": [
|
||
{
|
||
"screenId": "gender",
|
||
"conditionType": "options",
|
||
"optionIds": ["female"],
|
||
"operator": "includesAny"
|
||
},
|
||
{
|
||
"screenId": "welcome",
|
||
"conditionType": "unleash",
|
||
"unleashFlag": "female-special-offer",
|
||
"unleashVariants": ["v1"],
|
||
"operator": "equals"
|
||
}
|
||
],
|
||
"nextScreenId": "special-offer-women"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
**Результат:**
|
||
- Если **женщина** И **AB тест = v1** → special-offer-women
|
||
- Иначе → standard-flow
|
||
|
||
---
|
||
|
||
### Пример 3: Зависимость от возраста
|
||
|
||
```json
|
||
{
|
||
"id": "age-result",
|
||
"template": "info",
|
||
"navigation": {
|
||
"defaultNextScreenId": "standard-path",
|
||
"rules": [
|
||
{
|
||
"conditions": [
|
||
{
|
||
"screenId": "age",
|
||
"conditionType": "options",
|
||
"optionIds": ["18-24", "25-34"],
|
||
"operator": "includesAny"
|
||
}
|
||
],
|
||
"nextScreenId": "young-audience-path"
|
||
},
|
||
{
|
||
"conditions": [
|
||
{
|
||
"screenId": "age",
|
||
"conditionType": "options",
|
||
"optionIds": ["45-54", "55+"],
|
||
"operator": "includesAny"
|
||
}
|
||
],
|
||
"nextScreenId": "mature-audience-path"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
**Результат:**
|
||
- 18-34 лет → young-audience-path
|
||
- 45+ лет → mature-audience-path
|
||
- Остальные → standard-path
|
||
|
||
---
|
||
|
||
### Пример 4: Зависимость от знака зодиака
|
||
|
||
```json
|
||
{
|
||
"id": "zodiac-result",
|
||
"template": "info",
|
||
"navigation": {
|
||
"defaultNextScreenId": "default-path",
|
||
"rules": [
|
||
{
|
||
"conditions": [
|
||
{
|
||
"screenId": "profile.zodiac",
|
||
"conditionType": "options",
|
||
"optionIds": ["aries", "leo", "sagittarius"],
|
||
"operator": "includesAny"
|
||
}
|
||
],
|
||
"nextScreenId": "fire-signs-path"
|
||
},
|
||
{
|
||
"conditions": [
|
||
{
|
||
"screenId": "profile.zodiac",
|
||
"conditionType": "options",
|
||
"optionIds": ["cancer", "scorpio", "pisces"],
|
||
"operator": "includesAny"
|
||
}
|
||
],
|
||
"nextScreenId": "water-signs-path"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
**Результат:**
|
||
- Огненные знаки → fire-signs-path
|
||
- Водные знаки → water-signs-path
|
||
- Остальные → default-path
|
||
|
||
---
|
||
|
||
### Пример 5: Множественные AB тесты
|
||
|
||
```json
|
||
{
|
||
"id": "onboarding",
|
||
"template": "info",
|
||
"navigation": {
|
||
"defaultNextScreenId": "standard",
|
||
"rules": [
|
||
{
|
||
"conditions": [
|
||
{
|
||
"screenId": "onboarding",
|
||
"conditionType": "unleash",
|
||
"unleashFlag": "flow-type",
|
||
"unleashVariants": ["premium"],
|
||
"operator": "equals"
|
||
},
|
||
{
|
||
"screenId": "onboarding",
|
||
"conditionType": "unleash",
|
||
"unleashFlag": "upsell-test",
|
||
"unleashVariants": ["aggressive"],
|
||
"operator": "equals"
|
||
}
|
||
],
|
||
"nextScreenId": "premium-aggressive-upsell"
|
||
},
|
||
{
|
||
"conditions": [
|
||
{
|
||
"screenId": "onboarding",
|
||
"conditionType": "unleash",
|
||
"unleashFlag": "flow-type",
|
||
"unleashVariants": ["premium"],
|
||
"operator": "equals"
|
||
}
|
||
],
|
||
"nextScreenId": "premium-standard-upsell"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
**Результат:**
|
||
- flow-type=premium + upsell-test=aggressive → premium-aggressive-upsell
|
||
- flow-type=premium + другой upsell → premium-standard-upsell
|
||
- Остальные → standard
|
||
|
||
---
|
||
|
||
## 🛠️ Как настроить в админке
|
||
|
||
### 1. Откройте экран для редактирования
|
||
В конструкторе воронок выберите нужный экран
|
||
|
||
### 2. Найдите секцию "Правила переходов"
|
||
Она находится в боковой панели после секции "Навигация"
|
||
|
||
### 3. Добавьте правило
|
||
Нажмите кнопку **"+"** чтобы добавить новое правило
|
||
|
||
### 4. Настройте условия
|
||
|
||
#### Для AB теста:
|
||
1. **Тип условия:** выберите "AB тест (Unleash)"
|
||
2. **Название флага:** введите название флага из Unleash (например `trial-offer-test`)
|
||
3. **Оператор:**
|
||
- "Равен (один вариант)" - точное совпадение
|
||
- "Любой из вариантов (OR)" - хотя бы один совпадает
|
||
4. **Ожидаемые варианты:** введите через запятую (например `v1, v2`)
|
||
|
||
#### Для опций list экрана:
|
||
1. **Тип условия:** "Выбранные опции (list экраны)"
|
||
2. **Экран:** выберите list экран
|
||
3. **Оператор:** "Любое из (OR)" или "Все из (AND)"
|
||
4. **Значения:** отметьте нужные опции
|
||
|
||
#### Для значений (возраст, зодиак):
|
||
1. **Тип условия:** "Значения (зодиак, возраст, email)"
|
||
2. **Экран:** выберите экран с данными
|
||
3. **Оператор:** обычно "Любое из (OR)"
|
||
4. **Значения:** выберите из списка
|
||
|
||
### 5. Добавьте несколько условий (опционально)
|
||
Нажмите **"+ Добавить условие"** чтобы добавить ещё условия
|
||
Все условия работают как **AND** (все должны выполниться)
|
||
|
||
### 6. Выберите целевой экран
|
||
В поле "Переход на экран" выберите куда направить пользователя
|
||
|
||
### 7. Сохраните
|
||
Правило автоматически сохраняется при изменениях
|
||
|
||
---
|
||
|
||
## 💡 Типы операторов
|
||
|
||
### includesAny (Любой из - OR)
|
||
Условие выполняется если **хотя бы одно** значение совпадает
|
||
```
|
||
Выбрано: ["female"]
|
||
Условие: ["female", "non-binary"]
|
||
Результат: ✅ TRUE (female есть в списке)
|
||
```
|
||
|
||
### includesAll (Все из - AND)
|
||
Условие выполняется если **все** значения совпадают
|
||
```
|
||
Выбрано: ["premium", "early-access"]
|
||
Условие: ["premium", "early-access"]
|
||
Результат: ✅ TRUE (оба есть)
|
||
|
||
Выбрано: ["premium"]
|
||
Условие: ["premium", "early-access"]
|
||
Результат: ❌ FALSE (early-access отсутствует)
|
||
```
|
||
|
||
### equals (Равен)
|
||
Точное совпадение одного значения
|
||
```
|
||
AB тест вариант: "v1"
|
||
Условие: ["v1"]
|
||
Результат: ✅ TRUE
|
||
|
||
AB тест вариант: "v2"
|
||
Условие: ["v1"]
|
||
Результат: ❌ FALSE
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 Порядок проверки правил
|
||
|
||
Правила проверяются **сверху вниз**:
|
||
1. Первое правило с выполненными условиями → используется
|
||
2. Если ни одно правило не подошло → используется `defaultNextScreenId`
|
||
3. Если нет defaultNextScreenId → следующий экран по порядку
|
||
|
||
**Пример:**
|
||
```json
|
||
{
|
||
"navigation": {
|
||
"defaultNextScreenId": "standard",
|
||
"rules": [
|
||
{ "conditions": [...], "nextScreenId": "path-1" }, // Проверяется первым
|
||
{ "conditions": [...], "nextScreenId": "path-2" }, // Проверяется вторым
|
||
{ "conditions": [...], "nextScreenId": "path-3" } // Проверяется третьим
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ Best Practices
|
||
|
||
### 1. Используйте осмысленные названия
|
||
```
|
||
❌ Плохо: nextScreenId: "screen-5"
|
||
✅ Хорошо: nextScreenId: "premium-trial-offer"
|
||
```
|
||
|
||
### 2. Группируйте связанные условия
|
||
```json
|
||
{
|
||
"conditions": [
|
||
{ "screenId": "gender", "optionIds": ["female"] },
|
||
{ "unleashFlag": "female-offer-test", "unleashVariants": ["v1"] }
|
||
]
|
||
}
|
||
```
|
||
|
||
### 3. Всегда указывайте defaultNextScreenId
|
||
Это fallback если ни одно правило не подошло
|
||
|
||
### 4. Тестируйте все варианты
|
||
- Создайте правило для каждого варианта AB теста
|
||
- Проверьте что defaultNextScreenId работает
|
||
- Протестируйте комбинации условий
|
||
|
||
### 5. Документируйте сложные правила
|
||
Добавляйте комментарии в JSON или ведите документацию
|
||
|
||
---
|
||
|
||
## 🐛 Troubleshooting
|
||
|
||
### Правило не срабатывает
|
||
|
||
**Проверьте:**
|
||
1. ✅ Все условия в правиле выполняются (AND логика)
|
||
2. ✅ Название флага в Unleash совпадает с указанным
|
||
3. ✅ Вариант AB теста написан правильно (регистр важен!)
|
||
4. ✅ Правило находится выше других конфликтующих правил
|
||
5. ✅ Экран указанный в условии существует
|
||
|
||
### AB тест не работает
|
||
|
||
**Проверьте:**
|
||
1. ✅ Unleash флаг создан и включен
|
||
2. ✅ Rollout > 0%
|
||
3. ✅ Environment variables настроены
|
||
4. ✅ В консоли браузера есть логи `[Unleash Analytics]`
|
||
|
||
### Всегда переходит на default
|
||
|
||
**Причины:**
|
||
- Ни одно условие не выполняется
|
||
- Ошибка в названии флага/варианта
|
||
- AB тест не загрузился
|
||
|
||
---
|
||
|
||
## 📚 Связанные документы
|
||
|
||
- **AB_TESTING_GUIDE.md** - Полное руководство по AB тестам
|
||
- **UNLEASH_SETUP.md** - Настройка Unleash
|
||
- **AB_TESTING_UPDATES.md** - Аналитика и оптимизация
|
||
|
||
---
|
||
|
||
## 🎉 Заключение
|
||
|
||
Правила навигации - это мощный инструмент для персонализации пути пользователя через воронку. Используйте AB тесты, условия по полу/возрасту/зодиаку и их комбинации для максимальной конверсии!
|
||
|
||
**Возможности полностью идентичны вариативности экранов** - используется один и тот же редактор условий.
|