248 lines
8.4 KiB
Markdown
248 lines
8.4 KiB
Markdown
# 🚀 Unleash AB Testing - Quick Start
|
||
|
||
## ✅ Что реализовано
|
||
|
||
### 1. Типы и интерфейсы
|
||
- ✅ Расширен `NavigationConditionDefinition` с полями `unleashFlag` и `unleashVariants`
|
||
- ✅ Добавлен тип условия `"unleash"` наравне с `"options"` и `"values"`
|
||
- ✅ Полная типизация для TypeScript
|
||
|
||
### 2. Unleash SDK интеграция
|
||
- ✅ Установлен `@unleash/proxy-client-react`
|
||
- ✅ Создан `UnleashProvider` с настройками для воронок
|
||
- ✅ `UnleashContextProvider` для передачи активных вариантов
|
||
- ✅ `FunnelUnleashWrapper` автоматически собирает все флаги из воронки
|
||
|
||
### 3. Логика проверки условий
|
||
- ✅ `navigation.ts` поддерживает Unleash условия
|
||
- ✅ `variants.ts` поддерживает Unleash условия
|
||
- ✅ Функция `unleashChecker` передается через всю цепочку
|
||
- ✅ Работает для навигации И для вариантов экранов
|
||
|
||
### 4. UI в админке конструктора
|
||
- ✅ `ConditionTypeSelector` - выбор типа условия
|
||
- ✅ `UnleashConditionEditor` - полноценный редактор AB тестов
|
||
- ✅ Интегрировано в `VariantConditionEditor`
|
||
- ✅ Поддержка всех операторов (includesAny, equals, etc.)
|
||
|
||
### 5. Документация
|
||
- ✅ Полное руководство `AB_TESTING_GUIDE.md`
|
||
- ✅ Примеры использования
|
||
- ✅ API Reference
|
||
- ✅ Best practices
|
||
|
||
## 🏁 Быстрый старт
|
||
|
||
### Шаг 1: Настройте Unleash
|
||
|
||
Создайте `.env.local`:
|
||
|
||
```bash
|
||
NEXT_PUBLIC_UNLEASH_URL=https://your-unleash.com/api/frontend
|
||
NEXT_PUBLIC_UNLEASH_CLIENT_KEY=your-client-key
|
||
```
|
||
|
||
### Шаг 2: Создайте флаг в Unleash Dashboard
|
||
|
||
1. Перейдите в Unleash Dashboard
|
||
2. Создайте новый feature flag: `button-text-test`
|
||
3. Добавьте варианты:
|
||
- v0 (контроль) - 50%
|
||
- v1 - 25%
|
||
- v2 - 25%
|
||
4. Включите gradual rollout strategy
|
||
5. Установите stickiness = `sessionId`
|
||
|
||
### Шаг 3: Добавьте AB тест в воронку
|
||
|
||
В админке конструктора:
|
||
|
||
1. Откройте экран для редактирования
|
||
2. Перейдите в секцию "Вариативность"
|
||
3. Добавьте вариант
|
||
4. Выберите тип условия: **AB тест (Unleash)**
|
||
5. Укажите:
|
||
- Название флага: `button-text-test`
|
||
- Ожидаемые варианты: `v1`
|
||
- Оператор: `Равен (один вариант)`
|
||
6. Настройте overrides (например, текст кнопки)
|
||
7. Сохраните воронку
|
||
|
||
### Шаг 4: Тестируйте
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
Откройте воронку в разных вкладках - вы увидите разные варианты!
|
||
|
||
## 📁 Структура файлов
|
||
|
||
```
|
||
Новые файлы:
|
||
├── src/lib/funnel/unleash/
|
||
│ ├── UnleashProvider.tsx # Provider для Unleash SDK
|
||
│ ├── UnleashContext.tsx # Context с активными вариантами
|
||
│ ├── useUnleash.ts # Хук для работы с флагами
|
||
│ └── index.ts
|
||
├── src/components/funnel/
|
||
│ └── FunnelUnleashWrapper.tsx # Сборщик всех флагов
|
||
├── src/components/admin/builder/forms/
|
||
│ ├── UnleashConditionEditor.tsx # UI редактор AB тестов
|
||
│ └── ConditionTypeSelector.tsx # Селектор типа условия
|
||
├── AB_TESTING_GUIDE.md # Полное руководство
|
||
├── UNLEASH_SETUP.md # Этот файл
|
||
└── public/funnels/
|
||
└── ab-test-example.json # Пример воронки с AB тестами
|
||
|
||
Модифицированные файлы:
|
||
├── src/lib/funnel/
|
||
│ ├── types.ts # ✏️ Добавлены поля для Unleash
|
||
│ ├── navigation.ts # ✏️ Поддержка Unleash условий
|
||
│ └── variants.ts # ✏️ Поддержка Unleash условий
|
||
├── src/components/funnel/
|
||
│ └── FunnelRuntime.tsx # ✏️ Интеграция unleashChecker
|
||
├── src/components/admin/builder/forms/variants/
|
||
│ └── VariantConditionEditor.tsx # ✏️ Добавлен UI для Unleash
|
||
├── src/app/[funnelId]/[screenId]/
|
||
│ └── page.tsx # ✏️ Обернут в Unleash Provider
|
||
└── package.json # ✏️ Добавлен @unleash/proxy-client-react
|
||
```
|
||
|
||
## 🎯 Примеры использования
|
||
|
||
### Пример 1: AB тест текста кнопки
|
||
|
||
```json
|
||
{
|
||
"id": "payment",
|
||
"template": "trialPayment",
|
||
"bottomActionButton": {
|
||
"text": "Continue"
|
||
},
|
||
"variants": [
|
||
{
|
||
"conditions": [
|
||
{
|
||
"screenId": "payment",
|
||
"conditionType": "unleash",
|
||
"unleashFlag": "button-text-test",
|
||
"unleashVariants": ["v1"],
|
||
"operator": "equals"
|
||
}
|
||
],
|
||
"overrides": {
|
||
"bottomActionButton": {
|
||
"text": "Start Trial"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### Пример 2: AB тест навигации
|
||
|
||
```json
|
||
{
|
||
"id": "gender",
|
||
"template": "list",
|
||
"navigation": {
|
||
"defaultNextScreenId": "birthdate",
|
||
"rules": [
|
||
{
|
||
"conditions": [
|
||
{
|
||
"screenId": "gender",
|
||
"conditionType": "unleash",
|
||
"unleashFlag": "onboarding-flow-test",
|
||
"unleashVariants": ["short"],
|
||
"operator": "equals"
|
||
}
|
||
],
|
||
"nextScreenId": "payment"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
## 🧪 Тестовая воронка
|
||
|
||
Готовая тестовая воронка: `/public/funnels/ab-test-example.json`
|
||
|
||
Запустите:
|
||
```bash
|
||
npm run dev
|
||
# Откройте: http://localhost:3000/ab-test-example/welcome
|
||
```
|
||
|
||
## ✨ Возможности
|
||
|
||
### Что можно тестировать:
|
||
|
||
- ✅ **Тексты** (заголовки, подзаголовки, кнопки)
|
||
- ✅ **Навигацию** (разные пути через воронку)
|
||
- ✅ **Контент** (иконки, описания, блоки)
|
||
- ✅ **Комбинации** (AB тест + пол + возраст)
|
||
- ✅ **Любые поля** экрана через variants
|
||
|
||
### Операторы:
|
||
|
||
- `includesAny` - хотя бы один вариант
|
||
- `includesAll` - все варианты
|
||
- `includesExactly` - точно эти варианты
|
||
- `equals` - равен (один вариант)
|
||
|
||
### Типы условий:
|
||
|
||
- `options` - выбор из списка
|
||
- `values` - конкретные значения (зодиак, возраст)
|
||
- `unleash` - AB тесты через Unleash
|
||
|
||
## 🔧 Требования
|
||
|
||
- Node.js 18+
|
||
- Next.js 15
|
||
- Unleash instance (или Unleash Cloud)
|
||
- React 19
|
||
|
||
## 📚 Дополнительная документация
|
||
|
||
- **AB_TESTING_GUIDE.md** - Полное руководство с примерами
|
||
- **Unleash Docs** - https://docs.getunleash.io/
|
||
- **Примеры воронок** - `/public/funnels/`
|
||
|
||
## 🐛 Troubleshooting
|
||
|
||
### Флаги не работают?
|
||
|
||
1. Проверьте `.env.local` - переменные должны быть установлены
|
||
2. Проверьте Unleash Dashboard - флаг должен быть включен
|
||
3. Проверьте rollout - должен быть > 0%
|
||
4. Проверьте консоль браузера - должны быть логи Unleash
|
||
|
||
### Ошибка импорта?
|
||
|
||
```bash
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
### Всегда показывается контроль?
|
||
|
||
- Увеличьте rollout в Unleash
|
||
- Проверьте stickiness = sessionId
|
||
- Откройте в новой вкладке (новая сессия)
|
||
|
||
## 🎉 Готово!
|
||
|
||
AB тестирование полностью интегрировано и готово к использованию!
|
||
|
||
**Следующие шаги:**
|
||
1. Настройте Unleash
|
||
2. Создайте первый флаг
|
||
3. Добавьте AB тест в воронку
|
||
4. Анализируйте результаты
|
||
5. Выбирайте победителя!
|