Files
portal/app/tests/Feature/Jobs
Дмитрий e9ee67e4cd harden(supplier): защита-инвариант «телефон звонившего != номер-ловушка» + робастный парсер
Defense-in-depth после 2-го инцидента в csv_recovery-канале (16.07.2026):
- RouteSupplierLeadJob: чокпоинт обоих путей (webhook+csv_recovery) — если у звонкового
  сигнала phone == identifier (номер-ловушка проекта), сделка НЕ создаётся и клиент НЕ
  списывается; лид метится processed_at+error, шлётся warning. Ловит любой будущий регресс.
- SupplierPortalClient.parseDeliveredRows: извлечение номера проекта без якоря $ —
  ловит номер-ловушку даже с хвостовыми символами.
Тесты RED->GREEN (guard 5 assertions), 45/45 route+csv, Larastan 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 07:05:27 +03:00
..