cce04aed86
Второй рубеж защиты документа. Оставлять его на задачу 16 было бы хвостом: сама проверка от экранов кабинета не зависит. enqueueDelivery берёт сообщение связью от кампании, сырой номер в выборку не попадает нигде. Заодно отказывается ставить задание без вложения и не плодит второе, если клиент нажал дважды. Поймана ловушка, заложенная прошлой задачей: постановка обычной заливки искала любое незавершённое задание кампании и с появлением доставки вернула бы её. Запуск решил бы, что креативы уже в очереди, и робот не повёз бы картинки вовсе, молча. Отбор по виду добавлен, тест есть. Нашлось чтением соседнего метода, не тестом и не проверкой. Оба рубежа доказаны вырезанием по отдельности: без проверки в коде чужой документ ловят ключи базы, но уже ошибкой записи вместо понятного отказа. Портал 356/356, робот 60/60, мест снятия заморозки денег по-прежнему четыре. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>