Files
portal/app/tests/Feature/Advertising
Дмитрий f85452a805 fix(реклама): период показа ровно на столько дней, сколько заказал клиент
Конец периода считался «сегодня + run_days», а Яндекс берёт StartDate и
EndDate включительно. Заказанный один день превращался в период из двух,
неделя — из восьми. Следом раздувался минимум площадки, 300 руб. за каждый
календарный день: клиенту, заказавшему день, портал требовал 833.40 руб.
вместо честных 416.76 руб. Поймано приёмкой 03.08.2026 на кампании #11.

Стало: конец периода — «сегодня + run_days минус 1».

Сторож держит связь, а не число: «ставит в Директе период ровно на столько
дней, сколько заказал клиент» — три длины сразу, 1 день, неделя, месяц;
проверяются StartDate и EndDate в самом запросе к Директу.

Красный проверен вырезанием наоборот: сообщение Laravel «ожидаемого запроса
не было» не говорит, из-за чего именно, поэтому в сторожа временно вписали
нынешнее неверное поведение — он позеленел, доказав, что расходится ровно
дата конца. После доказательства сторож вернули как надо.

Числа трёх прежних сторожей пересчитаны от 300 руб. за день, а не подогнаны
под выданное: 6945/833.40 -> 3473/416.76; 27778/3333.36 -> 24306/2916.72;
сегодня+14 -> сегодня+13. Комментарии, закреплявшие ошибку словами,
переписаны.

На кампанию #11 починка подействует — её конец периода ещё не записан.
На #6 не подействует и не должна: её shows_until записан 30.07 и
переиспользуется.

Прогон: 378 сторожей блока рекламы зелёные, статанализ 0 ошибок, стиль чист.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 08:44:38 +03:00
..