From b9a55873e503c8b992b1bf39baba3c1c7dcc84db Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Tue, 27 Oct 2026 21:52:10 +0400 Subject: [PATCH] =?UTF-8?q?docs(#195):=20=D0=BF=D0=BB=D0=B0=D0=BD=20?= =?UTF-8?q?=E2=80=94=20=D0=B2=D0=BE=D0=BB=D0=BD=D0=B0=202=20(=D0=B7=D0=B0?= =?UTF-8?q?=D0=BA=D1=80=D1=8B=D1=82=D1=8C=20=D0=BE=D1=82=D0=BB=D0=BE=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D0=BE=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- .../plans/2026-10-27-counter-pairs.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/docs/superpowers/plans/2026-10-27-counter-pairs.md b/docs/superpowers/plans/2026-10-27-counter-pairs.md index a5bfe9b..c50247b 100644 --- a/docs/superpowers/plans/2026-10-27-counter-pairs.md +++ b/docs/superpowers/plans/2026-10-27-counter-pairs.md @@ -189,3 +189,36 @@ specs/consolidations-ui). Issue — arm-core #195, Jira — AURORA-1746. Вет - [ ] **Step 2:** правка `CLAUDE.md` arm-core, коммит. - [ ] **Step 3:** из корня arm-core worktree `make check-full` — вывод сохранить для описания PR; `openspec validate counter-pairs --strict`. - [ ] **Step 4:** коммит, если были правки по итогам проверки. + +--- + +## Волна 2 (решение владельца 27.10.2026: всё отложенное закрыть в этой ветке) + +Правила те же: sonnet — исполнители и ревью задач, opus — финальное ревью; маркеры T/H/O/R/C-I-M; без push в arm-core. Новые npm-пакеты не добавляем (web/CLAUDE.md, contour-transfer-guide §3.2): компонентные тесты заменяются выносом логики в чистые функции + vitest. + +### Task 7: логика перехода и режима пар (web, модель: sonnet) + +**Files:** `web/src/widgets/ConsolidatedOsv/OsvTabs.tsx`, `web/src/widgets/ConsolidatedOsvContent/ConsolidatedOsvContent.tsx`, `web/src/widgets/ConsolidatedOsv/counterPairs.ts` (+ тест), `web/src/utils/consolidations.ts` (+ тест), хук `useConsolidatedOsv`, `web/src/layouts/ConsolidationReportPage.tsx` при необходимости. + +- [ ] T4.1: один вызов `safeSessionStorage()` в `OsvTabs`. +- [ ] T4.2: при уходе с «ОСВ», если `summary === null` — запросить `getOsvSummary(versionId)` и решить по ответу (чистая функция решения: `perform`/`warn`/`go`); при ошибке запроса — переход без модалки; переход без проверки при `null` недопустим. +- [ ] T5.4: `useConsolidatedOsv` не запрашивает строки, пока активен режим пар (сводку — запрашивает); убрать двойной fetch при смене фильтра/пары (`setPage(1)` не должен порождать запрос со старой страницей). +- [ ] T5.5: `holder`/`missing` в адресе не стираются в режиме «Свод»; возврат на «Встречные записи» восстанавливает пару; `readPairsView`/`pairsViewSearch` и тесты поправить. +- [ ] M-4: в режиме пар при `summary = null` — `Spin`; переключатель «Встречные записи» без «(N)» пока сводки нет. +- [ ] T4.3 (часть): логику решений `OsvTabs` вынести в чистые функции и покрыть vitest. +- [ ] `make web-check`, `npm test`, `npm run lint`; коммит `feat(#195): ...`. + +### Task 8: раскладка режима «Встречные записи» и чистая логика CounterPairsView (web + спека, модель: sonnet) + +**Files:** `web/src/widgets/ConsolidatedOsv/CounterPairsView.tsx` (+ вынесенные чистые функции и тест), `openspec/changes/counter-pairs/specs/consolidated-osv-ui/spec.md`, `openspec/changes/counter-pairs/design.md`. + +- [ ] H-1: вместо трёх колонок — список пар вверху одной строкой «таблеток» с переносом (подпись `записей: N · без ИНН у : M` сохранить), под ним две таблицы на всю ширину одна под другой: «У А есть записи с Б», затем «У Б — строки без ИНН и без сопоставления» с поиском. Все четыре колонки сумм видны без горизонтальной прокрутки при ширине окна 1440. +- [ ] Спека consolidated-osv-ui («слева/в центре/справа») — под новую раскладку; решение — в design.md как `R-5 (design #13)`. +- [ ] T5.6: вынести в чистые функции и покрыть vitest: какой текст пустого состояния показать (пусто / `missing_rows_total = 0` / `missing_unmapped_rows = 0`), выбор пары после сопоставления, ограничение страницы. +- [ ] `make web-check`, `npm test`, `npm run lint`; коммит `feat(#195): ...`. + +### Task 9: проверка на стенде и окружение (контроллер/исполнитель, модель: sonnet) + +- [ ] O-5: стенд с кодом ветки; проверить три пустых состояния и раскладку на 1440; сверить с макетом [30]. Перед правкой данных — SELECT исходных значений в файл ledger; после — восстановление и сверка SELECT-ом (включая `counterparty_match_kind` у 25 строк РБ, смена с ALIAS на MANUAL/PROPAGATED от O-3 — вернуть прежние значения, если есть бэкап, иначе описать в отчёте). +- [ ] O-1: проверить `make up` из worktree при существующем `.wt/counter-pairs/docs`. +- [ ] M-7: правка Purpose в `openspec/specs/consolidations-ui/spec.md` — пункт чеклиста закрытия (`openspec archive`), не follow-up.