a0e18a1dd8
Реальный портал отдаёт rt-projects-load с name='B1_<id>' / 'B2_<id>' / 'B3_<id>' и чистым идентификатором в поле 'content'. Старое matching по name === uniqueKey никогда не совпадало с реальным ответом → idMap пустой → SyncSupplierProjectJob молча выходил, ничего не записав в БД, а на портале оставались orphan-группы. Объясняет ранее задокументированное в ЭТАЛОН «проект 5 вылечен вручную — усыновлены 3 портальные записи». Заказчик обходил тот же баг руками. Фикс — matching по content с fallback на name, чтобы мок-тесты с упрощённым форматом (без content) продолжали работать; реалистичная фикстура добавлена в SupplierPortalClientMultiFlagTest. Verified: - Pest supplier suite (SyncSupplierProjectJob/SyncSupplierProjectsJob/multi-flag): 16/16 passed - E2E live на crm.bp-gr.ru: ProjectService::create + sync → supplier_projects записаны с ext_id, pivot заполнен, портал имеет 3 группы B1/B2/B3 - Multi-tenant ночной батч с computeOrder проверен на 79991177889 (T1+T2+T3+T4 на одном identifier — формула max(max, ceil(Σ/3)) сходится с фактом)