ПромиллеТест Алкогольный калькулятор
Юридическое

Политика конфиденциальности

Здесь подробно о том, какие данные собирает сайт ПромиллеТест, как они хранятся и для чего используются. Если коротко: расчёты выполняются полностью в вашем браузере и никакие параметры калькулятора на наш сервер не уходят. На сервер отправляется только обезличенная техническая телеметрия (Web Vitals и события навигации), а Яндекс.Метрика подключается лишь после явного согласия в cookie-баннере.

Обновлено:

1. Общие положения

Настоящая Политика обработки персональных данных (далее — «Политика») составлена в соответствии с Федеральным законом РФ от 27.07.2006 № 152-ФЗ «О персональных данных» и определяет, как сайт promilletest.ru (далее — «Сайт», «ПромиллеТест») обрабатывает информацию о посетителях. Политика распространяется на все способы взаимодействия пользователя с Сайтом: открытие любой страницы, использование калькулятора, установку Сайта в качестве приложения (PWA), подписку на push-уведомления.

Оператором обработки персональных данных в соответствии со статьёй 3 ФЗ № 152-ФЗ выступает администрация проекта ПромиллеТест. Полные реквизиты юридического лица или индивидуального предпринимателя, эксплуатирующего Сайт, размещены в подвале сайта в момент публичного запуска; до этого момента ПромиллеТест работает в режиме закрытого тестирования и не привлекает внешних посетителей в коммерческих целях.

Используя Сайт, вы подтверждаете, что прочитали и приняли условия настоящей Политики. Если вы не согласны хотя бы с одним из её положений — пожалуйста, не используйте Сайт и не сохраняйте его в качестве приложения.

2. Какие данные мы получаем

2.1. Данные, введённые в калькулятор

Параметры, которые вы вводите в форму расчёта (пол, масса тела, объём и крепость напитков, время приёма, наполненность желудка, темп употребления, толерантность), не отправляются на наш сервер. Расчёт по формуле Видмарка с поправкой Сейдля выполняется в JavaScript-коде, который работает непосредственно в вашем браузере. Промежуточные значения, итоговый уровень BAC и кривая выведения этанола во времени не покидают ваше устройство ни в каком виде.

Часть параметров калькулятора сохраняется в локальном хранилище браузера ( localStorage) под ключом pt-calc-profile, чтобы при следующем визите вы не вводили их заново. Сохраняются только стабильные параметры профиля: пол, масса тела, ориентировочная наполненность желудка и темп употребления. Список напитков, конкретные объёмы и время приёма — не сохраняются и удаляются при закрытии вкладки. Удалить сохранённый профиль можно вручную через настройки браузера в разделе данных сайтов или пересоздав профиль на странице калькулятора.

2.2. Технические данные о производительности (RUM-канал)

Сайт отправляет на собственный сервер обезличенную информацию о работе страницы (Real User Monitoring) на эндпоинты /rum, /rum/events и /errors. Это нужно, чтобы своевременно реагировать на проблемы производительности и сбои JavaScript. В RUM-канал отправляются:

  • Категория страницы (template). Не сам URL, а сегмент — например, za-rul-drink, main, zakon. Точный путь с параметрами или идентификаторами не передаётся.
  • Тип устройства. Одно из значений: mobile, tablet, desktop — определяется по ширине экрана, без сбора характеристик устройства.
  • Тип соединения. Одно из значений: 4g, 3g, 2g, slow-2g, wifi, unknown — из Network Information API браузера.
  • Страна (ISO-2). Двухбуквенный код страны, который добавляет наш веб-сервер Caddy на основе IP-геолокации (например, RU). Сам IP-адрес в долгосрочное хранилище не попадает и обнуляется в логах Promtail на этапе приёма.
  • Метрики Web Vitals. LCP (Largest Contentful Paint), CLS (Cumulative Layout Shift), INP (Interaction to Next Paint), TTFB (Time to First Byte), FCP (First Contentful Paint), а также длительные задачи (long_task). Числовые значения в миллисекундах или в безразмерных единицах CLS.
  • Тип навигации. Стандартное значение из Navigation Timing API: navigate, reload, back-forward, prerender, restore.
  • Технические события калькулятора. Факт начала расчёта, выбора напитка, переключения сценария «А что если». Численные значения промилле и состав введённых напитков в события не входят — мы фиксируем только сам факт взаимодействия.
  • Псевдоним сессии (session_hash). 16-символьная шестнадцатеричная строка, которая создаётся в браузере через crypto.randomUUID() и хранится в sessionStorage до закрытия вкладки. Это не стабильный идентификатор пользователя: после закрытия вкладки псевдоним удаляется и в следующей сессии генерируется новый. Имея session_hash, восстановить личность пользователя нельзя.

