91c5a119eb
Причина фантомных сделок kdv1 (09.07.2026): CsvReconcileJob брал отчёт «Запрос номеров» = ПУЛ собранных номеров (phones_cnt), а не ОТДАННОЕ (crms_cnt), и лепил из пула сделки клиенту + выедал дневной лимит. Пример: пул 157, отдано 15, у клиента 15 фантомов, а 15 реально отданных выбило лимитом. Фикс: SupplierPortalClient::fetchDeliveredLeads() читает журнал «Мои сделки» (index-visit, по vid) — только реально отгруженное. CsvReconcileJob сверяет по vid, добор несёт настоящий vid (idx_supplier_leads_vid_unique -> идемпотентно с webhook). Пул не трогается -> фантомы невозможны, лимит не забивается мусором. Проверено: 12 новых тестов + 294 supplier зелёные, Pint/Larastan чисто. Выкачено и проверено на проде (reconcile читает отданное, 0 фантомов за прогон). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>