🐛 Исправление
·
Автоправила больше не слепнут: статусы кампаний синкаются полностью и честно
Закрыта дыра, из-за которой часть активных кампаний была невидимой для pause-правил — синк статусов упирался в первые 500 кампаний кабинета, а инструменты активации не обновляли локальный статус.
Найдена и закрыта серьёзная дыра в защите автоправилами.
Что было не так. Pause-правила пропускают кампании, которые по локальной
базе стоят на паузе — чтобы не дёргать Meta впустую. Но сам локальный статус
обновлялся с дырами:
- Периодический синк статусов читал только первые 500 кампаний кабинета. В больших кабинетах старые кампании выпадали из синка навсегда — их локальный статус замерзал.
- Часть инструментов активации (дотест-карусель, кнопка «Включить адсеты», авто-активация торгового окна, activate-правила) включала кампании в Meta, но не обновляла локальный статус.
В результате кампания могла быть реально включённой и тратить бюджет, а для
pause-правил — «на паузе», то есть полностью вне защиты. Молча, без единого
следа в логах. На момент обнаружения в таком состоянии было 66 кампаний.
Что теперь:
- Синк статусов тянет из Meta полный список активных кампаний и адсетов (с фильтром и пагинацией — лимита 500 больше нет) и выставляет статус честно: кампания считается рабочей только когда она включена и имеет хотя бы один включённый адсет.
- Все инструменты активации сразу обновляют локальный статус — кампания видима правилам с первой секунды, не дожидаясь следующего синка.
- Страховка в самих правилах: если кампания по базе «на паузе», но имеет свежие траты за последние часы — кэшу не верим и правила её оценивают.
Статусы всех кампаний в базе разово перепроверены по Meta.