RUM-канал работает без cookies и без согласия на их использование, потому что собираемые данные обезличены и необходимы для технической эксплуатации Сайта (в терминологии ФЗ-152 — обработка для «обеспечения функционирования информационной системы»). Если вы не хотите участвовать даже в этой обезличенной телеметрии, отключите JavaScript для Сайта в настройках браузера или используйте блокировщик соответствующих эндпоинтов.

2.3. Веб-аналитика Яндекс.Метрика

Сайт использует Яндекс.Метрику для понимания, какие страницы пользуются спросом, как пользователи перемещаются между разделами, какие сценарии калькулятора чаще всего востребованы. Метрика загружается с задержкой не менее 10 секунд после полной загрузки страницы, через прокси /metrika.js на нашем домене (для устойчивости к адблокерам), и только при наличии явного согласия пользователя, выраженного нажатием кнопки «Принять» в cookie-баннере.

Метрика собирает следующие категории данных:

  • IP-адрес (хешируется на стороне Яндекса в обезличенный идентификатор);
  • тип устройства, операционная система, браузер, разрешение экрана;
  • источник перехода (HTTP referrer), UTM-метки в адресной строке;
  • посещаемые страницы и время, проведённое на них;
  • пользовательские события Метрики, дублирующие наш RUM-канал (без числовых значений результатов калькулятора).

Webvisor (запись действий пользователя) включён только для случайной выборки сессий — по умолчанию 5%, регулируется параметром PUBLIC_WEBVISOR_SAMPLE_RATE. Записи Webvisor хранятся на серверах Яндекса в РФ, доступ к ним имеют только администраторы Сайта в обезличенном виде. Записи не используются для рекламы и не передаются третьим лицам.

Полные условия обработки данных Метрикой описаны на стороне Яндекса: Условия использования Яндекс.Метрики и Политика конфиденциальности Яндекса . Если вы хотите отказаться от участия в статистике Метрики, нажмите «Только необходимые» в cookie-баннере либо установите блокировщик Метрики в настройках браузера.

2.4. Локальное хранилище браузера

Сайт хранит несколько технических флагов и настроек в localStorage вашего браузера. Они никогда не покидают устройство и не отправляются на сервер.

  • pt-calc-profile — стабильный профиль калькулятора (пол, масса, желудок, темп); см. п. 2.1.
  • pt-theme — выбранная вами тема оформления (светлая или тёмная), сохраняется ради единообразия между визитами.
  • pt-age-confirmed — флаг «возраст 18+ подтверждён», устанавливается, когда вы подтверждаете возраст в первой плашке. Флаг хранится только локально и блокирует повторный показ окна возрастного ограничения.
  • pt-cookie-consent — ваш выбор по cookie-баннеру (значение accepted или denied); пока флаг не установлен, Яндекс.Метрика не загружается совсем.
  • pt-vapid — публичный VAPID-ключ Сайта, который браузер использует для проверки подлинности отправителя push-уведомлений. Сам по себе ключ публичный и не является вашими данными — это «открытый ключ нашего сервера». Используется только в режиме PWA при активной подписке на push-уведомления (см. п. 2.6).
  • В sessionStorage под ключом pt-session — псевдоним сессии для RUM (см. п. 2.2), живёт до закрытия вкладки.

