← все проекты

ИИ-метрика

Веб-аналитика, которую читают ИИ-агенты. Документы: E:/Проекты для Гитхаба/ИИ-метрика/docs

repo: E:/Проекты для Гитхаба/ИИ-метрикаdocs: E:/Проекты для Гитхаба/ИИ-метрика/docsпамять: ai-metrika-project
ревьюS1 · Ядро: сборщик, приёмник, хранилище, MCP25/25

Цель: События с сайтов лежат в ClickHouse, по организациям и сайтам, со смысловыми блоками; агент видит их через MCP

↑ Ядро: сборщик, приёмник, очередь, ClickHouse, API и MCP
Репозиторий E:/Проекты для Гитхаба/ИИ-метрика, коммиты 874661b..d53afdc. Стенд cfru /opt/ai-metrika-dev (127.0.0.1).
✓ 24/24 экзамена, 19/19 регрессионных, 3 круга ОТК (~75 находок закрыто). Сборщик 10,8 КБ сжатый. Масштаб: 5 млн событий, отчёты 18–141 мс в ClickHouse.
feature
С1.01 просмотр, клики, прокрутка, блоки на экране, итог просмотра
✓ exams С1.01 ok
acceptance
С1.02 клик несёт имя блока и текст кнопки
✓ exams С1.02 ok; регресс: div-каша, блоки после SPA-перехода
acceptance
С1.03 злой и мёртвый клик
✓ exams С1.03 ok; регресс: клик с наведением не колебание
acceptance
С1.04 формы без значений, брошенная форма
✓ exams С1.04 ok; регресс: выделение в поле, бросок при скрытой вкладке, почта/телефон/поиск в адресе
acceptance
С1.05 ошибки JS, промис, картинка, запрос 500
✓ exams С1.05 ok
acceptance
С1.06 выделение и копирование с блоком
✓ exams С1.06 ok
acceptance
С1.07 курсор с прореживанием, колебание
✓ exams С1.07 ok
acceptance
С1.08 устройство, источник, UTM, клик-метки
✓ exams С1.08 ok; регресс: источник визита на второй странице SPA
acceptance
С1.09 id Метрики и GA
✓ exams С1.09 ok; регресс: без согласия не уходят
acceptance
С1.10 посетитель и сессия 30 минут
✓ exams С1.10 ok; регресс: простой на открытой странице, склейка alias
acceptance
С1.11 события перед закрытием вкладки
✓ exams С1.11 ok (экзамен правился, Q11 ждёт владельца)
acceptance
С1.12 версия страницы: структура да, текст нет
✓ exams С1.12 ok; регресс: цена в заголовке не меняет версию
acceptance
С1.13 сервер лежит: сайт работает
✓ exams С1.13 ok; регресс: моргание сети, отправка возобновляется
acceptance
С1.14 ClickHouse лежит: без потерь и дублей
✓ exams С1.14 ok; регресс: битая пачка уходит в отбраковку, очередь не стоит
acceptance
С1.15 повтор пачки без дублей
✓ exams С1.15 ok
acceptance
С1.16 чужой ключ и домен отклоняются
✓ exams С1.16 ok
acceptance
С1.17 изоляция организаций
✓ exams С1.17 ok
acceptance
С1.18 режим согласия
✓ exams С1.18 ok; регресс: отзыв согласия отвязывает посетителя
acceptance
С1.19 скрипт ≤ 30 КБ
✓ exams С1.19 ok: 10 768 байт сжатый
acceptance
С1.20 1 000 событий/с 30 с без потерь
✓ exams С1.20 ok: 30 000 из 30 000
acceptance
С1.21 MCP: сайты, обзор, отчёт по странице
✓ exams С1.21 ok
acceptance
С1.22 числа совпадают с засевом
✓ exams С1.22 ok
acceptance
С1.23 период, выборка, мало данных
✓ exams С1.23 ok; список сайтов тоже с метой
acceptance
С1.24 блоки по-человечески
✓ exams С1.24 ok
acceptance
ревьюS2 · Реклама и офферы17/17

Цель: Связка объявление → поведение → заявка → продажа: склейка с Метрикой/GA, UTM и клик-метки, расходы Директа и ВК, ads_report

