# 🚀 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. Выбирайте победителя!