Удалить любые из этих ключей можно в один шаг через настройки браузера: «Очистить данные сайта» либо вручную в DevTools во вкладке Application → Storage. После очистки калькулятор продолжит работать, но при следующем визите будет вести себя как для нового пользователя.

2.5. Кеш PWA и Service Worker

Сайт работает как Progressive Web App: Service Worker (файл /sw.js) кеширует статические ресурсы — JavaScript, CSS, HTML, шрифты WOFF2, иконки SVG/PNG — для офлайн-доступа и быстрого открытия повторных страниц. Кеш PWA не содержит ваших персональных данных или результатов расчётов; он хранит только публичные ресурсы Сайта и их версии.

Кеш можно очистить через настройки браузера или удалив установленное приложение. PWA отключается флагом PUBLIC_ENABLE_PWA=false, который администратор может использовать на staging-окружениях.

2.6. Push-уведомления «расчётно ниже нормы»

На странице результата калькулятора есть кнопка «Напомнить, когда уровень будет ниже нормы». Если вы её нажимаете и даёте браузеру разрешение на показ уведомлений, Сайт создаёт подписку в формате Web Push API (RFC 8291) и сохраняет её на нашем push-сервисе. Подписка не привязана к вашему имени, номеру телефона или e-mail и существует только пока сама запись активна.

В момент создания подписки на push-сервис передаются и сохраняются:

  • endpoint — URL push-сервера вашего браузера (например, fcm.googleapis.com у Chromium-браузеров, mozilla.com у Firefox), куда мы отправим уведомление. Это технический адресат «на конверте», не идентификатор пользователя.
  • auth_key и p256dh_key — публичные криптографические ключи устройства, нужны для шифрования содержимого по RFC 8291. Закрытый ключ остаётся в браузере, мы его не получаем.
  • deliver_at — момент UTC, когда нужно отправить уведомление. Рассчитывается в браузере как «сейчас + расчётное время до возвращения BAC ниже нормы 0,3 ‰».
  • payload — короткий JSON { title, body, url } с текстом уведомления. Текст формируется на сервере (не клиентом), чтобы исключить инъекцию произвольных сообщений на чужие подписки.

Что не сохраняется: имя пользователя, e-mail, IP-адрес, cookies, геолокация, конкретные параметры расчёта (масса, пол, выпитые напитки) — всё это остаётся в браузере и в payload не попадает.

Жизненный цикл подписки: статус pendingsent (после успешной отправки) → запись хранится не более 30 дней с момента отправки, затем физически удаляется автоматическим cron-заданием на push-сервисе. Если push-сервер вернул ошибку 410 Gone (вы удалили PWA или отозвали разрешение в браузере), запись помечается как failed и тоже подлежит автоматическому удалению.

Отозвать подписку можно тремя способами:

  • нажать в интерфейсе Сайта кнопку «Отменить напоминание» — мы немедленно отправляем DELETE в push-сервис (статус подписки переводится в cancelled);
  • отозвать разрешение на уведомления в настройках сайта в браузере — следующая попытка доставки получит ошибку и подписка пометится как failed;
  • удалить установленное PWA — все подписки для этого устройства автоматически становятся недоступны.

Push-уведомления никогда не используются для рекламы или маркетинга. Единственное сообщение, которое Сайт может прислать, — расчётное напоминание о моменте, когда уровень BAC по формуле Видмарка опускается ниже допустимой нормы 0,3 ‰. Само уведомление сопровождается дисклеймером о том, что расчёт носит ориентировочный характер.

2.7. Cookies

Технических cookies от первого лица (нашего домена) Сайт не устанавливает. Все настройки, перечисленные в п. 2.4, хранятся в localStorage и формально cookies не являются.

После принятия cookie-баннера Яндекс.Метрика устанавливает свои собственные cookies для идентификации сессий — они описаны в политике Метрики. Маркетинговых cookies, ретаргетинга через социальные сети, рекламных трекеров — на Сайте нет.

3. Цели обработки данных