↑ Реклама: Метрика, Директ, ВК, CRM → ads_report для агента
Репо E:/Проекты для Гитхаба/ИИ-метрика, коммиты 067ba21..d51e9b5. Карта фактов API: docs/SOURCES.md. Живой экзамен: npm run exams:live (токены .env.live).
✓ 35/35 экзаменов, 36/36 регрессионных, 3 круга ОТК. Живой экзамен Fit&Lead 12–18.10: 792 визита, 11 заявок, Директ 28 390 ₽, ВК 2 224 ₽ — сходится с кабинетами до копеек.
feature
С2.01 подключение Метрики с проверкой доступа
✓ exams С2.01 ok; публичная статистика отклоняется
acceptance
С2.02 визиты по дням = итог Метрики
✓ exams С2.02 ok; живой: 792 = 792
acceptance
С2.03 повторная загрузка без дублей, выгрузки удаляются
✓ exams С2.03 ok; список выгрузок на счётчике Fit&Lead пуст
acceptance
С2.04 расход Директа по кабинетам
✓ exams С2.04 ok; живой 28 390,39 vs 28 390,41
acceptance
С2.05 асинхронный отчёт Директа
✓ exams С2.05 ok; ошибка 56 «раз в 10 с» обрабатывается
acceptance
С2.06 ВК с НДС
✓ exams С2.06 ok; живой 2 223,84 vs 2 223,88
acceptance
С2.07 сбой источника не ломает остальные, дни помечены
✓ exams С2.07 ok; регресс: несобранные дни неполные
acceptance
С2.08 ночной сбор по расписанию
✓ exams С2.08 ok; регресс: кривые настройки — отказ запуска; догон
acceptance
С2.09 визит связан с кампанией/объявлением/фразой
✓ exams С2.09 ok; регресс: визиты Директа без связки Метрики, хвост фраз
acceptance
С2.10 заявки без двойного счёта
✓ exams С2.10 ok
acceptance
С2.11 продажи только из CRM
✓ exams С2.11 ok; регресс: история CRM переживает слияние таблицы
acceptance
С2.12 наш посетитель склеен с визитом Метрики
✓ exams С2.12 ok; регресс: заявка «на завтра» не утекает
acceptance
С2.13 ads_report через MCP
✓ exams С2.13 ok; регресс: разрез фраз = разрез кампаний, Мастер кампаний одной строкой
acceptance
С2.14 sources_status
✓ exams С2.14 ok
acceptance
С2.15 живой экзамен на Fit&Lead
✓ exams:live ok 19.10 за 12–18.10
acceptance
С2.16 токены не видны
✓ exams С2.16 ok; токены зашифрованы AES-GCM, ключ CRM только на запись
acceptance
планS3 · Аудитория0/0

Цель: Разрезы, паттерны поведения, демография по сегментам, сравнение периодов

задач нет

планS4 · UX/UI и ИИ-боты0/0

Цель: page_report по блокам, рассказы сессий, запись сессий, ИИ-боты из журнала сервера

задач нет

планS5 · Ловля косяков0/0

Цель: Карточки проблем и тревоги в Телеграм

задач нет

планS6 · Живой сайт0/0

Цель: Решатель, эксперименты, авто-откат

задач нет

планS7 · Продукт для клиентов0/0

Цель: Кабинеты, тарифы, установка в один шаг

задач нет

планS8 · Пилот: лендинг Fit&Lead и СММ Агент0/0

Цель: Сборщик стоит на двух сайтах и копит данные; выкатка только по «да» владельца

задач нет

ревьюS9 · С2а · Сигналы поведения14/14

Цель: Уход к закрытию, поведение в полях формы, метания, правый клик/увеличение/поворот, «читал или пролистал», касания и свайпы; page_report и form_report для агента.

