← Главная

DS-848 — A/B тест: скидка на ИИ-пакет (Virale)

DS-848 · DS-851 (BACK) · DS-852 (FRONT) · Marat + Artur

Полный URL (фронт + бэк): https://deploy-preview-931--chatplace-front.netlify.app/?preview-api-core=https://api-2069.review.chatplace.io/
Альтернативный способ подключения бэка (localStorage): localStorage.setItem('api_url', 'https://api-2069.review.chatplace.io/')
Backend Admin (Stripe Test Clocks): Через Teleport → поиск «admin» → админка review-ветки
Логин: test@chatplace.io · Пароль: 123

📋 Суть эксперимента

🔧 Инструкция Марата (Stripe Test Clocks)

⚠️ Замечание Константина (CloudPayments)

📊 API ответ experimentDiscounts

GET /api/user → experimentDiscounts:
[
  { "currency":"USD", "aiPackage":{"price":5,"oldPrice":25},
    "proWithAi":{"price":25,"oldPrice":45}, "monthsTotal":2, "monthsUsed":0 },
  { "currency":"RUB", "aiPackage":{"price":500,"oldPrice":2500},
    "proWithAi":{"price":2500,"oldPrice":4500}, "monthsTotal":2, "monthsUsed":0 }
]
// control / не в эксперименте → experimentDiscounts: null

1. Регистрация и попадание в эксперимент BACK

1.1
Зарегистрировать нового юзера → GET /api/user → поле experimentDiscounts. Если null — регистрируем следующего юзера.
✅ Содержит массив из 2 объектов (USD и RUB) с price, oldPrice, monthsTotal=2, monthsUsed=0
1.2
Проверить данные в experimentDiscounts: USD → aiPackage.price=5, oldPrice=25; RUB → price=500, oldPrice=2500
✅ Суммы корректны, proWithAi: USD=25/45, RUB=2500/4500
1.3
Контрольная группа (experimentDiscounts = null). Зарегистрировано 9 юзеров (848b–848j) — все 9 попали в группу discount (experimentDiscounts ≠ null). Ни один не попал в control.
⏭ На review-ветке флаг вероятно включён на 100%. Проверка control-группы невозможна в данном окружении
1.4
Повторная регистрация с тем же email — не создаёт дубль участия
✅ Тот же experimentDiscounts, без дублей в БД

2. UI — отображение скидки на странице тарифов FRONT

2.1
Юзер «discount» + RUB → баннер скидки на странице «Соберите Тариф Pro»
✅ Зелёный баннер «Всё за 2 500 ₽. Да, правда.», подпись «Скидка на 2 месяца», маскот Virale
2.2
Юзер «discount» + USD → баннер скидки
✅ Аналогичный баннер с $25 вместо $45
2.3
Цена ИИ-пакета (RUB): 500 ₽/мес, зачёркнуто 2 500 ₽
✅ Скидочная и старая цена отображаются корректно
2.4
Цена ИИ-пакета (USD): $5/мес, зачёркнуто $25
✅ Корректные USD-цены
2.5
Переключение валюты USD ↔ RUB — цены корректно меняются
✅ Не показываются долларовые цены в рублях и наоборот
2.6
TRY (или другая валюта) → скидки нет
✅ Стандартные цены, баннера скидки нет
2.7
Базовый тариф Pro (без ИИ-пакета) — цена без изменений
✅ 2000₽ / $20 — скидка не затрагивает базовый Pro
2.8
Количество AI-действий = 2000 — без изменений для обеих групп
✅ 2000 AI-действий и в discount, и в control
2.9
CTA-кнопка «Попробовать 7 дней бесплатно» — без изменений
✅ Текст и поведение кнопки не изменились
2.10
Юзер «control» (experimentDiscounts=null) → страница тарифов
✅ Стандартные цены, баннера скидки нет. Используем юзера, который при регистрации получил null
2.11
На экране сравнения тарифов (Pro vs Premium) — информации о скидке нет
✅ Скидка только на странице «Соберите Тариф Pro» (подтверждено Катей)

3. Оплата Stripe (USD) — купон и списания STRIPE BACK

3.1
Юзер «discount» → оплата Pro + AI через Stripe, карта 5555 5555 5555 4444
✅ Подписка создана с trial + coupon (75% на AI-пакет)
3.2
После оплаты GET /api/user → monthsUsed=0 (триал, ещё не было списания)
✅ monthsUsed=0, monthsTotal=2
3.3
Backend Admin → Test Clocks: найти юзера, создать тестовые часы, прокрутить время на 1 месяц → 1-е списание
✅ Списано $25 (Pro $20 + AI $5 со скидкой). monthsUsed=1
3.4
Прокрутить ещё на 1 месяц → 2-е списание
✅ Списано $25 (со скидкой). monthsUsed=2
3.5
Прокрутить ещё на 1 месяц → 3-е списание (скидка закончилась!)
✅ Списано $45 (полная цена: Pro $20 + AI $25). Stripe Coupon expired

4. Оплата CloudPayments (RUB) — кастомная логика CP BACK

4.1
Юзер «discount» → оплата Pro + AI через CloudPayments (RUB)
✅ Подписка создана, триал 7 дней бесплатно
4.2
Ручное «Оплатить Pro» после просроченного триала → 1-е списание
✅ Списано 2 500 ₽ (Pro 2000 + AI 500 со скидкой)
4.3
2-е списание (по крону или вручную)
✅ Списано 2 500 ₽ (со скидкой). monthsUsed=2
4.4
3-е списание → полная цена
✅ Списано 4 500 ₽ (Pro 2000 + AI 2500). Скидка закончилась
4.5
KNOWN ISSUE Автоматическое списание по крону (next_payment_at в прошлое) — работает ли?
⚠️ Константин: крон не списывает при переносе даты. Ручное — работает. Проверить поведение

5. Edge cases

5.1
Годовой тариф → скидка НЕ применяется
✅ Купон только для месячных планов
5.2
Pro без AI-пакета → скидка НЕ применяется
✅ Скидка только при подключении AI-пакета
5.3
Premium тариф → скидка НЕ применяется
✅ Скидка только для Pro + ИИ-пакет
5.4
Баннер после активации триала — информирует о скидке на 2 месяца
✅ Юзер видит информацию что скидка действует 2 месяца

6. Сравнение с макетом Figma FRONT

6.1
Баннер скидки (RUB/USD) — соответствие макету Figma
✅ Зелёный фон, текст, маскот Virale, цены — по макету
6.2
Зачёркнутые цены, шрифты, отступы — соответствие дизайну (десктоп)
✅ Соответствие Figma-макету