98388ccf26
Разбор клиентского модуля «Реклама в Телеграме по своей базе» на дыры (4 параллельных код-ревью + личная перепроверка) и план их закрытия. - findings: 14 находок, сгруппированы по серьёзности; главное — вся денежная часть латентна под песочницей, но капканы (залипшая бронь, минимум 367 после freeze, потерянный внешний id, зависшие статусы) сработают при go-live. - spec: решения владельца (бронь→возврат/списание по факту; «своё имя» и авторассылка доделываем; начинаем с безопасности), границы, приёмка по областям. - plan: 5 этапов в порядке 1→2→5→3→4, каждая задача в TDD; этап 3 ждёт живого отказа МТС (Part B). Ревизия 27.07 (разбор самих спеки/плана на дыры): - билинг-модель МТС («от X ₽» = нижняя граница, трата по показам) — выяснить ДО реализации списания (предусловие этапа 2, задача 2.0); - внешний id кампании МТС сохранять РАНО (робот плодит реальные черновики уже на шаге аудитории) — иначе осиротевшие черновики и слепой рефанд; - уборка брошенных черновиков (сегодня чистили руками) — узаконить (задача 3.1b); - уборщик зависших консервативен: при известном mts_campaign_id не рефандит вслепую; - оговорка: тест идемпотентности слабый (dispatchSync последователен). Только документы (docs/superpowers/*). Кода не трогает. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>