Files
portal/docs/superpowers
Дмитрий 9f3be090e4 fix(реклама Яндекс): деньги морозим ДО первого обращения к Директу
Приёмка блока Яндекса 03.08.2026 вскрыла неверный порядок в запуске кампании.
Заморозка стояла последней — уже после создания в Директе кампании, группы,
объявлений, отправки на модерацию и ВКЛЮЧЕНИЯ показа. Не хватило денег: клиент
получал отказ, кампания в портале оставалась черновиком, а в Яндексе крутилась
включённая реклама, за которую платила Лидерра.

Правильный порядок в проекте был известен — у кнопки «Возобновить» деньги
резервируются до обращения к Директу, и там об этом написано прямо. В запуске
он просто не был применён.

Сначала сторож, потом починка. CampaignLauncherTest → «не хватает денег — в
Директе ничего не создано»: кошелёк 100 руб, смета 12000 руб. На прежнем коде
упал с «записано неожиданное обращение». Держит именно ПОРЯДОК: пока деньги не
заморожены, Директ можно только читать — ни одного вызова с методом кроме get.
Проверка «деньги не списались» тут бесполезна, она зелёная и при поломке.

Новый порядок в CampaignLauncher::run:
1. годность аудитории — может ответить «зайдите позже», деньги ещё не тронуты;
2. сверка настоящих размеров креативов — это чтение, метод get;
3. заморозка денег;
4. и только теперь все записи в Директ.

Заодно закрылась вторая беда: сверка размеров стояла после создания кампании и
группы, и несовпадение размера оставляло в кабинете кампанию-сироту.

Сторож принят вырезанием: старый порядок — красный, починка — зелёный.
362 теста блока рекламы зелёные, статанализ 0 ошибок.

Отчёт приёмки с остальными находками — в docs/superpowers/runbooks/.
Боевого не касался: кошелёк и кампании остались как были.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 19:42:47 +03:00
..
@
2026-08-03 00:02:38 +03:00