1dc696cef6
Лидерра нумерует субъекты по конституционному порядку (RussianRegions: Красноярский=29), поставщик crm.bp-gr.ru — по автокодам ГИБДД (Красноярский=24, Архангельск=29). Sync слал Лидерра-код как есть → поставщик выбирал ЧУЖОЙ регион (заказчик выбрал Красноярский край — у поставщика встал Архангельск). На dev не всплывало: проверяли на «вся РФ» (пустой regions). Фикс: App\Support\SupplierRegions::mapToSupplier — карта 79 субъектов, построена сверкой имён RussianRegions ↔ live-дерево формы «Добавить проект» поставщика (recon 2026-05-21, node-key="id"). Перевод в единственной точке выхода — SupplierPortalClient::toPayload (покрывает create/update/multiFlag). Тег остаётся человекочитаемым именем Лидерры. 10 субъектов Лидерры поставщик не предлагает (Московская/Ленинградская/Крым/ Севастополь/ДНР/ЛНР/Запорожская/Херсонская/Ненецкий АО/ЯНАО) — их коды отбрасываются с warning'ом (георфильтр для них у поставщика недоступен). Тесты: SupplierRegionsTest (перевод/отброс/dedupe/биекция); SupplierPortalClientRtProjectTest обновлён (regions [77]→[72] после перевода). Проверено вживую на тест-сервере: проекты 14/15 пере-синхронизированы, доноры 12742042/12766120 у crm.bp-gr.ru → regions=24 (Красноярский), reverse=false. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>