ADR

ADR: Интеграция Яндекс.Директ → Кампании ЭкоСпроса

ADR: Интеграция Яндекс.Директ → Кампании ЭкоСпроса

Status: Proposed Date: 2026-06-26 Context: В аккаунте ecoyarco@yandex.ru 19 кампаний (15 в архиве, 3 черновика B2B/B2C/RET, 1 ЕПК). Черновики уже имеют структуру групп объявлений. Необходимо привязать офферы ЭкоСпроса к кампаниям Директа.

Decision

1. Сущность DirectCampaign в domain.ts

Расширяем Campaign — добавляем поля для привязки к Яндекс.Директ:

export interface DirectCampaign {
  id: string;                    // Внутренний ID ЭкоСпроса
  directCampaignId: number;      // ID кампании в Яндекс.Директе
  name: string;
  status: 'draft' | 'active' | 'paused' | 'archived' | 'moderation';
  type: 'TEXT_CAMPAIGN';
  state: 'OFF' | 'ON' | 'ARCHIVED';
  offerIds: string[];            // Какие офферы в этой кампании
  adGroupIds: number[];          // Группы объявлений в Директе
  budgetPerDay?: number;
  startDate?: string;
  stats?: {
    impressions: number;
    clicks: number;
    spend: number;
    lastSync: string;
  };
}

2. Маппинг Оффер → Кампания

Мета-продуктОфферыКампанияГруппы
Станок для начинающихO_a17c, O_a409B2CNovichkiStart, PremiumStart
Инструмент для регулярного творчестваO_6318, O_0333B2COpytnye
Идеальный подарокO_206b, O_5182, O_6ccfB2CPodarki
Все офферывсеB2BПо сегментам B2B
Все офферывсеRETБрошенные корзины, Просмотр

3. API слой

Создать /apps/web/src/lib/directBridge.ts — обёртка над API Яндекс.Директа v5:

  • getCampaigns() — список кампаний
  • getAds(campaignId) — объявления по кампании
  • getKeywords(adGroupIds) — ключевые слова
  • updateCampaign(campaign) — обновление
  • getStats(campaignIds) — статистика через /stat/reports

4. UI — страница /campaigns

Превращаем mock → live:

  • Отображение реальных кампаний из Директа
  • Фильтр по статусу (архив / черновик / активные)
  • Карточка кампании: статистика, офферы, статус
  • Привязка офферов через модалку

5. Отложено (Phase 2)

  • Создание кампаний из интерфейса ЭкоСпроса
  • Автоматическое обновление объявлений из marketing_assets
  • Динамическая синхронизация оффер → объявление → лендинг

Consequences

  • + Единая точка входа для управления всей рекламой
  • + Офферы и кампании в одной системе → понятно, что работает
  • + Возможность анализировать эффективность каждого оффера
  • Требуется OAuth-токен и его поддержка в актуальности
  • API Яндекс.Директа имеет ограничения (rate-limit, поля)

References

  • docs/reports/direct-campaigns-status-2026-06-26.md — актуальный список
  • apps/web/src/types/domain.ts — типы
  • apps/web/src/data/mockCampaigns.ts — существующие mock-данные
  • API v5 Яндекс.Директа