InfraGuard

Публичная посадочная страница, заявки на демо и теги аналитики

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

Обзор — что охватывает раздел

Помимо консоли, находящейся за входом в систему, у InfraGuard есть публичная часть.

Путь Экран Доступ
/ маркетинговая посадочная страница гости (аутентифицированная сессия перенаправляется на /console)
/demo форма заявки на демо гости
/manual руководство пользователя как гости, так и вошедшие пользователи
/login · /lang/{locale} вход · переключение языка гости

Главная страница консоли находится по адресу /console. Этот перенос отдал / публичной части, не сломав ни имя маршрута (overview), ни существующие закладки.

Посадочная страница собирается отдельным бандлом (front.*). Если поместить её в бандл консоли, каждый посетитель будет скачивать Vue, ECharts, CodeMirror, Konva и xterm (по замерам: около 1,283KB у консоли против 24KB у публичной части). Для маркетинговой страницы первое впечатление и есть скорость загрузки. В _shared-ui вынесен только минимальный общий интерфейс (кнопки-иконки, переключатель языка), чтобы обе стороны использовали одно и то же определение: при копировании одна из сторон со временем разошлась бы с другой.

Публичное руководство

/manual открывается без входа в систему. Тот, кто оценивает продукт, должен иметь возможность прочитать, как он на самом деле эксплуатируется, а публичная документация сама по себе является маркетинговым и SEO-активом. В документах нет ни секретов, ни живых данных.

Заявки на демо

Публичная форма (/demo)

Это приём заявок, а не демо в один клик. Обязательны только имя и рабочий адрес электронной почты; язык, источник перехода и IP записываются рядом.

Эта форма — единственный путь записи для гостей во всём приложении, поэтому она защищена четырьмя способами.

  1. Ловушка (honeypot) — если она заполнена, ничего не сохраняется, но ответ по-прежнему выглядит как успех (никогда не сообщайте об обнаружении).
  2. throttle:8,1 — девятый запрос в течение минуты получает 429.
  3. CSRF-токен.
  4. Серверная проверка по белому списку — status и note доступны только администраторам, поэтому публичная форма не может их задать.

Экран администрирования (Администрирование ▸ Заявки на демо)

/admin/demo-requests управляет входящими: CRUD в модальном окне, а также поиск, фильтры по статусу со счётчиками и постраничная навигация.

Статус Значение
new получена, не обработана
contacted связались
qualified квалифицированная возможность
closed завершена

Поиск экранирует подстановочные знаки LIKE (%, _, \). Без этого ввод одного лишь % совпал бы с каждой строкой.

Теги аналитики (GA4 · GTM · Search Console)

Укажите идентификатор счётчика в .env, и тег появится только в публичной части. Когда значение пусто, <script> не выводится вовсе, поэтому развёртывание по умолчанию не делает ни одного исходящего запроса.

Ключ Значение Назначение
GA_MEASUREMENT_ID G-XXXXXXXXXX gtag.js (GA4)
GTM_CONTAINER_ID GTM-XXXXXXX Google Tag Manager (может работать параллельно)
GOOGLE_SITE_VERIFICATION meta-токен подтверждение прав в Search Console
GA_PRODUCTION_ONLY true (по умолчанию) срабатывать только в продакшене

Никогда не добавляйте их в консоль (layouts/app). URL и заголовки консоли содержат имена хостов, IP-адреса, псевдонимы инстансов и заголовки инцидентов. Отправка этого в стороннюю аналитическую систему противоречит обещанию самостоятельного размещения и суверенитета данных, которое даёт сама посадочная страница, и раскрывает сведения об инфраструктуре клиента.

GA4 не даёт поисковых запросов. Он сообщает канал (органический поиск) и на этом останавливается; сами запросы есть только в Search Console. Именно поэтому meta-тег подтверждения прав выводится независимо от GA4 — подтвердить права можно, вообще не включая GA4. Об отчётах по каждому сайту см. Аналитика посетителей и поиска.

Политика текстов

Цифры доверия на посадочной странице используют только то, что можно посчитать в коде, и они считаются во время отрисовки, а не прописаны вручную (число наборов правил, число проверок, число почтовых/SMS-адаптеров и так далее).

Эта политика выявила настоящую ошибку — проверок было 36, а не 37. И наоборот, наблюдаемые значения не используются никогда: число различных сигнатур составляет 43 за 24h, 67 за 7d и 79 за всё время, поэтому оно менялось бы от визита к визиту и подрывало бы доверие, а не укрепляло его. Поскольку страница публичная, она также никогда не обращается к БД — запрос на каждый визит не нужен, а маркетинговая часть должна пережить шатающуюся базу данных.

Источники данных

Объект Расположение Роль
infr_demo_request по умолчанию (000770) входящие заявки на демо (status, note, locale, source, ip)
config/analytics.php ← .env config единый источник истины для идентификаторов счётчиков и их включения (App\Support\Analytics)
public/brand/ статические файлы логотип и изображения OG

public/brand/ обязательно должен быть в репозитории. Большая часть public/ — сгенерированный вывод (build, hot, storage внесены в gitignore), поэтому это легко упустить, но фирменные материалы не являются выводом Vite: их ничто не собирает, и без коммита логотип и OG-изображение в продакшене отдают 404. Изображение OG должно быть в формате PNG: многие поисковые роботы социальных сетей не отрисовывают предпросмотр в SVG.

Права доступа

Устранение неполадок · Вопросы и ответы

См. также

공개 랜딩 페이지
공개 랜딩 페이지