↑ Шесть сигналов поведения в сборщике + отчёты для агента
Решение владельца 20.10: пункты 1–6 (без белого списка кук и записи сессий). Критерии: docs/ACCEPTANCE.md С2а.01–С2а.13, договор: docs/CONTRACT.md «Договор С2а». Экзамены tests/exams/s2a-*.test.mjs.
✓ Шесть сигналов + page_report/form_report. 47/47 экзаменов, 55/55 регрессии, 3 круга ОТК (~35 находок, 3 по приватности). Коммит a4a152b. Ничего не выкатано.
feature
С2а.01 уход к закрытию: курсор за верхний край, не вбок/вниз
✓ exams С2а.01 ok: верхний край — событие с блоком, временем и прокруткой; бок/низ — нет; два ухода за 10 с — одно
acceptance
С2а.02 aim.on(exit_intent) для Живого сайта, ошибка сайта не ломает сборщик
✓ exams С2а.02 ok; регресс: window.aim = {q} после загрузки не затирает API, q.push и отписка работают
acceptance
С2а.03 поле формы: раздумья, время, стирания, вставка, отказ браузера; символов нет
✓ exams С2а.03 ok: раздумья ≥ 800 мс, 2 стирания, вставка, typeMismatch; символов на сервере нет. Регресс: живая проверка формы, маска телефона, фокус от сайта, подсказки адреса
acceptance
С2а.04 брошенная форма называет последнее поле
✓ exams С2а.03–04 ok: form_abandon.last = email
acceptance
С2а.05 метания: 3 смены направления за 10 с; чтение с одним возвратом — не метания
✓ exams С2а.05 ok; регресс: меню-якоря — не метания
acceptance
С2а.06 правый клик с блоком и видом цели
✓ exams С2а.06 ok: image/link/text; регресс: картинка в ссылке — link, иконка в кнопке — кнопка
acceptance
С2а.07 увеличение: щипок и масштаб браузера; смена монитора не увеличение
✓ exams С2а.07 ok: щипок 2, браузер 1,25, монитор — нет; регресс: уменьшение не пишется, автоувеличение iPhone — не щипок
acceptance
С2а.08 поворот телефона; размер окна на компьютере не поворот
✓ exams С2а.08 ok: телефон landscape, окно компьютера — нет
acceptance
С2а.09 слова в видимом тексте блока
✓ exams С2а.09 ok: 120 слов, скрытые не в счёт; регресс: невидимые слайды карусели и свёрнутый ответ не считаются
acceptance
С2а.10 путь пальца (с согласием) и свайпы
✓ exams С2а.10 ok (2 проверки, правка обвязки — Q14): свайп влево в карусели, путь прорежен, до согласия не пишется
acceptance
С2а.11 page_report: прочитали/пролистали, свайпы, сигналы страницы
✓ exams С2а.11 ok: readRate 0,4, skimRate 0,3, свайпы 4, сигналы страницы до единицы; масштаб 1,5 млн событий — 1,0–1,4 с
acceptance
С2а.12 form_report по полям
✓ exams С2а.12 ok: 9 полей до единицы, чужая организация 404; регресс: формы по странице, потолок 50; масштаб — 0,5–1,6 с
acceptance
С2а.13 30 КБ, прежние экзамены и регрессия зелёные
✓ сборщик 14,9 КБ; npm run exams 47/47, npm run regress 55/55, юнит 4/4 (коммит a4a152b)
acceptance
ревьюS10 · В · Выкат: прод на cfru и myvisionagency.ru8/14

Цель: Боевой экземпляр на cfru, сборщик с плашкой согласия на myvisionagency.ru, MCP в Claude Code владельца