Сайт обрабатывает указанные выше категории данных исключительно для следующих целей:

  • Работа калькулятора. Параметры профиля сохраняются, чтобы пользователь не вводил их при каждом визите.
  • Техническая эксплуатация. Метрики Web Vitals и сообщения об ошибках JavaScript позволяют находить и исправлять проблемы производительности и сбоев.
  • Понимание интересов аудитории. Сводная статистика по категориям страниц нужна, чтобы определять, какие материалы расширять.
  • Соблюдение требований закона. Подтверждение возраста 18+ блокирует несовершеннолетних в соответствии с этикой проекта и требованиями к материалам об алкоголе.

Сайт не использует собираемые данные для персонализированной рекламы, таргетинга, скоринга, продажи третьим лицам, передачи в государственные или медицинские реестры. Расчёты, выполненные пользователем, никогда не связываются с его именем, телефоном, e-mail или любым устойчивым идентификатором.

4. Правовые основания обработки

Обработка данных в категориях п. 2.1, 2.4 и 2.5 (локальное хранилище и кеш PWA) ведётся на основании пункта 5 части 1 статьи 6 ФЗ-152 — «обработка необходима для исполнения договора, стороной которого является субъект персональных данных»: договором здесь является публичное пользовательское соглашение Сайта.

Обработка обезличенной телеметрии в RUM-канале (п. 2.2) ведётся на основании пункта 7 части 1 статьи 6 ФЗ-152 — «обработка необходима для осуществления прав и законных интересов оператора»: законный интерес — техническая эксплуатация и безопасность информационной системы.

Обработка данных Яндекс.Метрикой (п. 2.3) ведётся на основании пункта 1 части 1 статьи 6 ФЗ-152 — «обработка персональных данных осуществляется с согласия субъекта персональных данных». Согласие фиксируется через нажатие кнопки «Принять» в cookie-баннере, отзывается нажатием «Только необходимые» либо очисткой ключа pt-cookie-consent в localStorage.

5. Передача данных третьим лицам

Сайт передаёт обезличенные данные следующим внешним сервисам в указанных рамках:

  • ООО «Яндекс» (Москва, ул. Льва Толстого, д. 16, ОГРН 1027700229193) — обезличенная статистика посещений через Яндекс.Метрику. Передаётся только при наличии вашего согласия в cookie-баннере. Серверы Метрики физически расположены в России.
  • Хостинг-провайдер Selectel или Timeweb Cloud — поскольку HTTP-запросы проходят через инфраструктуру провайдера, технически возможен доступ к содержимому запросов. Запросы шифруются TLS, провайдер обязан соблюдать ФЗ-152 как обработчик персональных данных.
  • Yandex Object Storage — резервные копии Postgres-базы (RUM-события) и снимков Prometheus сохраняются в S3-совместимое объектное хранилище в РФ. Бэкапы зашифрованы на стороне клиента.

Иным третьим лицам Сайт данные не передаёт. Государственные органы получают информацию только по обоснованному запросу в порядке, установленном законом.

6. Сроки хранения

RUM-события в нашей базе данных хранятся в виде партиций по дате; партиции старше 90 дней автоматически удаляются. Это означает, что любые технические события вашего визита, включая session_hash, физически перестают существовать через три месяца. Агрегированная статистика (без идентификаторов сессий) может храниться дольше — в виде материализованных представлений без возможности восстановления исходных событий.

Данные Яндекс.Метрики хранятся на серверах Яндекса в соответствии с его собственной политикой конфиденциальности.

Локальное хранилище браузера живёт ровно столько, сколько вы сами пожелаете: оно не имеет срока действия и удаляется только при ручной очистке либо при удалении приложения PWA.

7. Защита данных

