Администрирование Ads-Flow
Управление пользователями, компаниями, рекламными тегами, конфигами, iframe-интеграциями и статистикой Ads-Flow.
1. Назначение системы
Ads-Flow — платформа управления рекламным плеером для VAST/VPAID-интеграций. Текущая основная публичная интеграция — автономный out-stream плеер, который подключается на странице площадки через готовый HTML-тег <iframe>.
Администратор создаёт пользователей, компании и общие рекламные теги. Менеджер создаёт конфиги в рамках доступной компании, выбирает разрешённые теги и получает готовый iframe-код. Runtime запрашивает теги по порядку, собирает показатели и сохраняет диагностические события.
https://player.ads-flow.net/outstream/pub_xxxxx/ не является полноценной интеграцией. Этот URL предназначен для атрибута src iframe на странице площадки, где плеер может получить referrer и реальное окружение показа.2. Роли и доступы
Admin— видит всех пользователей, все компании, все теги, все конфиги и всю доступную статистику. Может создавать и редактировать Campaigns и Tags, назначать ответственного manager-а и включать/выключать сущности.Manager— работает только с компаниями, в которых он указан. Создаёт и редактирует собственные конфиги, выбирает только теги выбранной компании и видит статистику своих конфигов.Publisher page— внешняя страница, на которой размещён сгенерированный iframe. Публичная сторона не получает VAST URL напрямую: интеграция использует public key конфига.
3. Связи Campaign → Tag → Config
Основная иерархия нужна для разделения доступа, повторного использования тегов и корректной статистики.
Campaignобъединяет managers, доступные рекламные теги и конфиги одной компании или рабочего направления.AdTagхранит имя, описание и шаблон VAST URL. Один тег может быть разрешён нескольким Campaigns.PlayerConfigпринадлежит ровно одной Campaign и имеет одного ответственного owner-а.PlayerConfigTag— стабильная связь конфига с тегом. Она хранит порядок тега в очереди. Перетаскивание меняет только порядок, но не идентификатор связи, поэтому статистика остаётся привязана к тому же тегу.
4. Users
Раздел Users доступен администратору и используется для создания учётных записей Admin и Manager.
Username / Name / Email— данные пользователя.Role— роль Admin или Manager.Active— возможность входа и работы в интерфейсе.- После создания Manager его необходимо добавить хотя бы в одну Campaign, иначе он не сможет создать конфиг с доступными тегами.
5. Campaigns
Campaign представляет компанию, команду или отдельное направление работы. Раздел поддерживает фильтры All, Active и Disabled; по умолчанию открывается Active.
Name— уникальное название компании.Description— внутреннее описание.Managers / admins— множественный выбор пользователей, которые относятся к Campaign.Active— разрешает публичную работу конфигов Campaign. При отключении Campaign её public iframe-конфиги перестают обслуживаться, но индивидуальные статусы конфигов не перезаписываются.Statistics— общая статистика Campaign с вкладками General, Configs и Tags.
6. Tags
Раздел Tags доступен администратору. Тег создаётся один раз и затем может использоваться в нескольких конфигах и компаниях.
Name— понятное название источника рекламы.Campaigns— компании, которым разрешено использовать тег.VAST URL template— HTTPS URL рекламного тега. Поддерживается runtime-макрос{referrer}.Description— внутренние комментарии.Active— выключенный тег исключается из очередей всех конфигов, даже если связь с конфигом сохранена.
https://ad.example.com/vast?domain={referrer}
Тег без макроса также поддерживается. В этом случае URL запрашивается как сохранён, а referrer всё равно передаётся в статистический контекст Ads-Flow.
7. Player Configs
Player Config — отдельная публичная интеграция. Рекомендуемая модель: один Config для одного publisher-а или одной конкретной площадки, чтобы настройки, public key и статистика не смешивались.
Name— внутреннее имя конфига.Campaign— компания, которой принадлежит конфиг.Manager— ответственный owner. Admin выбирает его из managers выбранной Campaign; для Manager текущий пользователь назначается автоматически.Description— назначение интеграции или площадка.Tags— упорядоченная очередь активных тегов. Строки можно перетаскивать. Один Tag выбирается только один раз.Public key— внешний ключ видаpub_xxxxx. Генерируется автоматически и не раскрывает внутренний numeric ID.Width / Height— размеры и пропорции генерируемого iframe.Active— включает public runtime этого конфига.Autoplay— разрешает автоматический старт после достижения требуемой видимости iframe.Muted— начальная громкость 0. Для autoplay наиболее совместимый вариант — Autoplay ON и Muted ON.
8. Публичный iframe
В списке Player Configs кнопка Iframe копирует готовый однострочный HTML. Его нужно вставить в рекламное место на странице publisher-а.
<iframe src="https://player.ads-flow.net/outstream/pub_xxxxx/" title="Ads-Flow out-stream advertisement" width="640" height="360" allow="autoplay; fullscreen" referrerpolicy="strict-origin-when-cross-origin" scrolling="no" frameborder="0" style="display:block;width:100%;max-width:640px;height:auto;aspect-ratio:640/360;border:0;overflow:hidden;background:transparent;position:relative;z-index:2147483647;pointer-events:auto;"></iframe>
srcсодержит public key и загружает автономный runtime.allow="autoplay; fullscreen"разрешает необходимые возможности вложенной странице.width / heightзадают intrinsic-размер.width:100%позволяет уменьшать iframe до ширины родительского контейнера.max-widthограничивает рост значением Width из Config.aspect-ratioсохраняет пропорции Width / Height.
9. Последовательность тегов и внутренние ad pods
При нескольких тегах runtime последовательно проходит все активные Tags конфига в сохранённом порядке. Это не классический waterfall, который останавливается после первого fill.
- Плеер отправляет отдельный AdsRequest для первого Tag.
- Если Tag возвращает no-fill или ошибку, плеер переходит к следующему.
- Если Tag возвращает рекламу, все Ads из внутреннего pod этого Tag воспроизводятся полностью.
- После завершения успешного Tag плеер всё равно переходит к следующему Tag конфига.
- Общая playback session заканчивается только после обработки последнего Tag.
События tag_request, tag_filled, tag_completed и tag_failed позволяют видеть результат каждой позиции.
10. Referrer и макрос {referrer}
В Ads-Flow referrer означает домен страницы размещения. Значение нормализуется до hostname без схемы, пути, query string и порта: https://news.example.com/article/1 → news.example.com.
- Основной источник —
document.referrerвнутри iframe. - Дополнительный источник — HTTP Referer первоначального запроса iframe.
- Для диагностики возможно явно передать
?referrer=publisher.example. - Backend подставляет значение только при формировании конкретного VAST Wrapper; шаблон в БД не изменяется.
- Если Tag содержит
{referrer}, но домен получить не удалось, рекламный запрос для этого URL не выполняется.
Referrer-Policy: no-referrer на стороне publisher-а может скрыть значение. Для штатной работы макроса площадка должна разрешать передачу хотя бы origin.11. Разделы статистики
Config Statistics → General— несколько показателей одного конфига на одном графике и в таблице.Config Statistics → Tags— один выбранный показатель с разбивкой по тегам конфига.Campaign Statistics → General— общие итоги доступных конфигов Campaign.Campaign Statistics → Configs— один показатель с разбивкой по конфигам.Campaign Statistics → Tags— один показатель с разбивкой по тегам всей Campaign.Stats Summary— сводная административная страница. Её текущий интерфейс остаётся отдельным от publisher-статистики.Raw Events— диагностический журнал всех runtime, server и VAST Wrapper событий.
На вкладках с несколькими сущностями чипсы работают так: без выбранных чипсов показываются все сущности; после выбора — только выбранные; после снятия всех снова отображаются все. Для chart и table можно выбирать отдельную группировку по часу или по дню.
12. Publisher-метрики
Requests— количество реальных попыток запросить тег: событиеtag_request. Один запуск с тремя тегами даёт три Requests.Filled Requests— количество Tag requests, которые дали хотя бы один impression:tag_filled. Для внутреннего pod из нескольких Ads считается один Filled Request.Impressions— фактические рекламные показы:tag_impression.Starts— начало воспроизведения Ads.First Quartile / Midpoint / Third Quartile— достижение 25%, 50% и 75% длительности ролика.Completes— ролики, дошедшие до полного завершения.Clicks— переходы по click-through рекламы.Skips— пропуски рекламы, если creative разрешает skip.No Fill— неуспешные tag requests с кодами 303 или 1009.Errors— другие ошибки тега, например 403 для несовместимого media asset.
Fill Rate = Filled Requests / Requests × 100.CTR = Clicks / Impressions × 100.Completion Rate = Completes / Starts × 100.Error Rate = Errors / Requests × 100.No Fill Rate = No Fill / Requests × 100.
13. Raw events и hourly aggregates
Каждое событие сначала записывается в PlayerEvent. Завершённые дни агрегируются по часам в PlayerEventHourlyAggregate. Обе таблицы используют вертикальную event-модель: имя события хранится в поле event, а количество агрегата — в count.
Статистические страницы читают непересекающиеся диапазоны: свежие календарные дни из raw events, более старые — из hourly aggregates. Это предотвращает удвоение.
python manage.py verify_publisher_stats --date YYYY-MM-DD --config-id CONFIG_ID --strict
14. Диагностика и типичные результаты
303— Wrapper chain не вернул объявление; учитывается как No Fill конкретного тега.1009— ответ не содержит валидных Ads; учитывается как No Fill.403— linear assets найдены, но не подошли возможностям плеера; учитывается как Error.- Предупреждения браузера про partitioned cookies, fingerprinting protection или deprecated
initMouseEvent()могут исходить из Google IMA и не всегда означают поломку Ads-Flow. - Если iframe не загружается, проверить CSP площадки:
frame-srcдолжен разрешатьplayer.ads-flow.net. - Если ролик виден, но не кликается, проверить, не перекрывает ли iframe прозрачный слой родительской страницы и не отключены ли pointer events.
15. Рекомендуемый рабочий порядок
- Создать или проверить учётную запись Manager.
- Создать Campaign и назначить managers/admins.
- Создать Tags, указать VAST URL templates и доступные Campaigns.
- Создать Player Config, выбрать Campaign, owner и порядок Tags.
- Настроить Width, Height, Autoplay и Muted.
- Скопировать кнопку Iframe и передать код площадке.
- Проверить referrer, tag sequence и click-through на странице publisher-а.
- Проверить Config Statistics, Tags tab и Raw Events.
- После появления трафика сравнивать показатели с advertiser по Requests, Impressions, Completes, Clicks, No Fill и Errors.