docs(spec): дизайн Метрика+Вебвизор на портале (кабинет клиента, маскировка ПДн)
Утверждённый с владельцем дизайн: отдельный счётчик для lk.liderra.ru, запись только в кабинете клиента, маскировка личных данных (Вариант 1), CSP-правка блока приложения, строка в политике конфиденциальности. Выкат через тестовый стенд + проверка маскировки как gate. Следующий шаг — план работ (writing-plans). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Brain Status (auto-generated)
|
||||
|
||||
Last updated: 2026-07-07T16:17:13.094Z
|
||||
Last updated: 2026-07-08T00:28:55.453Z
|
||||
|
||||
| Контролёр | Состояние | Детали |
|
||||
|---|---|---|
|
||||
@@ -112,9 +112,9 @@ Episodes since last run: 542 / threshold: 10
|
||||
|
||||
| PID | Имя | CPU-время | Возраст |
|
||||
|---|---|---|---|
|
||||
| 2132 | Code | 8.78ч | NaNч |
|
||||
| 3276 | MsMpEng | 7.97ч | NaNч |
|
||||
| 4 | System | 3.46ч | 0.0ч |
|
||||
| 2132 | Code | 9.28ч | 12285432.5ч |
|
||||
| 3276 | MsMpEng | 8.93ч | 0.0ч |
|
||||
| 4 | System | 3.72ч | NaNч |
|
||||
|
||||
⚠️ Проверь, не «осиротевшие» ли это процессы от завершённых Claude-сессий.
|
||||
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
# Дизайн: Яндекс.Метрика + Вебвизор на портале (кабинет клиента)
|
||||
|
||||
**Дата:** 08.07.2026
|
||||
**Статус:** дизайн утверждён заказчиком, готов к плану работ
|
||||
**Автор:** Claude (brainstorming с владельцем)
|
||||
|
||||
## Цель
|
||||
|
||||
Дать владельцу смотреть **видеозаписи поведения клиентов** в кабинете портала
|
||||
(`lk.liderra.ru`) вместо чтения логов. Владелец — не программист; видео нагляднее.
|
||||
Смотрим, **как** клиент пользуется кабинетом: какие экраны открывает, куда жмёт,
|
||||
где «затупил», где не нашёл нужное.
|
||||
|
||||
## Ключевое ограничение — 152-ФЗ (персональные данные)
|
||||
|
||||
Портал показывает **личные данные**: телефоны и имена лидов, сделки, биллинг.
|
||||
Вебвизор пишет то, что на экране, и отправляет в Яндекс. Поэтому запись ПДн
|
||||
клиентов в сторонний сервис недопустима без защиты.
|
||||
|
||||
**Решение (утверждено):** маскируем в записи **только личные данные** (телефоны,
|
||||
имена лидов) — Вариант 1 из трёх обсуждённых. Клиент на своём экране видит всё как
|
||||
обычно; маскировка влияет **только** на сохранённую запись, не на живой экран
|
||||
клиента. В видео вместо `+7 999 123-45-67` — `▮▮▮`, но структура и действия видны.
|
||||
|
||||
Отвергнуто:
|
||||
- Вариант 2 (замазать всё содержимое) — безопасно, но видео малополезно.
|
||||
- Вариант 3 (не маскировать) — 152-ФЗ риск, отклонён.
|
||||
|
||||
## Решения (зафиксированы с владельцем)
|
||||
|
||||
| Вопрос | Решение |
|
||||
|---|---|
|
||||
| Что маскируем | Только личные данные (телефоны/имена лидов) — Вариант 1 |
|
||||
| Охват записи | **Только кабинет клиента.** Админка, поставщик, страницы входа — БЕЗ записи |
|
||||
| Счётчик | **Отдельный новый** счётчик для `lk.liderra.ru` (НЕ переиспользуем лендинговый 110476275) |
|
||||
| Политика конфиденциальности | Добавить строку про использование Яндекс.Метрики |
|
||||
|
||||
## Состав работ
|
||||
|
||||
### 1. Отдельный счётчик Метрики
|
||||
Владелец создаёт новый счётчик для `lk.liderra.ru` (сайт = lk.liderra.ru), присылает
|
||||
номер. Отдельный от лендинга — чтобы статистика портала и лендинга не смешивалась
|
||||
и Вебвизор/маскировку настраивать независимо.
|
||||
|
||||
### 2. Вставка счётчика в приложение с условием охвата
|
||||
- Счётчик подключается в главном HTML-шаблоне SPA (Blade-view приложения).
|
||||
- Запись/инициализация Вебвизора — **только когда пользователь в кабинете клиента**
|
||||
(guard/роль клиента), НЕ на страницах входа, НЕ в админке, НЕ в кабинете поставщика.
|
||||
- Реализация условия — по контексту авторизации (guard) / по группе маршрутов.
|
||||
|
||||
### 3. Учёт переходов в SPA
|
||||
Портал — одностраничное приложение (Vue Router, экраны без перезагрузки). Подцепить
|
||||
`ym('hit')` к смене маршрута, чтобы каждый экран считался и попадал в запись сессии.
|
||||
|
||||
### 4. Маскировка ПДн в записи (главное)
|
||||
- Пройти по экранам кабинета клиента: список сделок, карточка лида/сделки, профиль,
|
||||
везде, где выводятся телефоны/имена лидов.
|
||||
- Пометить эти элементы меткой Яндекса «скрыть содержимое из записи» (класс/атрибут
|
||||
Вебвизора для hide-content). Точный механизм маскировки — уточнить по актуальной
|
||||
документации Метрики на этапе плана (класс типа `ym-hide-content` или аналог).
|
||||
- Поля ввода паролей Вебвизор маскирует сам по умолчанию — но на них не полагаемся
|
||||
для ПДн лидов, помечаем явно.
|
||||
|
||||
### 5. Защита сервера (CSP) — блок приложения
|
||||
По аналогии с лендингом (уже сделано 08.07 для landing-блока): в CSP-заголовок
|
||||
**блока приложения** `lk.liderra.ru` добавить для `https://mc.yandex.ru`:
|
||||
`script-src`, `img-src`, `connect-src`, `child-src blob:`, `frame-src blob:`,
|
||||
и домены Метрики в `frame-ancestors`. Без `child-src`/`frame-src blob:` Вебвизор
|
||||
не пишет (проверено на лендинге: «Посетители есть — Вебвизор пуст»).
|
||||
NB: у приложения CSP сложнее лендинга (там уже есть smartcaptcha/yastatic/yandex.ru
|
||||
директивы) — добавлять аккуратно, не ломая существующее.
|
||||
|
||||
### 6. Политика конфиденциальности
|
||||
Добавить строку об использовании Яндекс.Метрики (аналитика/запись сессий с
|
||||
маскировкой ПДн). Место — политика/пользовательское соглашение портала.
|
||||
|
||||
### 7. Выкат — аккуратно (код приложения, не статичная страница)
|
||||
1. Собрать фронт (Vite build).
|
||||
2. Бэкап (текущий build + nginx-конфиг).
|
||||
3. Деплой на боевой.
|
||||
4. **Проверка живьём** — обязательные пункты:
|
||||
- Счётчик пишет заходы (отчёт «Посетители» наполняется).
|
||||
- Вебвизор реально записывает сессию (появляется запись, играется).
|
||||
- **Маскировка работает: телефоны/имена лидов в записи замазаны** — критично.
|
||||
- Портал не сломан (вход, ключевые экраны 200, приём лидов/оплаты живы).
|
||||
- Маскировку проверить **сначала на тестовом стенде** (crm.bp-gr.ru / локально),
|
||||
потом боевой.
|
||||
|
||||
## Главный риск
|
||||
|
||||
**Утечка ПДн через незамаскированный элемент.** Если хоть один телефон лида
|
||||
просочится в запись — это утечка персональных данных в Яндекс. Поэтому проверка
|
||||
маскировки на реальных экранах кабинета — обязательный gate перед боевым выкатом.
|
||||
Лучше пере-замаскировать, чем недо-.
|
||||
|
||||
## Отличие от лендинга (почему сложнее)
|
||||
|
||||
Лендинг = один статичный HTML-файл (правка + scp за минуты). Портал = живое
|
||||
Vue-приложение + Laravel: нужна вставка в SPA, условный охват по роли, учёт
|
||||
SPA-переходов, ручная разметка ПДн по экранам, правка более сложного CSP,
|
||||
сборка+деплой приложения. Риск выше — работаем через тестовый стенд и проверки.
|
||||
|
||||
## Вне охвата (YAGNI)
|
||||
|
||||
- Запись админки/поставщика/входа — НЕ делаем.
|
||||
- Тепловые карты/аналитика форм сверх Вебвизора — не в этой итерации.
|
||||
- Согласие-баннер (cookie consent) отдельным UI — не в этой итерации (покрываем
|
||||
строкой в политике; при необходимости — отдельная задача).
|
||||
Reference in New Issue
Block a user