Загрузка библиотеки графиков (recharts)…

MLF-292 Дашборд клиентской базы + карточка контакта 360°

Выше — макет в реальном шелле консоли: Дашборд базы (рост / нетто-движение / источники / распределение по engagement-статусам / список сегментов) и Карточка контакта 360° (профиль + склеенные идентификаторы + табы + вечный activity-log). Графики отрисованы реальным recharts v3 на brand chart-токенах — тем же стеком и в том же визуальном языке, что дашборд рассылок MLF-289. Ниже — что взято из ресёрча, маппинг статусов и развилки на согласование. Данные — синтетические.

Попробуйте вживую наверху в макете два экрана — переключаются сегментом в тулбаре

① Дашборд базы (экран по умолчанию): сегмент сверху → «Дашборд базы». Рост базы, нетто-движение (пришло/ушло), источники, состояние базы (две оси: recency + suppression) и список сегментов. Наведите на любой график — у точки покажется значение.

② Карточка 360° (второй экран): сегмент сверху → «Карточка 360°». Слева профиль и склеенные идентификаторы, по центру — табы Overview / Engagement / Event History (кликаются), справа — вечная лента действий. Ниже — заметки по дизайну, маппинг статусов и развилки на согласование. Данные синтетические.

Что взято из ресёрча (устойчивый vendor-канон)

Ни одной выдуманной механики: каждый блок — прямой референс с проверенного факта ресёрча (верификация 3-0). Разбивка «канал/фильтры» ложится на наш recharts-стек без нового.

Блок макета Референс Что и почему
Line роста базы + парный bar нетто-движенияKlaviyo Growth reportСлева рост базы во времени (фильтры период / агрегация / канал), справа added (зелёный) vs excluded (красный) — нетто-движение, а не одна дельта-цифра. §2.1
Разбивка по источникамKlaviyo opt-in sources«Где и как подписчики попадают в базу»: нисходящий список источников + счётчик на каждый. У нас источник известен из cdp.events. §2.2
Распределение по статусам (две оси)Klaviyo engagementRecency-статусы (активные/спящие/неактивные) — основная разбивка «живой» базы; отписки/bounce — отдельный срез (ось suppression, не хвост recency). §4, §5
Список сегментовKlaviyo + BrazeРазмер · %-изменения · added · dropped · net change + мини-sparkline роста в строке. §3
Карточка 360°: табыBraze user profileПрофиль ≠ таймлайн ≠ messaging: Overview / Engagement / Event History. §5.1
Вечный activity-log справаKlaviyo profilesЛента взаимодействий на всех вкладках, фильтр по типам событий — ровно наш append-only cdp.events. §5.2
Склеенные идентификаторыSegment UnifyIdentity graph как основа «золотого профиля»: все Identifiers персоны + ранг + история merge — у нас уже есть (resolvePerson()). §5.4
Участие в сегментах (read-only)Klaviyo Lists & segmentsСегменты динамические → членство показываем read-only, без ручного удаления. §5.3
Скоуп ресёрча: ровно то, что charts-ресёрч (MLF-289) оставил за скобками — CDP-метрики базы, сегменты, карточка 360°, engagement-статусы. Общий charts-стек (recharts v3, KPI-плитки, воронка доставок) здесь не дублируется. Покрытие фактов смещено к Klaviyo / Braze / Segment (по ним доки открыты); Mindbox проверенных фактов не дал — при необходимости RU-референса это отдельный под-ресёрч.

Две ортогональные оси — ключевой принцип

У Klaviyo это не одна шкала. Ось A — recency-engagement (насколько давно реагировал: активный / спящий / неактивный). Ось B — emailability / suppression (можно ли слать вообще: отписка / bounce / жалоба). Их не смешивать: контакт может быть «спящим», но всё ещё emailable; «bounced» — это ось suppression, а не хвост recency-шкалы.

Ось A · recency (реакция во времени)
  • Активные — реагировал (open/click) в окне активности
  • Спящие — 0 реакций за окно, но не глубокий отток
  • Неактивные — глубокий отток (≥ 6 мес / 0 lifetime)

Основная разбивка «живой» базы. Окно по умолчанию — 90 дней (30 для частых рассылок), порог неактивных ≈ 6 мес — параметры, не хардкод.

Ось B · suppression (можно ли слать)
  • Отписавшиеся — явный opt-out (красный индикатор)
  • Bounced — hard bounce ИЛИ > 7 подряд soft bounce за 2 года

Отдельный срез оттока — не смешивать с recency-шкалой. Спам-жалоба и ручная suppression — сюда же.

Предложение маппинга на статусы Mailfit

Из карточки задачи: активные / спящие / неактивные / отписавшиеся / bounced. Правила — из vendor-канона Klaviyo (§4.4). Конкретные окна — на согласование (см. «Развилки»).

Наш статус Ось Правило (vendor-канон)
АктивныеrecencyРеагировал (open/click) в пределах окна активности (по умолчанию 90 дней; 30 дней для частых рассылок).
Спящиеrecency0 open/click за окно активности, но < порога глубокого оттока (≈ 3–6 мес).
НеактивныеrecencyГлубокий отток: нет реакции ≥ 6 мес / профиль старый + 0 lifetime-engagement.
ОтписавшиесяsuppressionЯвный opt-out (красный индикатор emailability).
BouncedsuppressionHard bounce ИЛИ > 7 подряд soft bounce за последние 2 года.
У нас есть всё для расчёта: события open/click в cdp.events, delivery-события и bounce в Deliveries/deliveryEvents, consent/opt-out в consent.ts. Пороги Klaviyo (90д / 20% / 180д) — рекомендации вендора, не жёсткие константы; берём как ориентир, окна выносим в параметры.

Развилки на согласование с М. Терентьевым

Снять до финализации макетов — без апрува в разработку не берём. Слева — путь vendor-канона (рекомендация ресёрча), справа — альтернатива.

Что значит каждый блок — простыми словами

Зачем блок нужен и что показывает, без терминов.