↑ Выкат: боевой экземпляр, первый сайт, MCP владельцу
Решение владельца 28.10: Q9 = cfru, первый сайт myvisionagency.ru с плашкой. Критерии docs/ACCEPTANCE.md раздел В, экзамены tests/exams-live/v-prod.test.mjs (npm run exams:prod). Отсчёт: 13/13 красных.
✓ Прод на cfru и сборщик на 239 страницах myvisionagency.ru работают с 28.10. ОТК 3 круга: экзамены 10/13 (3 красных — огрехи экзаменов, Q16), масштаб 30 000 событий за 5,4 с, регресс стенда 46/47 + 55/55 (С2.12 плавающий, файл 11/11 дважды). Ждут владельца: Q16, Q17 (до 17:10 UTC), Q8, Q15, Q18.
feature
В.01 сборщик отдаётся с /aim/t.js (200, JavaScript, ≤ 30 КБ сжатым), настройки сайта: «нужно согласие», выдуманный ключ: 404
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ npm run exams:prod 28.10, последний прогон после круга 2 (e519abd): ok. t.js 200, 14,9 КБ сжатый; /c/<ключ> consent=required; выдуманный ключ 404.
acceptance
В.02 пачка с myvisionagency.ru и www за 60 с в боевом хранилище; пачка с чужого сайта отклонена и не записана
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ npm run exams:prod 28.10, последний прогон после круга 2 (e519abd): ok. Пачки с myvisionagency.ru и www в хранилище; Origin example.com → 403, не записан. Масштаб: 30 000 событий с aitodo за 5,4 с, 2000/2000 ответов 204, p95 186 мс, в хранилище через 2 с.
acceptance
В.03 API и MCP без ключа и с выдуманным ключом: 401; с ключом агента list_sites видит ровно myvisionagency.ru
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ npm run exams:prod 28.10, последний прогон после круга 2 (e519abd): ok. Без ключа и с выдуманным 401 (API и MCP), агент видит 1 сайт myvisionagency.ru.
acceptance
В.04 ClickHouse, Postgres, Redis прода снаружи недоступны; сервис слушает только 127.0.0.1
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ Критерий выполнен: с aitodo порты 8791/8123/9000/5432/6379 закрыты (контроль: 443 открыт, 1 закрыт), в docker у баз портов нет, сервер на 127.0.0.1:8791. Экзамен красный по своей вине: VPN рабочей машины принимает любое соединение, даже порт 1.
⛔ Экзамен проверяет порты с машины с VPN и видит открытым всё подряд; правка экзамена ждёт решения владельца (Q16)
acceptance
В.05 после перезапуска всех контейнеров прода сервис отвечает за 2 минуты сам; событие, принятое без воркера, доходит после его подъёма
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ npm run exams:prod 28.10, последний прогон после круга 2 (e519abd): ok. Все 6 контейнеров unless-stopped, после перезапуска сервис отвечает; событие без воркера дошло после подъёма. Плюс автооткат выката проверен: по запросу и на учебной поломке (сервер падает на старте → откат за 26 с).
acceptance
В.06 прод отделён от стенда: свои контейнеры и тома, лимит памяти и срок журналов у ClickHouse, тестовых баз нет
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ npm run exams:prod 28.10, последний прогон после круга 2 (e519abd): ok. Свои контейнеры и тома ai-metrika_*, лимит CH 1,5 ГБ, logs.xml смонтирован, базы aim_test в проде нет.
acceptance
В.07 ночная копия настроек: задание есть, свежая копия ≤ 26 ч, старше 14 дней нет, из копии читаются те же сайты
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ Задание cron 03:30 стоит, копия 09:50 есть, восстановлена в одноразовый Postgres: тот же сайт, 9 таблиц, 1 ключ. Первая ночная копия — 29.10 03:30 UTC, смотрит проверка по сроку 04.11.
acceptance
В.08 сборщик подключён на всех страницах с Яндекс Метрикой и только на них
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ Сейчас 239 из 239 страниц с Метрикой, на /lab/ и /kp/ 0 (чистый браузер не запрашивает t.js). Экзамен красный по своей вине: засчитывает прощальную пачку предыдущей страницы (Q16).
⛔ Подключение слетит на страницах, которые перепишет контент-машина (сегодня 17:10 и 21:10 UTC), пока нет расписания повторной установки (Q17); правка экзамена — Q16
acceptance
В.09 до ответа на плашку: плашка видна, кук _aim_* нет, путь курсора не уходит, просмотр страницы уходит
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ npm run exams:prod 28.10, последний прогон после круга 2 (e519abd): ok. До ответа плашка видна, кук _aim_* нет, mouse_path не уходит, pageview уходит.
acceptance
В.10 «Разрешить»: плашка не возвращается, кука согласия, путь курсора уходит; «Отказаться»: плашка не возвращается, кук нет, путь курсора не уходит
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ npm run exams:prod 28.10, последний прогон после круга 2 (e519abd): ok. «Разрешить»: _aim_c=1, путь курсора уходит, плашка не возвращается; «Отказаться»: кук нет, путь не уходит. Плюс: потерянная кука при mv_consent=1 восстанавливается.
acceptance
В.11 сайт не сломан: нет новых ошибок скрипта, Метрика грузится, адрес заявок живой, на 375 px плашка не закрывает кнопку формы
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ Критерий выполнен: ошибок скрипта нет, Метрика грузится, приём заявок отвечает JSON; на 375 px окно заявки через обе кнопки — «Записаться» свободна, плашка прячется, сдвигов вёрстки за 6 с 0. Поймана и исправлена настоящая беда: плашка закрывала кнопку в окне заявки. Экзамен красный по своей вине: берёт кнопку из закрытого окна.
⛔ Экзамен ищет кнопку формы вне всплывающего окна, где она на главной живёт; правка экзамена ждёт решения владельца (Q16)
acceptance
В.12 сборщик не задерживает показ: подключение с defer/async, плашка с загрузчиком ≤ 4 КБ сжатыми
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ npm run exams:prod 28.10, последний прогон после круга 2 (e519abd): ok. Подключение с defer, aim-site.js 2,4 КБ сжатый, t.js async.
acceptance
В.13 в Claude Code владельца подключён MCP ИИ-метрики на боевой адрес (остальное — руками, см. вывод)
Экзамен: tests/exams-live/v-prod.test.mjs, прогон npm run exams:prod
✓ MCP ai-metrika в ~/.claude.json (user), Connected. Сквозной визит обычным браузером (webdriver=false) виден агенту: site_overview 1 посетитель / 2 просмотра, top_pages / и /konsalting; визит стёрт. Ждёт ручной проверки владельца с телефона.
acceptance
В РАБОТЕS11 · Проверки по сроку0/1

