Две починки в «Конкурентном поле» + превью выжившего в окне склейки:
1. Переименование конкурента (PATCH competitors/{id}) не обновляло имена
уже созданных проектов — они носят имя-снимок конкурента. Теперь при
смене имени проекты синхронизируются (syncNamesForCompetitor): меняется
только отображаемое имя, signal_identifier поставщика не трогаем.
2. Слияние дублей не пересматривало ящик выжившего. Если выжившим по
возрасту/деньгам оказывалось предложение, объединённая карточка уезжала
в «Предложения», даже когда одна из склеиваемых была в «Поле». Теперь
объединённая получает сильнейший ящик (поле > предложение > архив) —
только повышаем, никогда не понижаем.
3. Окно «Почистить поле» показывает, какая карточка останется после склейки
(survivor во duplicateGroups) — не затираем имя вслепую.
Тесты: весь блок автоподбора зелёный (426). Larastan в этой рабочей копии
падает без вывода на любом файле — среда, не код.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>