docs: разбор трёх сбойных заливок картинок — вреда нет, хвост №4 закрыт
Accessibility (Pa11y live) / a11y (push) Has been cancelled

Замер живой, боевая база и кабинет Яндекса, только чтение.

Что нашлось:
- три задания upload 29.07 (16:16/16:40/16:49), каждое спотыкалось
  на РАЗНОЙ картинке: 160x600, 300x600, 336x280;
- обе причины уже вылечены: спешка робота при «Создать» и пересъёмка
  слепка «до» при повторе;
- улика роста мусора — snapshot_before пух 466 -> 829 -> 1192 знака;
- вреда нет: все 15 из 15 баннеров имеют креатив и объявление;
- мусор в кабинете посчитан: 73 картинки, 32 заняты, 41 свободна.
  Владелец решил не чистить — работа по Яндексу закрыта.

Три новые ловушки в промт:
- удалить креатив программно НЕЛЬЗЯ: Creatives умеет только add/get;
- SelectionCriteria — пустой объект, не массив (отказ 8000);
- в кабинете 4 кампании и 33 объявления, «лишнее» считать по всем,
  иначе выходит 58 вместо настоящих 41.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-08-01 23:31:12 +03:00
parent 495ee62a4a
commit fe5ee09cf3
@@ -98,11 +98,37 @@
«Rejected at moderation.» от 30.07 никуда не делись — новые сообщения просто легли поверх.
Вреда нет, кроме вида. Убрать — правка боевой базы, только с «да» владельца.
### 🟡 №4. Три сбойных задания на заливку картинок
### №4. Три сбойных задания на заливку картинок — **разобран 01.08.2026, вреда нет**
В боевой базе висят `upload` со статусом `failed` от 29.07 («после загрузки не появился
креатив размера …»). К разведке отношения не имеют, показам не мешают. Разбирать —
отдельная работа, не срочная.
Задания `id 1, 2, 3`, все `kind=upload`, кампания 6, подряд 29.07 в 16:16 / 16:40 / 16:49.
Каждое споткнулось на **разной** картинке: 160×600, потом 300×600, потом 336×280.
**Две причины, обе уже вылечены в коде и на бою:**
1. Робот жал «Создать» раньше, чем Яндекс принял все пятнадцать файлов — кто не успел,
терялся, и каждый раз это был другой (`bots/yandex-creatives/src/cabinet.js` §486-492).
2. При повторе портал переснимал слепок «до» заново, а там уже были видны картинки
прошлого захода → опознание падало по кругу и плодило дубли. Лечение —
`CreativeJobService::bannersToUpload()` берёт **только баннеры без номера креатива**.
🔑 **Улика роста мусора прямо в базе:** `snapshot_before` у трёх заданий рос
466 → 829 → 1192 знака. Слепок пухнет ⇒ в кабинете прибавляются лишние картинки.
Датчик на будущее: сравнивать длину слепков соседних попыток одного задания.
**Вреда нет, замер живой:** у кампании 6 все **15 из 15** баннеров имеют и номер креатива,
и номер объявления, «без креатива = 0». Сами три строки `failed` — просто журнал,
робот их не берёт. **Оставлены намеренно как история** (решение владельца 01.08.2026).
**Мусор в кабинете — считан и оставлен.** Всего картинок **73**, из них **32 заняты**
живыми объявлениями, **41 ни к чему не привязана**. Владелец решил не чистить: работа
по Яндексу закрыта, новые дубли не плодятся.
🔴 **Удалить картинку программно НЕЛЬЗЯ в принципе.** Наши картинки — «креативы»
(`v5/creatives`, тип `HTML5_CREATIVE`), а сервис `Creatives` у Яндекса умеет только
`add` и `get`. Метода удаления нет ни у нас, ни в API. Чистка возможна **только руками
в кабинете** через браузер, а для этого нужен профиль с живым входом (локальный занят
открытым Edge, второй — у робота на виртуалке, и его занятие роняет разведку).
Следующей смене: не искать «программный способ», его не существует.
### 🟡 №5. Телеграм в main, но на бой не выкачен
@@ -142,6 +168,16 @@
🪤 **Логин кабинета** — не тот, под которым ходит программный доступ. Конкретные учётки
в файлы не пишем; смотреть `2026-08-01-PROMT-zakryt-hvosty.md` §хвост №1.
🪤 **`SelectionCriteria` — пустой ОБЪЕКТ, а не пустой массив.** В PHP `[]` уезжает в JSON
как `[]`, и живой Яндекс отвечает отказом 8000 «SelectionCriteria не может содержать
массив». Писать `new \stdClass` / `(object) []`. Наступал на это 01.08 при разборе
картинок, хотя в боевом клиенте про это уже написан комментарий.
🪤 **Кабинет НЕ равен нашей кампании.** Там живут **4 кампании и 33 объявления**, из них
наша учебная — одна. Прежде чем объявлять картинку «лишней», спросить `v5/ads` по **всем**
кампаниям: 32 картинки из 73 заняты чужими объявлениями. Считать «лишние» по одному
размеру внутри своей кампании — ошибка, так у меня вышло 58 вместо настоящих 41.
### Про чтение боевой базы (только чтение)
Кладём php-файл в `/tmp` heredoc'ом с кавычками `<<'PHPEOF'`, зовём
@@ -219,7 +255,8 @@
Реклама Яндекса **закрыта**: робот обучен, кампания была учебной, документов не будет
и они не нужны (см. №1). Возвращаться к ней не надо.
Дальше — либо «да» владельца на одну из мелочей №3/№4, либо телеграм по порядку Г1 → Г2.
Хвост №4 разобран и закрыт 01.08: вреда нет, мусор в кабинете оставлен намеренно.
Дальше — либо «да» владельца на мелочь №3, либо телеграм по порядку Г1 → Г2.
Телеграм — единственное направление, где осталась настоящая работа.
Если владелец молчит — не выдумывать себе работу на боевом и не «дожимать» уже закрытое.