Настройки и уведомления
Страница /admin/settings разделена на четыре вкладки: General (Общие), Backups (Бэкапы), Cron log (Лог cron) и Notifications (Уведомления).
General — хранение данных
Заголовок раздела «General — хранение данных»Вкладка General содержит настройку срока хранения данных. Четыре числовых поля задают, сколько дней каждая таблица статистики хранит данные, прежде чем партиции будут удалены командой partitions:rotate. Изменения вступают в силу при следующем ежедневном запуске этой команды; подробнее см. Cron и обслуживание.
| Ключ настройки | Таблица | По умолчанию | Диапазон |
|---|---|---|---|
retention_clicks_days | stats.clicks | 365 дней | 1–3650 |
retention_pixel_events_days | stats.pixel_events | 90 дней | 1–3650 |
retention_fingerprints_days | stats.visitors_fingerprints | 30 дней | 1–365 |
retention_auth_events_days | core.auth_events | 180 дней | 30–3650 |
Значения сохраняются в core.settings (хранилище ключ/значение). Если для ключа нет строки, partitions:rotate использует значение по умолчанию во время ротации.
Backups (Бэкапы)
Заголовок раздела «Backups (Бэкапы)»Вкладка Backups показывает перечень файлов дампов pg_dump --format=custom, хранящихся в /app/var/backups/ внутри контейнера app. Сводная строка показывает количество, общий размер и таймстамп последнего файла.
Действия, доступные в UI:
- New backup — запускает
POST /admin/settings/backups, который немедленно выполняетpg_dumpи обновляет список. Кнопка заблокирована, пока форма отправляется. - Download —
GET /admin/settings/backups/{name}/download— стримит файл дампа в браузер. - Delete —
POST /admin/settings/backups/{name}/delete— удаляет один файл дампа (с диалогом подтверждения).
Автоматический ежедневный бэкап выполняется cron-задачей db:backup в 01:00 UTC и хранит дампы за последние 14 дней, автоматически удаляя более старые файлы. Команды бэкапа и восстановления через CLI см. в Режимах развёртывания.
Cron log (Лог cron)
Заголовок раздела «Cron log (Лог cron)»Вкладка Cron log отображает журнал core.cron_runs, который автоматически заполняется JournaledApplication при каждом вызове bin/console.
Вкладка показывает два представления:
- Последний запуск по каждой команде — по одной строке на имя команды, с самым свежим
started_at, давностью, длительностью в миллисекундах и бейджем кода выхода (ok/exit N/running). - Последние 50 запусков — свёрнутый список
<details>из 50 самых свежих запусков по всем командам, с разворачиваемым прямо на месте хвостом stdout (до 600 символов).
Полное расписание cron и описание каждой команды см. в Cron и обслуживание.
Notifications (Уведомления)
Заголовок раздела «Notifications (Уведомления)»Вкладка Notifications настраивает Telegram-оповещения, отправляемые cron-задачей telegram:alerts и связанными с ней задачами.
Учётные данные Telegram
Заголовок раздела «Учётные данные Telegram»Токен бота и chat ID читаются из переменных окружения TELEGRAM_BOT_TOKEN и TELEGRAM_CHAT_ID. Вкладка показывает бейдж configured / not configured в зависимости от того, заданы ли оба значения. Кнопка Send test (POST /admin/settings/notifications/test) отправляет простое тестовое сообщение и сообщает об успехе или неудаче — кнопка заблокирована, когда Telegram не настроен.
Типы уведомлений
Заголовок раздела «Типы уведомлений»Есть четыре типа уведомлений, у каждого — переключатель включения и редактируемый шаблон сообщения. Очистка поля шаблона и сохранение восстанавливает значение по умолчанию из реестра. Шаблоны используют Telegram HTML (разрешены теги <b>, <code>); значения макросов экранируются как HTML при подстановке.
Ключи настроек следуют шаблону notif_{type}_enabled, notif_{type}_template и (где применимо) notif_{type}_sources.
ai_click — AI-клик
Заголовок раздела «ai_click — AI-клик»Метка: AI click — посетитель, пришедший из AI/поискового источника и затем кликнувший
Есть Sources: да
Срабатывает, когда реферер клика классифицирован как AI-ассистент или поисковик. Мультивыбор Sources (чекбоксы) позволяет ограничить оповещения конкретными движками; по умолчанию chatgpt и google.
Доступные макросы:
| Макрос | Описание |
|---|---|
{emoji} | Эмодзи источника (🤖 AI / 🔍 поиск) |
{source} | Ключ движка (например, google, chatgpt) |
{campaign} | Slug кампании |
{route} | лендинг → кнопка · СТРАНА · устройство (или «direct») |
{offer_url} | URL оффера-назначения (обрезанный) |
{country} | Код страны ISO-2 |
{device} | Тип устройства |
{click_id} | UUID клика |
{app_url} | Базовый URL админки |
ai_pixel — AI-пиксель
Заголовок раздела «ai_pixel — AI-пиксель»Метка: AI pixel — pageview, реферер которого — AI/поисковый источник
Есть Sources: да
Срабатывает, когда реферер события pageview пикселя классифицирован как AI-ассистент или поисковик.
Доступные макросы:
| Макрос | Описание |
|---|---|
{emoji} | Эмодзи источника (🤖 AI / 🔍 поиск) |
{source} | Ключ движка (например, google, chatgpt) |
{event} | Имя события пикселя (например, pageview) |
{page_url} | URL страницы (обрезанный) |
{route} | СТРАНА · устройство (или «unknown») |
{visitor_uuid} | UUID посетителя (первые 8 символов) |
{fp_js} | FingerprintJS id (первые 10 символов) |
{domain} | Хост страницы (url-encoded, для ссылки в админке) |
{country} | Код страны ISO-2 |
{device} | Тип устройства |
{app_url} | Базовый URL админки |
conv_click — Конверсия, атрибутированная клику
Заголовок раздела «conv_click — Конверсия, атрибутированная клику»Метка: Conversion — постбэк, атрибутированный клику
Есть Sources: нет
Срабатывает, когда получен постбэк с валидным subid, который сопоставляется с кликом.
Доступные макросы:
| Макрос | Описание |
|---|---|
{offer_name} | Название оффера |
{status} | Статус конверсии |
{payout} | Сумма выплаты |
{route} | лендинг → кнопка · СТРАНА · устройство |
{source} | Источник входа (ключ движка, хост или «direct») |
{player_id} | Внешний/player id (может быть пустым) |
{age} | Время с момента клика (например, 5m, 2h) |
{country} | Код страны ISO-2 |
{device} | Тип устройства |
{click_id} | UUID клика |
{app_url} | Базовый URL админки |
conv_ping — Пинг кампании
Заголовок раздела «conv_ping — Пинг кампании»Метка: Campaign ping — постбэк по токену кампании без click id
Есть Sources: нет
Срабатывает, когда получен постбэк по catch-all токену уровня кампании, но без subid, поэтому конверсию нельзя атрибутировать конкретному клику.
Доступные макросы:
| Макрос | Описание |
|---|---|
{campaign} | Название кампании |
{slug} | Slug кампании |
{status} | Статус конверсии |
{player_id} | Внешний/player id (может быть пустым) |
{ip} | IP источника |
{payout} | Сумма выплаты |
{app_url} | Базовый URL админки |
Sources (Источники)
Заголовок раздела «Sources (Источники)»Мультивыбор Sources (показывается для ai_click и ai_pixel) перечисляет все движки, зарегистрированные в SearchEngine::ENGINES. Полный список в порядке отображения:
chatgpt, perplexity, claude, gemini, copilot, google, bing, baidu, yandex, duckduckgo, yahoo, naver, ecosia, brave, qwant, seznam, startpage
Выбранные ключи движков сохраняются как JSON-массив в core.settings под ключом notif_{type}_sources.