451a2944f7
Закрывает CV.11 audit WARN minor #5 (Carbon::createFromTimestamp(time) без range guard → INSERT CRASH "no partition of relation deals found for row" для timestamp вне текущего месячного окна deals_2026_MM). Изменение: SupplierWebhookController::receive — добавлено min/max constraint на 'time' = [now-24h, now+24h] unix-timestamp. Timestamp вне окна → 422 ValidationException. ±24h: покрывает retry-задержки поставщика (network-сбой) + clock-drift серверов; шире окно (±48h+) = риск partition-промаха на стыке месяцев (нужен Plan 5 partition cron). TDD: +3 теста (-2 days → 422; +2 days → 422; -6h → 202). Regression-fix: existing test 'inserts supplier_lead row' использовал hardcoded 'time' => 1703781939 (Dec 28 2023) — теперь out-of-window. Заменено на time(). phpstan-baseline: postJson() count: 8 → 11 (+3 от Task 3 тестов). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>