## REMOVED Requirements ### Requirement: Предупреждение «Остались неуказанные ИНН» **Reason**: модалка всплывала при каждом уходе с «ОСВ», пока `unmapped_total > 0`, а счётчик на реальных данных до нуля не доходит (зарплата, подотчётные лица); заказчик воспринимал её как требование сопоставить всё (AURORA-1746, чек-лист Циликова 23.10.2026). Для шахматки важны только пары участников без встречных записей. **Migration**: заменено требованием «Предупреждение «Нет встречных записей»». ## ADDED Requirements ### Requirement: Предупреждение «Нет встречных записей» При уходе со вкладки «ОСВ» на другую вкладку отчёта версии фронт SHALL показывать модалку «Проверьте встречные записи участников», если в сводке есть пары `counter_pairs` и этот список пар ещё не показывался в модалке для этой версии в текущей сессии браузера. Текст: «Нет встречных записей: N пар у M участников.» (N — число пар, M — число разных `missing_id`; слова согласуются с числом: «1 пара у 1 участника», «2 пары у 2 участников», «5 пар у 3 участников») и «Возможно, контрагент среди строк без ИНН, его ИНН не найден в справочнике или это пропуск в учёте. Ещё K строк без ИНН учтены как внешние.» (K — `unmapped_total`; при K = 0 вторая фраза без последнего предложения). Кнопки: - «Показать пары» — закрыть модалку без перехода и открыть на вкладке «ОСВ» режим «Встречные записи» с первой парой; - «Остаться» — закрыть модалку без перехода; - «Перейти» — выполнить переход. Показ запоминается в `sessionStorage` браузера по версии вместе со списком пар (упорядоченные пары `holder_id → missing_id`); повторный уход с «ОСВ» в той же сессии модалку не показывает, пока список пар не изменился (например, сопоставление закрыло одну из пар — модалка покажет оставшиеся). Недоступное хранилище — модалка показывается при каждом уходе, ошибкой это не считается. Без пар (`counter_pairs` пуст) переход SHALL выполняться без модалки при любом `unmapped_total`. В БД ничего не пишется (решение владельца 27.10.2026). Для версии в завершённом статусе (`VERIFIED`, `CANCELLED`, `ARCHIVED`, `REJECTED`) модалка не показывается. Пока шагов после ОСВ нет, их вкладки неактивны и модалка не вызывается. #### Scenario: Пара без встречных записей - **WHEN** в сводке одна пара (Русский бисквит ← Пекарня Счастливочная), `unmapped_total = 1260`, и аналитик выбирает вкладку «Шахматка» - **THEN** показана модалка «Нет встречных записей: 1 пара у 1 участника…»; «Перейти» открывает шахматку #### Scenario: Повтор в той же сессии - **WHEN** аналитик вернулся на «ОСВ» и снова выбирает «Шахматку», список пар не изменился - **THEN** шахматка открывается без модалки #### Scenario: Список пар изменился - **WHEN** после показа модалки аналитик сопоставил контрагента, закрыв одну из двух пар, и выбирает «Шахматку» - **THEN** модалка показана снова с «Нет встречных записей: 1 пара у 1 участника…» #### Scenario: Только строки без ИНН - **WHEN** `counter_pairs` пуст, `unmapped_total = 214`, и аналитик выбирает «Шахматку» - **THEN** шахматка открывается без модалки #### Scenario: Показать пары - **WHEN** в модалке нажато «Показать пары» - **THEN** вкладка «ОСВ» остаётся, открыт режим «Встречные записи» с первой парой