Перейти до вмісту

Промо-акції

ПолеЗначення
Статус🚧 в розробці (код у main, рендер за feature-флагом NEXT_PUBLIC_DISABLE_PROMOTIONS; стан флага в prod SSM не підтверджено)
Поверхніweb
Доступністьбезкоштовно
ВласникTODO:
Останнє підтвердження2026-06-14 · код:main + Strapi live (calculator-adv-cases)

Показує абітурієнту рекламний промо-кейс (банер-зображення з кнопкою-переходом) на сторінці результату веб-калькулятора — після того, як він порахував конкурсний бал. Контент промо редагується нетехнічною командою у Strapi (content-type calculator-adv-cases), без релізу фронтенду. У проді живий один кейс — промо спеціальності «Фізика та астрономія» (звідси внутрішня назва компонента PromotePhysics), редірект веде на блог-статтю.

Точка входу: https://abitly.org/uk/calculator (live, HTTP 200; /calculator → 307 на /uk/calculator).

  1. Користувач відкриває калькулятор і вводить оцінки/предмети.
  2. Після розрахунку рендериться блок результату (BetterThanCards).
  3. Якщо feature-флаг NEXT_PUBLIC_DISABLE_PROMOTIONS не заданий (=== undefined) і у Strapi є опублікований calculator-adv-cases, у блоці показується промо-картка PromotePhysics (зображення з кліком).
  4. Клік по промо → track('popup_click_details', …) (подія Track-events) і відкриття redirect-URL у новій вкладці.
  5. Показ промо логує track('promotion_popup_shown', { promotion_id }).
ДжерелоЕндпоінт / entityПризначення
StrapiGET /api/calculator-adv-cases?populate=* (content-type calculator-adv-cases)промо-кейс: image, type, redirect; live — 1 опублікований запис (type: "popup")

Запит читається анонімно через публічний REST (https://cms.abitly.org). Аналітика показу/кліку — через службову фічу Track-events (promotion_popup_shown, popup_click_details).

Зв’язки з іншими фічами

Section titled “Зв’язки з іншими фічами”
  • score-calculator — поверхня, де рендериться промо (блок результату).
  • articles — типова ціль redirect живого промо-кейсу (блог-стаття).
  • checkoutredirect промо може вести на платну поверхню (зараз веде на блог; цільова сторінка задається у Strapi, не в коді).
РепоШляхПримітка
abitly-frontend-v2src/components/pages/calculator/components/CalculatedGrade/components/BetterThanCards/BetterThanCards.tsxгейт process.env.NEXT_PUBLIC_DISABLE_PROMOTIONS === undefined && <PromotePhysics />
abitly-frontend-v2src/components/pages/calculator/components/PromotePhysics/PromotePhysics.tsxрендер промо-картки: Strapi-запит, показ зображення, redirect, track-події
abitly-frontend-v2src/components/pages/shared/components/promotion-popup/PromotionPopup.tsxDialog-варіант промо-поп-апа + utils/promotionShown.ts (dedupe через localStorage.shownPromotions); споживач JSX у main не підтверджено — TODO:
abitly-frontend-v2src/api/strapi/strapi.api.ts, strapi.queries.tsgetCalculatorAdvCases / strapiQueries.getCalculatorAdvCases
  • Feature-флаг NEXT_PUBLIC_DISABLE_PROMOTIONS: промо рендериться лише коли env-змінна не задана (=== undefined); будь-яке значення (навіть "false") вимикає промо. Стан змінної у prod SSM (/abitly/prod/frontend/) не підтвердженоTODO: перевірити фактичне значення.
  • Не верифіковано live curl-ом: промо з’являється тільки в інтерактивному стані (після вводу оцінок і розрахунку), тому статичний запит сторінки його не показує. Підтвердження потребує /browse або відомого значення флага. Тому статус 🚧, а не 🟢.
  • Залежність від контенту: без опублікованого calculator-adv-cases у Strapi промо не показується (if (!advCase) return null). Зараз 1 запис опубліковано — підтверджено через публічний REST 2026-06-14.
  • Dedupe-варіант: PromotionPopup (Dialog) має логіку «показано один раз» через localStorage.shownPromotions, але активний шлях у mainPromotePhysics (без dedupe). Чи рендериться сам PromotionPopup у проді — TODO:.
ДатаПодіяДжерело
2025-06-14Створено Strapi-кейс calculator-adv-cases id 9 (промо «Фізика та астрономія»)Strapi createdAt
2025-07-15Кейс опубліковано (поточна live-версія)Strapi publishedAt
2026-06-14Картка створена: гейт-флаг і Strapi-механізм задокументованокод:main + Strapi live