Цель: Отложенные проверки «сработало ли»

ИИ-метрика: неделя на проде — живые посетители, подключение на месте, копии ротируются
⏱ 04.11 · через 5 дн.
Выкат 28.10 (спринт «В · Выкат»). Проверить: 1) живые посетители: в Claude Code спросить MCP ai-metrika site_overview за 7 дней по myvisionagency.ru, визиты есть, sample > 0; 2) подключение не слетело после генераторов (контент-машина в 21:10 и др., Q17): на cfru выполнить cd /opt/mv-home && comm -3 <(grep -rlF --include=*.html "ym(109681054" . | sort) <(grep -rlF --include=*.html "/assets/aim-site.js" . | sort) | wc -l (должно быть 0, иначе sh /opt/ai-metrika/site/install.sh <публичный ключ из /opt/ai-metrika/tenants.json> и решать Q17); 3) копии: ls -lt /opt/backups/ai-metrika | head; tail -3 /var/log/ai-metrika-backup.log (7 свежих копий); 4) полный прогон: в репо npm run exams:prod; память: docker stats --no-stream | grep ai-metrika-.
check
ревьюS12 · Д · Пульт для людей без ИИ15/15

Цель: Пульт внутри ИИ-метрики: вход по почте, ссылки «только смотреть», обзор, страницы, карта страницы, формы, лента визитов, реклама

