Сводная ОСВ: пары участников без встречных записей вместо «сопоставьте все» (#195, AURORA-1746) #196
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/195-counter-pairs"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #195. Jira: AURORA-1746 (замечание заказчика — чек-лист Циликова 23.10.2026, строка 10, AURORA-1865). Docs: RSHB/arm-ka-docs#176.
Что и зачем
Баннер над сводной ОСВ требовал «сопоставьте все внешние организации без ИНН», модалка [31-00] всплывала при каждом уходе с «ОСВ» — хотя переход не блокируется (AURORA-1388), а счётчик на реальных данных до нуля не доходит. Заказчик понял это как обязанность прокликать каждую строку.
Теперь перед шахматкой проверяется то, что для неё важно: пары участников периметра без встречных записей (у А есть строки с контрагентом Б, у Б нет строк с А). Ничего не хранится — считается на лету из свода (§3 п. 9).
counter_pairsвdomain/consolidated_osv.py;summary.counter_pairs[]; фильтрcounterparty_idуGET …/osvи экспорта.Спека и решения —
openspec/changes/counter-pairs/, план —docs/superpowers/plans/2026-10-27-counter-pairs.md.Фронт простыми словами
utils/consolidations.ts,widgets/ConsolidatedOsv/counterPairs.ts) и покрыто vitest — компонентов в проекте не тестируем, новые npm-пакеты не добавляли.sessionStorageбраузера (ключarmka:counter-pairs:<version_id>); если хранилище недоступно, модалка просто показывается каждый раз.?view=pairs&holder=…&missing=…), без лишних записей в истории: «Назад» ведёт со страницы отчёта, а не по переключениям.Rulings I made
needsUnmappedWarningудалён вместе с использованием (иначеtscкраснел между коммитами).missing_id.Плюс решения из обсуждения дизайна (таблица
Decisions made without discussionв design.md): «после исправлений» = изменился список пар; новых эндпоинтов нет; учитываются все строки свода; колонки режима — счёт, контрагент, обороты и сальдо на конец; поиск над таблицей строк без ИНН.Находки (обе волны)
== 1без noqa49421204942120(R-2)8054ff28054ff2,95171f4,7c523b9(R-6)8054ff2,95171f4: вынесена в чистые функции, vitest7df8a93,e2e41628054ff2,e4c030d,d230fb18054ff2e2e4162,e4c030d,d230fb1: вынесена в чистые функции, vitest95171f495171f4,2bb5683e2e4162,e4c030d(R-5)397a1a7397a1a7397a1a7, docs#176messageпосле «Связать»CounterpartyMapModal)e4c030d397a1a7,2bb5683,e4c030d,7c523b9,fb13389,d230fb1, docs dfccabc)openspec archive(чеклист закрытия)make upиз worktreec24bc3d95171f4вместе с docs Task 8Отложено решением владельца (вне этого PR): AURORA-1866 — строки с ИНН из файла вне справочника не дают закрыть пару; AURORA-1867 — подсветка кандидата по сумме.
Проверки
ARM_KA_FIXTURES=../../fixtures make check-full— EXIT 0: быстрые 1914 passed, 1 skipped; интеграционные 1179 passed; lint чистый; web build ок (после него менялся только web —make web-checkEXIT 0).npm test— 424 passed;npm run lint— 0 errors.openspec validate counter-pairs --strict— valid.🤖 Generated with Claude Code