- ИНН-ячейка строк без сопоставления подсвечена, ссылка «Указать» рядом с ИНН из файла [32-osv-no-inn].
- Модалка «Выбор организации для связи с …» [32-osv-map-counterparty]: поиск с паузой 300 мс,
scope group / весь справочник (от 3 символов), блок «Рекомендуемые», «Связать».
- POST …/osv/entries/{последняя entry_id}/counterparty; 409 ALIAS_TAKEN → перенос алиаса (move_alias),
LOCK_REQUIRED → «Взять версию в работу?» → POST …/lock → повтор, LOCKED_BY_OTHER → имя держателя.
- После успеха перечитываются строки и сводка («Осталось N»).
- Чистые функции counterpartyMapping.ts + тесты; спека consolidated-osv-ui.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
- Последняя колонка — бейдж ГСК (синий) / ГК (зелёный) / Внешний (серый), цвета из
osv-type-badge макета; чистая функция counterpartyTypeBadge с тестом.
- Фильтр признака перенесён из «Контрагенты» на колонку «Тип контрагента» (одно
значение: API принимает один counterparty_type); «Контрагенты» — только поиск.
- «Применить» / «Сбросить» и Enter закрывают окно фильтра (close из antd).
- Спека consolidated-osv-ui: колонка и фильтры по макету, «способ сопоставления»
убран из колонок (в макете [30] его нет).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>