Skip to content

docs: /privacy §2–§4 — Mux Data и пиксель ChatGPT Ads по согласию, геоправило в §2 и §4 (#420, #443) - #444

Merged
efymd9 merged 4 commits into
mainfrom
docs/privacy-mux-oaiq-420
Oct 12, 2026
Merged

efymd9 merged 4 commits into
mainfrom
docs/privacy-mux-oaiq-420

Conversation

@efymd9

@efymd9 efymd9 commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

Closes #420
Closes #443

Это черновик текста политики. Мерж только после «да» владельца в этом треде. Политику пишет человек, агент только предлагает формулировку. Юрист смотрит её вместе с остальной /privacy (#168), как было с §11 (#312), идеями (#297), входом через Apple / Google (#409) и геоправилом §3 (#421).

Что и зачем

В /privacy §3 было две неточности. Обе нашлись при #342.

  1. Mux Data стоял не в том пункте. Он был указан в пункте «To improve the service» с основанием legitimate interests. Но код включает Mux Data на обоих плеерах только при маркетинговом согласии: без него disableTracking / disableCookies и нет envKey (lib/use-marketing-consent.ts; закреплено в components/watch/player.test.tsx и components/site/hero-banner.test.tsx). /cookies §2 пишет «only after you accept marketing cookies». Карта данных пишет «Data — согласие». Теперь Mux Data назван в пункте о маркетинговом измерении, и на него распространяется основание этого пункта. После docs: /privacy §3 — маркетинговое измерение вне ЕС включено по умолчанию (#342) #421 это основание звучит так: согласие в EU/EEA, UK и CH; в остальных странах включено по умолчанию, отключается в «Cookie preferences» в подвале.
  2. Пиксель ChatGPT Ads (OpenAI oaiq) не был назван. Он грузится по тому же согласию (components/site/openai-pixel.tsx), и /cookies его называет. Теперь он есть в перечне того же пункта.

Что изменилось: app/(public)/privacy/page.tsx, en и es

§3, «To improve the service» / «Para mejorar el servicio» — убрано упоминание Mux Data, остальное как было:

было стало
EN To improve the service (aggregate analytics, playback-quality monitoring via Mux Data). Lawful basis: legitimate interests. To improve the service (aggregate analytics). Lawful basis: legitimate interests.
ES Para mejorar el servicio (analítica agregada, monitorización de calidad de reproducción con Mux Data). Base jurídica: interés legítimo. Para mejorar el servicio (analítica agregada). Base jurídica: interés legítimo.

§3, «Marketing and advertising measurement» / «Marketing y medición publicitaria» — к перечню добавлены два инструмента. Предложение об основании (#421) не тронуто:

было стало
EN …the Meta Pixel, Meta Conversions API, PostHog (product-analytics funnel measurement), and Google Analytics (site-traffic measurement). …the Meta Pixel, Meta Conversions API, PostHog (product-analytics funnel measurement), Google Analytics (site-traffic measurement), the ChatGPT Ads measurement pixel (ChatGPT ad measurement), and Mux Data (watch-time and playback-quality measurement by our video provider, Mux).
ES …el Meta Pixel, la API de Conversiones de Meta, PostHog (analítica de embudo de producto) y Google Analytics (medición del tráfico del sitio). …el Meta Pixel, la API de Conversiones de Meta, PostHog (analítica de embudo de producto), Google Analytics (medición del tráfico del sitio), el píxel de medición de ChatGPT Ads (medición de anuncios en ChatGPT) y Mux Data (medición del tiempo de visionado y de la calidad de reproducción por nuestro proveedor de vídeo, Mux).

Три решения, которые стоит увидеть:

  • Пиксель назван по инструменту, получатель не назван. В §3 инструменты перечисляются без юрлиц: «Meta Pixel», «PostHog», «Google Analytics». Кто для нас OpenAI (по Ad Tools DPA, похоже, независимый контролёр) и как его назвать в §4 — вопрос юристу, Privacy (владелец + юрист): спорные пункты правовой рамки из этапа 10 #168 п. 8. В §3 эта формулировка не нужна, поэтому ответ юриста здесь не понадобился. Формулировка пикселя та же, что в /cookies: «ChatGPT Ads measurement pixel» / «píxel de medición de ChatGPT Ads».
  • Заголовок пункта не менял. Mux Data — это измерение просмотра, а не реклама. Но он включается тем же согласием, а пункт объединяет всё, что от этого согласия зависит. Если нужен заголовок шире, например «Marketing, advertising and playback measurement», это одна строка — скажите. После ревью решение то же, с обоснованием — см. «После ревью», п. 3.
  • «(aggregate analytics)» под законным интересом осталось. Задача — ничего больше не менять. Но после переноса Mux Data в этом пункте нет ни одного названного инструмента. Собственное измерение аудитории (first-party, matio_aid) — отдельный пункт ниже. Убрать пункт или оставить как общее описание — решение владельца или юриста.

Остальной текст страницы не тронут.

Дата обновления LAST_UPDATED_EN/ES: October 9 → October 11, 2026, как в #421 и #409. Если мерж будет позже, дату можно перенести на день мержа.

Комментарий в шапке файла описывает правку и её статус — по образцу #409 и #421.

Как проверено

Команда Результат
pnpm lint exit 0
pnpm typecheck exit 0
pnpm qa:styles exit 0
pnpm test:unit exit 0 — 156 файлов, 2071 тест
pnpm vitest run --project unit "app/(public)/privacy/consent-geo" на тексте до правки 4 новых кейса красные (en + es × 2), 5 кейсов #342 зелёные. После правки — 9 из 9 зелёные

Тест — новый describe в app/(public)/privacy/consent-geo.test.tsx. Он использует хелперы и рендер #342: настоящие getDict и LegalLink, подделан только запрос. Проверяет в обеих локалях:

  • в пункте §3 с attribution_first названы все инструменты, которые включает маркетинговое согласие: Meta Pixel, CAPI, PostHog, GA4, пиксель ChatGPT Ads, Mux Data. Все они стоят до предложения об основании, поэтому слово «these» / «se ejecutan» к ним относится;
  • в пункте «To improve the service» / «Para mejorar el servicio» нет Mux. Mux Data в §3 встречается ровно в одном пункте — в пункте о согласии.

Старую формулировку не закреплял ни один тест (git grep по «Mux Data» и «To improve the service» в *.test.*).

Критерии из #420 — по пунктам

  1. Решить, где в §3 живёт Mux Data и с каким основанием. Он в пункте о маркетинговом измерении. Основание — то же геоправило, что после /privacy §3: «маркетинговое измерение только после согласия в баннере» — вне EU/EEA/UK/CH оно включено по умолчанию #342 (docs: /privacy §3 — маркетинговое измерение вне ЕС включено по умолчанию (#342) #421): согласие в EU/EEA, UK и CH, по умолчанию включено в остальных странах, отказ в подвале. Из пункта «законный интерес» Mux Data убран. Закреплено тестом.
  2. Добавить пиксель ChatGPT Ads в перечень пункта о маркетинговом измерении. Сделано в обеих локалях. Получатель в §3 не называется, поэтому согласовывать с юристом нечего. Вопрос про §4 остаётся в Privacy (владелец + юрист): спорные пункты правовой рамки из этапа 10 #168, п. 8.
  3. Текст — решение владельца, PR — черновик на «да». Да, см. плашку вверху.

Отложено и попутное

После ревью

Связанные находки сведены в этот же черновик, чтобы владелец одобрял один текст. Коммит 705ec070.

1. §2 «Marketing-attribution data» / «Datos de atribución» (#443). Раньше пункт писал «If you accept marketing cookies» всем подряд. Теперь в нём правило из §3, а в перечень добавлены пиксель ChatGPT Ads и Mux Data — теми же словами, что в §3. Геоправило стоит отдельным предложением после перечня и сформулировано так же, как пункт об идеях в том же §2.

было стало
EN …revenue attribution. If you accept marketing cookies, we also run the Meta Pixel …, PostHog …, and Google Analytics (GA4) for site-traffic measurement. …revenue attribution. While marketing cookies are on, we also run the Meta Pixel …, PostHog …, Google Analytics (GA4) for site-traffic measurement, the ChatGPT Ads measurement pixel (ChatGPT ad measurement), and Mux Data (watch-time and playback-quality measurement by our video provider, Mux). In the EU/EEA, the UK and Switzerland, marketing cookies are on only after you accept them in the banner; elsewhere they are on by default and you can switch them off under “Cookie preferences” in the footer.
ES …atribución de ingresos. Si aceptas las cookies de marketing, además usamos el Meta Pixel …, PostHog … y Google Analytics (GA4) para medir el tráfico del sitio. …atribución de ingresos. Mientras las cookies de marketing estén activadas, además usamos el Meta Pixel …, PostHog …, Google Analytics (GA4) para medir el tráfico del sitio, el píxel de medición de ChatGPT Ads (medición de anuncios en ChatGPT) y Mux Data (medición del tiempo de visionado y de la calidad de reproducción por nuestro proveedor de vídeo, Mux). En la UE/EEE, el Reino Unido y Suiza, las cookies de marketing solo se activan después de que las aceptes en el banner; en el resto del mundo están activadas por defecto y puedes desactivarlas en «Preferencias de cookies», en el pie de página.

Получатель данных пикселя (OpenAI) в §2 не назван, как и в §3. Как назвать это юрлицо, решает юрист (#168, п. 8).

2. §4: строки Meta, PostHog, Google и Mux. Во всех трёх строках «Only engaged after you accept marketing cookies» / «Solo se utiliza tras aceptar las cookies de marketing» заменено одной фразой:

  • EN: «Only engaged while marketing cookies are on: in the EU/EEA, the UK and Switzerland after you accept them in the banner; elsewhere by default, until you switch them off under “Cookie preferences” in the footer.»
  • ES: «Solo se utiliza mientras las cookies de marketing estén activadas: en la UE/EEE, el Reino Unido y Suiza, después de que las aceptes en el banner; en el resto del mundo, por defecto, hasta que las desactives en «Preferencias de cookies», en el pie de página.»

В строке Mux Inc. после «video transcoding, storage and signed playback» добавлено «and playback measurement (Mux Data: watch time and playback quality). Mux Data is only engaged while marketing cookies are on: …», дальше та же фраза. По-испански: «y medición de la reproducción (Mux Data: tiempo de visionado y calidad de reproducción). Mux Data solo se utiliza mientras …».

3. Формулировки.

  • Пояснение в скобках к пикселю в §3 стало короче: «(ChatGPT ad measurement)» / «(medición de anuncios en ChatGPT)». Таблица §3 выше уже показывает новый вариант.
  • Заголовок пункта §3 «Marketing and advertising measurement» оставил как был. Пункт собирает всё, что включает переключатель «marketing cookies». /cookies тоже относит Mux Data к маркетинговым cookies, и заголовок со словом «playback» разошёлся бы с баннером и /cookies. Что такое Mux Data, в самом пункте сказано прямо: «watch-time and playback-quality measurement». Если заголовок всё же нужен шире, это одна строка.

Сверено с кодом в обеих локалях.

  • Геоправило. lib/cookie-consent.ts:marketingConsentRequired: 27 стран EU + IS, LI, NO + GB + CH; неизвестная страна считается как ЕС. proxy.ts:evaluateMarketing: autoGrant = !existing && !marketingConsentRequired(country) записывает cookie_consent с marketing:true и передаёт его в рендер того же запроса. Явный выбор посетителя, в том числе отказ через подвал, всегда сильнее.
  • Meta Pixel, PostHog, GA4 и пиксель OpenAI. Все четыре загрузчика в app/layout.tsx получают один и тот же initialConsent из cookie_consent и слушают CONSENT_CHANGED_EVENT. При отзыве согласия components/site/openai-pixel.tsx вызывает oaiq('consent', false).
  • Mux Data. lib/use-marketing-consent.ts читает тот же cookie_consent.marketing. Без согласия components/watch/player.tsx и components/site/hero-banner.tsx передают disableTracking/disableCookies и не передают envKey.
  • Подпись кнопки в подвале: en.footer.cookiePreferences = «Cookie preferences», es.footer.cookiePreferences = «Preferencias de cookies».
  • В приложении Mux Data нет: в mobile/src нет ни envKey, ни Mux Data. Поэтому строка Mux не противоречит §11 («the app contains no analytics…»).

Проверено после правок.

Команда Результат
pnpm vitest run --project unit "app/(public)/privacy/consent-geo" на тексте до правки 4 новых кейса красные (en + es × 2), 9 прежних зелёные; после правки — 13 из 13 зелёные
pnpm lint exit 0
pnpm qa:styles exit 0
pnpm typecheck одна ошибка в lib/stripe.ts из-за версии API Stripe: в локальных node_modules ещё stripe 22, а в main уже 23 (#441). Смотреть по CI
pnpm test:unit 155 из 157 файлов зелёные. Красные только lib/stripe-api-version.test.ts и lib/stripe-browser.test.ts, причина та же. Смотреть по CI

Тест — новый describe в consent-geo.test.tsx, проверяет обе локали:

  • §2: нет фразы «If you accept marketing cookies» / «Si aceptas las cookies de marketing». Есть регионы, «по умолчанию» и подпись кнопки в подвале. Все шесть инструментов из §3 названы раньше предложения о регионах.
  • §4: строки Meta, PostHog, Google Analytics 4 и Mux говорят о маркетинговых cookies, в строке Mux назван Mux Data. Любая строка §4, где упомянуты маркетинговые cookies, содержит регионы, «по умолчанию» и подпись кнопки в подвале, а старой фразы в ней нет. Если появится новая строка с безусловным «after you accept», тест упадёт.

Не трогал — это за рамками задачи:

  • Первое предложение пункта §2: «if you arrive from a campaign URL we record … in two cookies». В коде proxy.ts тоже пишет attribution_first/last только при действующем согласии, и в §3 эти cookies покрыты предложением о регионах. В §2 предложение по-прежнему без условия, то есть описывает больше обработки, чем есть на самом деле, а не меньше. Если владелец захочет, условие можно перенести в начало пункта — это одна правка.
  • /cookies: в строках таблицы стоит «Only set after you accept marketing cookies», но геоправило для всей страницы сказано в её §3.

Что нужно от владельца

«Да» в этом треде — на весь текст §2–§4 — или правка формулировки. Открытые решения: оставшееся «(aggregate analytics)» и, если нужно, заголовок пункта §3 и условие в первом предложении §2 (см. «После ревью»). Юрист смотрит текст вместе с остальной политикой (#168).

GDPR: применимо, прозрачность по ст. 13. Уведомление приводится к фактической обработке: Mux Data назван под тем основанием, по которому его включает код, пиксель OpenAI назван там, где перечислено всё, что зависит от того же согласия. Сама обработка не меняется, поэтому карта данных (там уже «Mux Data — по согласию» и строка OpenAI oaiq) и таблица процессоров не правятся. §2 и §4 (#443) — то же: текст приводится к коду, обработка прежняя.

🤖 Generated with Claude Code

https://claude.ai/code/session_0184yUssUtNnEmKVaft78cbT

… ЧЕРНОВИК на «да» владельца (#420)

Mux Data переехал из пункта «To improve the service» с основанием
«законный интерес» в пункт о маркетинговом измерении. Код включает его
только при маркетинговом согласии (lib/use-marketing-consent.ts), так же
пишут /cookies §2 и карта данных. Основание этого пункта после #421:
согласие в EU/EEA, UK и CH, по умолчанию включено в остальных странах,
отказ в подвале. В тот же перечень добавлен пиксель ChatGPT Ads.
Обе локали. Дата обновления: 11 октября 2026.

Тест consent-geo.test.tsx: все инструменты под согласием названы в
пункте §3 до предложения об основании; Mux Data в §3 встречается один
раз и не стоит под «законным интересом». На тексте до правки четыре
новых кейса красные.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184yUssUtNnEmKVaft78cbT
@vercel

vercel Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
matio Ready Ready Preview Oct 12, 2026 7:28am UTC
matio-staging Ready Ready Preview Oct 12, 2026 7:28am UTC

Request Review

@github-actions

github-actions Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

Покрытие

=============================== Coverage summary ===============================
Statements   : 57.02% ( 5189/9099 )
Branches     : 50.69% ( 3448/6801 )
Functions    : 50.26% ( 1139/2266 )
Lines        : 57.78% ( 4597/7956 )
================================================================================

Изменённые строки (diff-cover, порог 85%)

-------------
Diff Coverage
Diff: origin/main...HEAD, staged and unstaged changes
-------------
app/(public)/privacy/page.tsx (100%)
-------------
Total:   2 lines
Missing: 0 lines
Coverage: 100%
-------------

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184yUssUtNnEmKVaft78cbT
…#443)

Правки ревью к черновику #420, чтобы владелец одобрил один текст.

- §2 «Marketing-attribution data» / «Datos de atribución»: вместо «If you
  accept marketing cookies» для всех — геоправило §3 (баннер в EU/EEA, UK и
  CH, по умолчанию включено в остальных странах, отказ в «Cookie
  preferences» в подвале); в перечень добавлены пиксель ChatGPT Ads и Mux
  Data теми же словами, что в §3.
- §4: строки Meta, PostHog и Google говорят то же геоправило вместо «Only
  engaged after you accept marketing cookies»; в строке Mux Inc. названо
  измерение воспроизведения (Mux Data) под тем же правилом.
- §3: скобка пикселя сокращена до «(ChatGPT ad measurement)» /
  «(medición de anuncios en ChatGPT)». Заголовок пункта не менялся.

Тест: новый describe в consent-geo.test.tsx (обе локали) — на тексте до
правки 4 кейса красные, после — 13 из 13 зелёные.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0184yUssUtNnEmKVaft78cbT
@efymd9 efymd9 changed the title docs: /privacy §3 — Mux Data по согласию, пиксель ChatGPT Ads назван, ЧЕРНОВИК на «да» владельца (#420) docs: /privacy §2–§4 — Mux Data и пиксель ChatGPT Ads по согласию, геоправило в §2 и §4, ЧЕРНОВИК на «да» владельца (#420, #443) Oct 11, 2026
@efymd9

efymd9 commented Oct 11, 2026

Copy link
Copy Markdown
Owner Author

Правки ревью — коммит 705ec070. Подробно, с таблицами было/стало, — в разделе «После ревью» тела PR.

  1. /privacy §2 «Marketing-attribution data»: «если вы примете cookies» без геоправила, не названы пиксель ChatGPT Ads и Mux Data #443: §2 «Marketing-attribution data» / «Datos de atribución» — сделано, en и es. Вместо «If you accept marketing cookies» / «Si aceptas las cookies de marketing» теперь правило из §3. После перечня отдельное предложение: в EU/EEA, UK и CH маркетинговые cookies включаются только после согласия в баннере, в остальных странах включены по умолчанию и отключаются в «Cookie preferences» / «Preferencias de cookies» в подвале. В перечень добавлены пиксель ChatGPT Ads и Mux Data — теми же словами, что в §3. Получатель данных пикселя (OpenAI) в §2 не назван, как и в §3; это вопрос юристу, Privacy (владелец + юрист): спорные пункты правовой рамки из этапа 10 #168 п. 8. В тело PR добавлено Closes #443.
  2. §4: строки Meta, PostHog, Google, Mux — сделано, en и es. В трёх строках «Only engaged after you accept marketing cookies» / «Solo se utiliza tras aceptar las cookies de marketing» заменено одной фразой с тем же геоправилом и подписью кнопки в подвале. В строке Mux Inc. добавлено «playback measurement (Mux Data: watch time and playback quality)» и та же фраза для Mux Data.
  3. Формулировки. Пояснение в скобках к пикселю сокращено до «(ChatGPT ad measurement)» / «(medición de anuncios en ChatGPT)». Заголовок пункта §3 оставил как был. Пункт собирает всё, что включает переключатель «marketing cookies»; /cookies тоже относит Mux Data к маркетинговым cookies, а в самом пункте прямо сказано, что Mux Data — это «watch-time and playback-quality measurement». Если заголовок нужен шире, это одна строка.

Сверено с кодом. lib/cookie-consent.ts:marketingConsentRequired; proxy.ts (autoGrant записывает cookie_consent с marketing:true); один initialConsent для загрузчиков Meta, PostHog, GA4 и OpenAI в app/layout.tsx (openai-pixel.tsx вызывает oaiq('consent', false) при отзыве согласия); lib/use-marketing-consent.ts и оба плеера: без согласия disableTracking/disableCookies и нет envKey; подписи footer.cookiePreferences в обоих словарях.

Тест — новый describe в consent-geo.test.tsx. На тексте до правки 4 кейса красные, после правки 13 из 13 зелёные. Отдельно проверяется, что в §4 любая строка с маркетинговыми cookies содержит геоправило. Старую формулировку тесты не закрепляли. lint и qa:styles — exit 0. В typecheck и test:unit локально красны только места, связанные со Stripe 22 → 23; смотреть по CI.

Не трогал: первое предложение того же пункта §2 («we record … in two cookies») — оно без условия, хотя proxy.ts пишет эти cookies только при согласии; описывает больше обработки, а не меньше, решение за владельцем. Строки таблицы /cookies тоже не трогал.

@efymd9 efymd9 changed the title docs: /privacy §2–§4 — Mux Data и пиксель ChatGPT Ads по согласию, геоправило в §2 и §4, ЧЕРНОВИК на «да» владельца (#420, #443) docs: /privacy §2–§4 — Mux Data и пиксель ChatGPT Ads по согласию, геоправило в §2 и §4 (#420, #443) Oct 12, 2026
@efymd9

efymd9 commented Oct 12, 2026

Copy link
Copy Markdown
Owner Author

Владелец ответил «да» на этот текст /privacy (12.10, в чате основной сессии). Сливаю.

@efymd9
efymd9 enabled auto-merge (squash) October 12, 2026 07:27
@efymd9
efymd9 merged commit f04fe54 into main Oct 12, 2026
4 checks passed

This branch was successfully deployed

2 active deployments
Preview – matio-staging — bbb6bddd Deployed Oct 12, 2026 by vercel[bot]
Preview – matio — bbb6bddd Deployed Oct 12, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment