f1ab608444
Масштаб (лимиты внешних сервисов — на КЛЮЧ, общий на всех клиентов): - EXA: параллельный пул findSites (concurrency=5) вместо 40 запросов по одному. - Агрегатор: батч вместо ~90 запросов по одному + чанкинг по 40 и длинный таймаут 90с (большой список gpt-4o-mini не успевал в 30с). - Очередь autopodbor + WithoutOverlapping на всех 3 джобах — глобальный потолок = число воркеров; assertNoInFlight держит один подбор на клиента. Чистота выдачи (универсально, без зашитых ниш): - Анализатор: узкие рубрики, запрет зонтичных слов («финансовые услуги» тащила юрфирмы/банки). - Дедуп: ключ имени минус слова из СЛОВАРЯ рубрик прогона («Яричъ Ломбард»→«Яричъ»); слово-категория из данных, не из списка. Гард: склейка только если остаётся ровно один слово-токен (генерики вроде «займы под залог» не трогаем). TDD, 233/233 (unit+feature) зелёные. НЕ прод. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>