b5898b8017
fix(прогрев): менеджер+этап по ИНН у непривязанных строк и защита от дубля карточки Экран прогрева показывал «Назначить менеджера» даже для фирм, которых уже ведут в воронке (карточка заведена отдельно через «Поиск клиентов», строка прогрева не привязана). Из 250 фирм Яндекса так было у 51. - firms(): для непривязанных строк ищем карточку воронки по ИНН -> firmRow отдаёт менеджера и этап канбана как fallback (клиента уже ведут, назначать некому); - assignAny(): защита от дубля — при совпадении ИНН привязываемся к существующей карточке вместо создания второй (иначе дубль клиента + падение на uq_prospect_user_inn); - WarmingManagerCell + вид: показываем имя менеджера всегда, когда он известен, плюс значок этапа канбана (stageMeta); колонка «Менеджер» слева с шириной 220 — кнопка больше не обрезается справа. Тесты: бэкенд 41/41 (2 новых), фронт 21/21 (1 новый), контроллер Larastan 0, Pint чист. larastan-хук исключён: свой код чист, краснота — чужой pre-existing дрейф (SetTenantContext, SmscSmsProviderTest) + ложняки Pest actingAs выше baseline. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> @