0548fc0d8f
Хвосты портала П1-П8 из приёмочного листа v12. П1 обрыв постановки задания больше не даёт клиенту голый 500 — 503 с человеческим текстом и записью в журнал. Таймаут у HTTP-клиента Laravel уже был, эта половина находки не подтвердилась. П2 и П6 роботу отдаются только баннеры без номера креатива — тот же список сопоставляется при отчёте. Раньше стороны расходились и опознание падало на безупречной работе робота, плодя дубли в кабинете. Плюс постраничный обход описи креативов: слепок обрывался на первой странице. П3 слепок «до» снимается при выдаче задания, а не при постановке, и в той же транзакции, что и перевод в работу. Два задания в очереди получали одинаковый слепок, второе падало всегда. Постановка перестала зависеть от живости Яндекса. П4 перед созданием объявлений сверяется настоящий размер каждого креатива одним запросом. Не сошлось или креатива нет — запуск не идёт. П5 уникальный индекс uq_ad_campaign_banner_slot, запись v9.09 в CHANGELOG схемы, rls-reviewer GO. П7 замок на правку расширен на сегмент Аудиторий — он создаётся раньше кампании. Смежная находка: перезаливка картинки теперь обнуляет номер креатива. П8 и Р-х5 файл отдаётся под настоящим расширением и типом содержимого, имя от номера баннера; робот берёт расширение из ответа портала. Портал 287/287, робот 43/43. Денежных выходов снятия заморозки по-прежнему четыре. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>