f2bfe3f1da
Ни одну нельзя было увидеть без настоящего прогона: часть закрыта песочницей Яндекса, часть — швами между кусками, которые по отдельности покрыты тестами. 1. Слепок креативов уходил с SelectionCriteria пустым МАССИВОМ. Живой Яндекс отвечает отказом 8000 «SelectionCriteria cannot contain an array», портал не может снять слепок, задание роботу не выдаётся, клиент видит вечное «готовим картинки». В JSON нужен пустой ОБЪЕКТ. Песочница до этой проверки не доходила — отвергала запрос раньше, на входе. 2. Отказы Яндекса ПО ПОЗИЦИИ внутри ответа глотались молча. Запрос успешен, а нужного Id в позиции нет — вместо него Errors с человеческим объяснением. Портал падал ошибкой PHP «Undefined array key Id», ни клиенту, ни в журнал не попадало ни слова из ответа Яндекса. Теперь слова Яндекса выходят наружу — именно это и позволило найти пункт 3. 3. В условии ретаргетинга не передавался MembershipLifeSpan — срок хранения человека в сегменте. Живой Яндекс отказывает «Required field: Not specified time for goal or segment», и следом «Object not found»: довод негоден целиком, запуск встаёт. Берём audience_days кампании, границы Яндекса 1..540. 4. Робот не отдавал набор Яндексу: заливал файлы, нажимал «Создать» и уходил. Оказалось, «набор» в кабинете и «креатив» в creatives.get — разные вещи: пока набор не отмечен галочкой и не нажато «Добавить выбранные», Яндекс креативы не регистрирует. Замер: 14 залитых картинок были невидимы для creatives.get, после добавления в ЧЕРНОВИК формы счётчик прыгнул 18 -> 32 в ту же секунду. Объявление при этом не сохраняется, «Сохранить изменения» робот по-прежнему не трогает никогда. 5. Гонка при заливке. Три живых прогона подряд из 15 картинок доносили 14, и каждый раз пропадала ДРУГАЯ: 480x320, потом 300x600, потом 336x280. Замер объяснил: кнопка «Создать» разблокируется на 4-й секунде, когда принято 11 файлов из 15, остальные дозагружаются к 7-й. Робот жал сразу по разблокировке. Ждём теперь по строкам принятых файлов и по исчезновению слова «Загружается». Первая попытка этой починки НЕ РАБОТАЛА и выглядела рабочей: сторож считал размеры в окне, не заметив постоянного фильтра из тех же 15 размеров вверху. Поймано по тому, что прогон занял ровно столько же секунд, сколько до починки. Отсюда тире в признаке приёма — фильтр его не содержит. Каждая починка закрыта тестом, который сначала падал на своей поломке. Прежние тесты проверяли разбор ОТВЕТОВ и путь ДО «Создать» — форму запросов и то, что после, не смотрел никто. Робот 84 из 84, реклама портала 42 из 42. Проверено живьём на боевом: задание роботу отработало со статусом done, опознано 15 креативов из 15. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>