Анонимы и identity stitching: нужно ли и сколько #16

Closed
opened 2026-07-26 21:39:18 +03:00 by ddmitry · 1 comment
Owner

Part of #10

⚠ Тело восстановлено по памяти при переносе с GitHub (аккаунт
заблокирован 2026-07-26); оригинал не сохранился. Блокировки — точные,
из снимка нативных dependencies.

Question

Нужны ли стенду анонимный трафик и склейка идентичностей (identity
stitching) — и в каком объёме. Сейчас у каждого визита есть email
пользователя; в бою большинство трафика анонимно, и склейка — отдельная
большая задача (см. docs/generator-realism.md, раздел «Пользователи
клонируются из словаря»).

Решить: доля анонимов, механика идентификации (когда у визита появляется
user_custom_id), нужен ли сюжет склейки в лабах, что это делает с
эталонным миром и числами витрин (uniq_users).

Part of #10 > ⚠ Тело восстановлено по памяти при переносе с GitHub (аккаунт > заблокирован 2026-07-26); оригинал не сохранился. Блокировки — точные, > из снимка нативных dependencies. ## Question Нужны ли стенду анонимный трафик и склейка идентичностей (identity stitching) — и в каком объёме. Сейчас у каждого визита есть email пользователя; в бою большинство трафика анонимно, и склейка — отдельная большая задача (см. `docs/generator-realism.md`, раздел «Пользователи клонируются из словаря»). Решить: доля анонимов, механика идентификации (когда у визита появляется `user_custom_id`), нужен ли сюжет склейки в лабах, что это делает с эталонным миром и числами витрин (`uniq_users`).
ddmitry added the wayfinder:grilling label 2026-07-26 21:39:18 +03:00
ddmitry added a new dependency 2026-07-29 20:39:05 +03:00
ddmitry self-assigned this 2026-07-30 08:32:58 +03:00
Author
Owner

Резолюция: кликстрим анонимный, склейка — через заказы, отношение кук к пользователю N:1

Ответ на вопрос тикета: да, анонимность нужна — и редизайн модели (#18) — единственный дешёвый момент её ввести.

События. Идентификатор пользователя (email) из кликстрима исчезает полностью: у события есть только clientID (кука). Это честно к источнику: Logs API Метрики UserID не выгружает. Генератору становится проще, не сложнее.

Доля анонимов как отдельная ручка не нужна: покрытие идентификации выводится из конверсии воронки — мы знаем ровно тех, кто купил. Это не упрощение, а сам урок: анонимную аудиторию розница знает только через покупки.

Склейка. Карта соответствий кука↔пользователь строится трансформацией из уже существующего моста: purchase-событие (clientID, purchaseID) ↔ заказ (order_id, user_id). Ни новых полей, ни нового транспорта.

N:1. Часть покупателей (порядка 10–20%, точная доля — параметр мира, решит спека #17) покупает с двух кук — «телефон и ноутбук». Ядро лабы: uniq(посетителей) > uniq(людей), менти выводит расхождение сам.

Лаба + лекция. Лаба «сколько посетителей мы на самом деле знаем»: сборка карты, uniq до/после, сверка с манифестом. Лекционная вставка «как в бою»: setUserID и first-party id, детерминированная против вероятностной склейки, identity graph, кросс-девайс, CDP — с рамкой «мы склеили через транзакции, потому что трекер user id не отдаёт». docs/generator-realism.md обновить: identity stitching перестаёт быть чистой теорией.

Витрины и метрики. Имена становятся честными: «посетители» (uniq(clientID)) и «известные пользователи» (после склейки) — оба числа в дашборде рядом, их расхождение — наглядный итог лабы.

Эталонный мир. Манифест расширяется числами идентичности: uniq кук, uniq известных пользователей, количество двухкуковых покупателей — детерминировано от seed, лаба склейки получает самопроверку («должно склеиться ровно K»). Отдельной пересборки мира тикет не добавляет — она уже оплачена решениями #18/#15.

Отклонено по дороге: оставить идентифицированные визиты (нечестность переехала бы в v2); эмуляция setUserID (нечестно к формату выгрузки Метрики; сюжет «логин посреди сессии» через params — усложнение без нужды); кука 1:N («семейный планшет») и полный граф идентичностей (вероятностная склейка — тема лекции, не лабы джуна).

В спеку #17: точная доля двухкуковых покупателей; форма и место карты соответствий в слоях; имена полей и витрин.

## Резолюция: кликстрим анонимный, склейка — через заказы, отношение кук к пользователю N:1 **Ответ на вопрос тикета: да, анонимность нужна** — и редизайн модели (#18) — единственный дешёвый момент её ввести. **События.** Идентификатор пользователя (email) из кликстрима исчезает полностью: у события есть только `clientID` (кука). Это честно к источнику: Logs API Метрики UserID не выгружает. Генератору становится проще, не сложнее. **Доля анонимов** как отдельная ручка не нужна: покрытие идентификации выводится из конверсии воронки — мы знаем ровно тех, кто купил. Это не упрощение, а сам урок: анонимную аудиторию розница знает только через покупки. **Склейка.** Карта соответствий кука↔пользователь строится трансформацией из уже существующего моста: purchase-событие (`clientID`, `purchaseID`) ↔ заказ (`order_id`, `user_id`). Ни новых полей, ни нового транспорта. **N:1.** Часть покупателей (порядка 10–20%, точная доля — параметр мира, решит спека #17) покупает с двух кук — «телефон и ноутбук». Ядро лабы: `uniq(посетителей) > uniq(людей)`, менти выводит расхождение сам. **Лаба + лекция.** Лаба «сколько посетителей мы на самом деле знаем»: сборка карты, uniq до/после, сверка с манифестом. Лекционная вставка «как в бою»: setUserID и first-party id, детерминированная против вероятностной склейки, identity graph, кросс-девайс, CDP — с рамкой «мы склеили через транзакции, потому что трекер user id не отдаёт». `docs/generator-realism.md` обновить: identity stitching перестаёт быть чистой теорией. **Витрины и метрики.** Имена становятся честными: **«посетители»** (`uniq(clientID)`) и **«известные пользователи»** (после склейки) — оба числа в дашборде рядом, их расхождение — наглядный итог лабы. **Эталонный мир.** Манифест расширяется числами идентичности: uniq кук, uniq известных пользователей, количество двухкуковых покупателей — детерминировано от seed, лаба склейки получает самопроверку («должно склеиться ровно K»). Отдельной пересборки мира тикет не добавляет — она уже оплачена решениями #18/#15. **Отклонено по дороге:** оставить идентифицированные визиты (нечестность переехала бы в v2); эмуляция setUserID (нечестно к формату выгрузки Метрики; сюжет «логин посреди сессии» через params — усложнение без нужды); кука 1:N («семейный планшет») и полный граф идентичностей (вероятностная склейка — тема лекции, не лабы джуна). **В спеку #17:** точная доля двухкуковых покупателей; форма и место карты соответствий в слоях; имена полей и витрин.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Blocks
#17 Собрать спеку боевого реализма
ddmitry/clickstream-ch-kafka-superset-demo
Depends on
Reference: ddmitry/clickstream-ch-kafka-superset-demo#16