Техническое задание: Интеграция рекламных систем
Техническое задание: Интеграция рекламных систем
API Яндекса - https://yandex.ru/dev/direct/doc/dg/concepts/about.html
API VK - https://dev.vk.com/method/ads.getAds
Описание: Необходимо реализовать ежедневной импорт статистических данных из рекламных систем. Разработать нужно на Python с использованием Celery, а БД это PG и СH. PG будет использоваться для хранения справочной информации об аккаунтах и кампаниях. Нужно реализовать все этапы включаю обработку oauth авторизации и обновления токена. Для аккаунтов типа агенства, добавить выбор клиента.
Примерная структура финальной таблицы:
Дата
ID компании
Имя компании
ID креатива
Имя креатива
Ссылка посадочной страницы
Показов
Кликов
Расход без ндс
Скрипт, должен запускаться ежедневно, логировать все ошибки и писать в PG финальный статус задачи. Для яндекса обрабатывать ошибки связанные с нехваткой баллов API
За вопросами можно писать сразу в ТГ - markov16
Описание логики:
Выгружаем данные, по всем активным клиентам, которые подключили интеграцию, за предыдущий день, раз день.
Мы используем две ручки
Статистика - https://yandex.ru/dev/direct/doc/reports/reports.html
Данные по обявлениям - https://yandex.ru/dev/direct/doc/ref-v5/ads/get.html
Данные по кампаниям - https://yandex.ru/dev/direct/doc/ref-v5/campaigns/get.html
Основной алгоритм:
Получаем статистику, в разрезе ID сущностей кампаний и объявлений, за вчерашний день по типам отчетов AD_PERFORMANCE_REPORT и REACH_AND_FREQUENCY_PERFORMANCE_REPORT
Дабы не нагружать APi мы справочную информацию о сущностях сохраняем в PG
Если в PG нет ID сущности - идем забирать из соответствующих методов если есть то пропускаем
Основные типы отчетов - AD_PERFORMANCE_REPORT и REACH_AND_FREQUENCY_PERFORMANCE_REPORT их нужно будет вызывать последовательно, так как они отдают разные кампании
По итогу нам нужно получить следующую структуру данных в postgress , названия полей взяты отсюда - https://yandex.ru/dev/direct/doc/reports/fields-list.html
ClientLogin - логин клиента
CampaignType - тип рекламной кампании
Date - дата, день
CampaignId- id рекламной кампании
AdId - id креатива
Device - девайс
ImpressionReach
Impressions
Clicks
Cost (без ндс)
Из справочников мы пока тянем минимальные данные, но в дальнейшем будем расширять. Пока тянем
По кампаниям - только название компании
По объявлениям - название и ссылку на страницу Href
VK
С VK другая логика:
Сначала получаем все активные объвления - https://dev.vk.com/method/ads.getAds
По ID обявления получаем статистику за вчера - https://dev.vk.com/method/ads.getStatistics
По кампании получаем данные по кампании (пока имя) - https://dev.vk.com/method/ads.getCampaigns и запысвыаем в PG
По Креативам также записываем их имя в PG
И Яндекс и ВК записываются в одну финальную таблицу со следующей структурой
Источник
Дата
Id кампании
id объявления
utm (объект содержит utm метки которые мы получаем из параметров объявлений)
Reach
Impressions
Clicks
Cost (без ндс)