↑ Пульт: доступ, данные, вид, масштаб
Решение владельца 28.10 («ок» на пульт). Критерии docs/ACCEPTANCE.md раздел Д, договор docs/CONTRACT.md «Пульт», экзамены tests/exams/d-dashboard.test.mjs.
✓ Пульт на проде https://myvisionagency.ru/aim/ui/ с 28.10: вход по почте, ссылки «только смотреть», обзор, страницы, карта страницы, формы, лента визитов рассказами, реклама; /summary и /visits в API и MCP. Экзамены 13/13, регресс ОТК 13/13, масштаб 1 млн < 2 с, ОТК 3 круга. Ждёт владельца: Q21 порядок источников.
feature
Д.01 Без входа данные пульта недоступны: страница показывает вход, запросы данных получают 401.
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). Без входа /ui/api/* → 401, страница показывает вход.
acceptance
Д.02 Вход по почте и паролю открывает сайты своей организации. Неверный пароль — отказ без подсказки, что именно неверно. После 10 неудачных попыток за 15 минут с одного адреса вход на время закрыт (429). Выход завершает сессию: прежняя кук
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). Неверно → 401 без подсказки; 10 неудач → 429; выход гасит куку. ОТК: лимит атомарный до scrypt (40 параллельных → ≤10 проверок), лимит на почту не закрывает владельца с его устройства — регресс ОТК-Д.1, ОТК-Д2.1, ОТК-Д2.2.
acceptance
Д.03 Ссылка «только смотреть» открывает один сайт без входа: видны все разделы этого сайта, но не другие сайты организации и не управление ссылками. Отозванная или просроченная ссылка не открывает ничего.
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). По ссылке один сайт, без управления; отозванная и просроченная → 401. На проде ссылка для показа перевыпущена, nginx не пишет такие адреса в журнал.
acceptance
Д.04 Владелец в пульте создаёт ссылку (название, срок 7 или 30 дней либо бессрочно), видит список своих ссылок и отзывает любую. По ссылке «только смотреть» создавать и отзывать ссылки нельзя.
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). Ссылки 7/30/бессрочно, список, отзыв; по ссылке создать/отозвать → 403.
acceptance
Д.05 Чужая организация не видит чужих сайтов ни по входу, ни по ссылке: подставленный номер чужого сайта — 404.
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). Чужой сайт по входу и по ссылке → 404 во всех разделах.
acceptance
Д.06 Обзор за период (сегодня, 7, 30 дней или свои даты): люди, визиты, просмотры, отправленные формы, доля визитов с телефона, график по дням в часовом поясе зрителя, источники визитов (реклама, поиск Яндекса, поиск Google, соцсети, другие
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). Числа = засев и API; дни в поясе зрителя (Екатеринбург/Москва); 7 видов источников; устройства. Свои даты в интерфейсе. Календарные дни на летнем времени — регресс ОТК-Д.5. Порядок источников под вопросом Q21.
acceptance
Д.07 Страницы: просмотры, люди, среднее активное время и средняя глубина прокрутки по каждой странице.
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). Время и прокрутка по последнему итогу просмотра (регресс ОТК-Д.3).
acceptance
Д.08 Карта страницы: блоки сверху вниз — в какой доле просмотров блок был на экране, сколько секунд в среднем, доли «прочитали» и «пролистали», клики; сигналы страницы (уход к закрытию, метания, увеличение и др.).
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). Карта страницы = page_report до единицы.
acceptance
Д.09 Формы: начали, отправили, бросили; по полям — заходы, раздумья, стирания и на каком поле бросают чаще всего.
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). Формы = form_report; имена полей по-человечески (Имя, Телефон, Телеграм).
acceptance
Д.10 Лента визитов, новые сверху, по 30 с подгрузкой дальше: откуда пришёл, устройство, страницы по порядку с активным временем и прокруткой, блок, на котором задержался дольше всего, клики, форма (начал, отправил, бросил на поле). Рассказ
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). Лента по 30, курсор без потерь на одинаковом времени, длинный визит не ломает ленту, «дольше всего» без шапки; тот же рассказ в API /visits и MCP visit_stories (регресс ОТК-Д.2, Д.7, Д.8, Д2.6, Д2.7).
acceptance
Д.11 Реклама: при подключённых кабинетах — кампании с расходом, визитами, заявками и ценой заявки (как `ads_report`), состояние подключений; без подключений — понятная заглушка без технических слов.
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). Реклама = ads_report по кампаниям + состояние подключений; без кабинетов — заглушка, без данных — «пока нет данных».
acceptance
Д.12 Пульт работает на телефоне 375 px без горизонтальной прокрутки и на компьютере, светлая и тёмная тема (по настройке системы и переключателем). В интерфейсе нет внутренних терминов (ключи, номера, названия таблиц и событий) и упоминаний
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). 375 px без горизонтальной прокрутки, таблицы карточками, вкладки переносятся, две темы и подписанный переключатель; скриншоты прода проверены глазами.
acceptance
Д.13 Пустые состояния: за период без визитов — «пока нет визитов» с подсказкой, а не нули, ошибки или пустые таблицы.
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Экзамен d-dashboard.test.mjs ok (13/13, 28.10, ревизия 992a334). Пустые состояния во всех разделах, включая рекламу и карту страницы.
acceptance
Д.14 Сайт с 1 млн событий за 30 дней: каждый раздел пульта отвечает быстрее 2 секунд.
Экзамен: tests/exams/d-dashboard.test.mjs (стенд), Д.14 — сценарий масштаба
✓ Сценарий tests/_scale-d.mjs, 1 млн событий на стенде: обзор 1,9 с, страницы 0,7, карта 1,1, формы 0,7, лента 1,5 и 1,3, реклама 0,9 — все < 2 с. После ОТК круг 3 был сбой 500/4,5 с — лента читала весь период 7 раз, исправлено (992a334).
acceptance

Ворклог (места остановки)

28.10.2026, 13:11:39 · Д · Пульт · claude

Пульт ИИ-метрики для людей без ИИ выкачен (myvisionagency.ru/aim/ui/): вход по почте и паролю, ссылки «только смотреть» на сайт, обзор с источниками и днями, страницы, карта страницы по блокам, формы, лента визитов рассказами, реклама с состоянием кабинетов. Агенту те же обзор и лента через API и MCP (site_summary, visit_stories). Владельцу заведён вход, ссылка для показа в Загрузках. Отдельно: репозиторий подключения для техотдела Fit&Lead github.com/Logonchek/ai-metrika-connect (закрытый, Диму не приглашал).

→ Ждём владельца: «ок» на содержимое ai-metrika-connect → пригласить dmitryi698; Q19 домен продукта (без него Fit&Lead ставить некуда, видно домен агентства); Q17 расписание переустановки на страницы сайта; Q21 порядок источников; Q16 правка экзаменов В; Q15 чистка стенда. Дальше: установка на лендинг Fit&Lead, связка CRM по событию lead (scope cut), записи сессий (С4).

28.10.2026, 11:12:15 · В · Выкат · claude

ИИ-метрика выкачена 28.10. Боевой экземпляр на cfru /opt/ai-metrika (6 контейнеров, ~420 МБ), адрес https://myvisionagency.ru/aim/ (nginx-сниппет aim.conf). Сборщик с плашкой согласия на 239 страницах myvisionagency.ru с Метрикой; плашка прячется над формами (окно заявки). MCP ai-metrika подключён в Claude Code владельца, сквозной визит виден агенту. Ночная копия Postgres 03:30, восстановление проверено. Выкат deploy.sh: проверка здоровья, автооткат, блокировка второго запуска (проверено учебной поломкой). ОТК 3 круга: экзамены прода 10/13 (3 красных — огрехи экзаменов, Q16), масштаб 30 000 событий за 5,4 с, регресс стенда 46/47 + 55/55.

→ Ждём владельца: Q17 расписание повторной установки на страницы (контент-машина перепишет блог в 17:10 и 21:10 UTC — подключение там слетит), Q16 правка трёх экзаменов, Q15 чистка стенда, Q8 оформление для Fit&Lead, Q18 Метрика/политика. Владелец: с телефона открыть сайт, «Разрешить», спросить Claude про сегодня (В.13). Проверка по сроку 04.11. Дальше: лендинг Fit&Lead после Q8 или С3 «Аудитория».

20.10.2026, 09:42:08 · S9 · claude

С2а «Сигналы поведения» закрыт локально: уход к закрытию (+ aim.on для Живого сайта), поведение в полях формы без символов, метания, правый клик/увеличение/поворот, читал или пролистал, касания и свайпы; page_report дополнен, новый form_report. 47/47 экзаменов, 55/55 регрессии, 3 круга ОТК.

→ Ждём владельца: Q14 (правка экзамена С2а.10), Q15 (почистить старые засевы масштаба на стенде — из-за них плавают экзамены С2), Q8/Q9 для пилота. Дальше по плану С3 «Аудитория» либо запись сессий (поднять из С4).

19.10.2026, 05:04:33 · S2 · claude

С2 «Реклама» закрыт локально: коннекторы Метрики (Logs API), Директа, VK Рекламы, ads_report объявление→визит→поведение→заявка→продажа, CRM-вебхук. 35/35 экзаменов, 36 регрессионных, 3 круга ОТК; живой экзамен на Fit&Lead сходится с кабинетами.

→ Ждём владельца: Q8 NDA, Q9 сервер (без него пилот не запустить), Q11–Q13. Дальше С3 «Аудитория»: демография по сегментам (Reporting API), гео, паттерны.

16.10.2026, 16:55:44 · S1 · claude

С1 «Ядро» закрыт локально: 24/24 критерия по экзаменам, 19 регрессионных по находкам ОТК, 3 круга ОТК. Нулевой этап (RESEARCH-0.md): пол и возраст по человеку Метрика Logs API и GA4 не отдают, ВК отдаёт макросами в ссылке.

→ Ждём владельца: Q8 NDA Fit&Lead (как оформить пилот), Q9 сервер, Q11 правка экзамена С1.11. Дальше С2 «Реклама» (нужны доступы к Метрике/GA пилотных сайтов) или С3/С4 без доступов.