Сайт реализует следующие меры безопасности:

  • Все запросы к Сайту проходят по протоколу HTTPS с актуальным TLS-сертификатом и политикой HSTS — данные нельзя перехватить в публичной Wi-Fi-сети.
  • Веб-сервер Caddy реализует Content Security Policy, защиту от clickjacking (X-Frame-Options, frame-ancestors 'none'), запрет на встраивание в iframes сторонних сайтов.
  • Push-сервис, принимающий RUM-события, находится за обратным прокси и ограничен по частоте запросов (rate limit 60 запросов в минуту с одного IP).
  • В логах веб-сервера IP-адреса анонимизируются на этапе приёма (хешируются, последний октет обнуляется).
  • Резервные копии шифруются перед загрузкой в Yandex Object Storage; ключи шифрования хранятся отдельно от данных.

8. Ваши права по ФЗ-152

В соответствии с главой 3 ФЗ-152 «О персональных данных» вы имеете право:

  • получить от оператора подтверждение факта обработки и сведения о составе данных;
  • требовать уточнения, блокирования или уничтожения данных, если они неточны или обработка избыточна;
  • отозвать согласие на обработку (применительно к данным, собираемым с согласия — то есть к Яндекс.Метрике): для этого достаточно нажать «Только необходимые» в cookie-баннере либо очистить cookies сайта в настройках браузера;
  • обжаловать действия оператора в Роскомнадзор или суд.

Поскольку Сайт не хранит на сервере данные, по которым возможно идентифицировать конкретного посетителя, технически удалить «именно ваши» данные со стороны оператора нечего: всё, что хранится в браузере, удаляется вами через очистку данных сайта. RUM-события обезличены ещё на этапе сбора и не привязаны к личности.

Если вы всё же хотите подать формальный запрос — напишите на promilletest@yandex.com с подтверждением личности (паспортные данные не требуются — достаточно описать ваш визит так, чтобы мы могли удостовериться в добросовестности обращения). Ответ будет дан в течение 30 дней.

9. Возрастные ограничения

Сайт содержит информацию об алкоголе и его влиянии на организм. Доступ предназначен для лиц, достигших возраста 18 лет — в соответствии с законодательством РФ о ограничении информации об алкоголе и об охране здоровья граждан от воздействия алкоголя. Несовершеннолетним посетителям Сайт показывает предупреждение и не должен использоваться без сопровождения взрослого.

Сайт не собирает данные о несовершеннолетних целенаправленно. Если вам известно, что несовершеннолетний посетил Сайт и каким-либо образом передал свои данные — сообщите по адресу promilletest@yandex.com, и мы примем меры по их удалению.

10. Трансграничная передача данных

Все данные, собираемые Сайтом, обрабатываются и хранятся в Российской Федерации. Трансграничная передача персональных данных не осуществляется. Серверы Яндекс.Метрики, наш хостинг (Selectel или Timeweb Cloud) и Yandex Object Storage расположены физически в России.

Шрифты с font.googleapis.com и аналогичные сторонние ресурсы Сайт не загружает: все статические файлы сервируются с собственного домена, чтобы исключить случайные обращения к зарубежным CDN.

11. Изменения в Политике

Если мы добавим новый источник данных, изменим логику обработки или поменяем оператора — обновим текст этого документа и поставим текущую дату в строке «Обновлено» сверху. Текст в момент вашего визита считается действующим. Существенные изменения (новые категории данных, новые получатели, изменение правовых оснований) дополнительно анонсируются в cookie-баннере и требуют повторного подтверждения согласия.

Архивные редакции Политики не публикуются; если вам нужна более ранняя версия — напишите на контактный адрес ниже, мы предоставим выгрузку из git-истории репозитория проекта.

12. Контакты

По вопросам обработки персональных данных, отзыва согласия и реализации прав по ФЗ-152 пишите на promilletest@yandex.com, обозначив тему «Персональные данные».

Реквизиты юридического лица, эксплуатирующего Сайт, размещены в подвале каждой страницы и продублированы на странице «О проекте». По вопросам, не связанным с персональными данными (методика расчёта, юридические комментарии, ошибки в фактах), используйте адреса, указанные на странице «О проекте».

По всем процедурным вопросам обработки персональных данных в РФ действует Роскомнадзор как уполномоченный орган по защите прав субъектов персональных данных.