AURORA-1757: итоги шахматки из API, фильтр компаний на сервере #225

Merged
aep merged 1 commits from feat/224-chess-totals-ui into main 2026-11-06 16:21:39 +03:00
Owner

Closes #224. AURORA-1757. Сливается вместе с #218 (AURORA-1756): ветка начинается от неё, после merge #218 в диффе останется только фронт.

Что сделано

  • Запросы. Экран ходит в единый POST …/intercompany-matrix и …/export (в #218 GET …/all и POST …/manual удалены — без этого PR шахматка после #218 не открылась бы).
  • Итоги матрицы. Колонка «Итого Дт» справа (total_debit) и строка «Итого Кт» снизу (total_credit) — из ответа API, пересечение пустое. Клиент только форматирует (единицы, знаки), сам ничего не складывает. Правило — DOC-221277, «Итоги шахматки».
  • Фильтр «Компании» уходит в запрос (legal_entity_ids), итоги пересчитывает сервер. Варианты фильтра — весь периметр: запоминаются из ответа без выбора компаний, при выборе не сужаются.
  • Экспорт матрицы — с тем же выбором счетов и компаний, итоги в xlsx совпадают с экраном.
  • Результирующая таблица. Строки «Итого» снизу нет (аналитик 03.11, суммы разных статей не складываются), колонка — «Итого по группе».
  • Состояние «выбрана одна сторона Дт/Кт» не тронуто — AURORA-1799.
  • Спека экрана — change intercompany-matrix-totals-ui.

Пояснения к коду (фронт)

  • utils/chessMatrixRequest.ts — тело запроса из трёх фильтров и признак «ответ на весь периметр»; покрыто vitest.
  • ConsolidatedChessContent.tsx — убран клиентский filteredData; companies добавлен в зависимости эффекта загрузки, гонки по-прежнему гасит isActual. Новый state perimeter — список для фильтра.
  • ConsolidationChessTable.tsx — вместо подсчёта sumAmounts колонка fixed: 'right' и строка Table.Summary из ответа; нет итога — «—».

Проверка

  • Стенд (РБ 2024 К3, Playwright): «Итого Дт» Пекарни 110 429,11, «Итого Кт» 16 546,46 / 106 311,12 — совпадают с ячейками и с xlsx; фильтр одной компании → запрос с legal_entity_ids, итоги 0,00, в фильтре по-прежнему обе компании; экспорт с фильтром и без; «Сбросить фильтры».
  • make check-full — зелёный: ruff/mypy чисто; pytest 1943 passed / 23 skipped; statements-check 0; dbml-check чисто; integration 997 passed / 201 skipped; e2e skip (tabular-parser не поднят); docker-build ок; web-check (biome, tsc, build) ок. Из web/: npm test 549 passed, npm run lint чисто.

Rulings I made

  • R-1 (design #1): bounded-задача, но спека экрана — через OpenSpec change, а не правкой specs/.
  • R-2 (design #2): колонка результирующей таблицы «Итого» → «Итого по группе» (как в DOC-221277 и xlsx).
  • R-3 (design #3): каждая отметка «Компании» перезапрашивает матрицу без задержки (как фильтры Дт/Кт).

🤖 Generated with Claude Code

Closes #224. AURORA-1757. Сливается вместе с #218 (AURORA-1756): ветка начинается от неё, после merge #218 в диффе останется только фронт. ## Что сделано - **Запросы.** Экран ходит в единый `POST …/intercompany-matrix` и `…/export` (в #218 `GET …/all` и `POST …/manual` удалены — без этого PR шахматка после #218 не открылась бы). - **Итоги матрицы.** Колонка «Итого Дт» справа (`total_debit`) и строка «Итого Кт» снизу (`total_credit`) — из ответа API, пересечение пустое. Клиент только форматирует (единицы, знаки), сам ничего не складывает. Правило — DOC-221277, «Итоги шахматки». - **Фильтр «Компании»** уходит в запрос (`legal_entity_ids`), итоги пересчитывает сервер. Варианты фильтра — весь периметр: запоминаются из ответа без выбора компаний, при выборе не сужаются. - **Экспорт матрицы** — с тем же выбором счетов и компаний, итоги в xlsx совпадают с экраном. - **Результирующая таблица.** Строки «Итого» снизу нет (аналитик 03.11, суммы разных статей не складываются), колонка — «Итого по группе». - Состояние «выбрана одна сторона Дт/Кт» не тронуто — AURORA-1799. - Спека экрана — change `intercompany-matrix-totals-ui`. ## Пояснения к коду (фронт) - `utils/chessMatrixRequest.ts` — тело запроса из трёх фильтров и признак «ответ на весь периметр»; покрыто vitest. - `ConsolidatedChessContent.tsx` — убран клиентский `filteredData`; `companies` добавлен в зависимости эффекта загрузки, гонки по-прежнему гасит `isActual`. Новый state `perimeter` — список для фильтра. - `ConsolidationChessTable.tsx` — вместо подсчёта `sumAmounts` колонка `fixed: 'right'` и строка `Table.Summary` из ответа; нет итога — «—». ## Проверка - Стенд (РБ 2024 К3, Playwright): «Итого Дт» Пекарни 110 429,11, «Итого Кт» 16 546,46 / 106 311,12 — совпадают с ячейками и с xlsx; фильтр одной компании → запрос с `legal_entity_ids`, итоги 0,00, в фильтре по-прежнему обе компании; экспорт с фильтром и без; «Сбросить фильтры». - `make check-full` — зелёный: ruff/mypy чисто; pytest 1943 passed / 23 skipped; statements-check 0; dbml-check чисто; integration 997 passed / 201 skipped; e2e skip (tabular-parser не поднят); docker-build ок; web-check (biome, tsc, build) ок. Из `web/`: `npm test` 549 passed, `npm run lint` чисто. ## Rulings I made - R-1 (design #1): bounded-задача, но спека экрана — через OpenSpec change, а не правкой `specs/`. - R-2 (design #2): колонка результирующей таблицы «Итого» → «Итого по группе» (как в DOC-221277 и xlsx). - R-3 (design #3): каждая отметка «Компании» перезапрашивает матрицу без задержки (как фильтры Дт/Кт). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 7 commits 2026-11-06 16:20:54 +03:00
- grand_total результирующей таблицы убран из API и xlsx: аналитик 03.11 попросил
  убрать итог снизу, сумма ДЗ + КЗ + ФВ + займов смысла не имеет
- total_debet переименовано в total_debit, как во всём API
- итоги матрицы квантуются до двух знаков ("0.00" и при одном ЮЛ)
- правки openspec/specs перенесены в change intercompany-matrix-totals
- README: фильтр ЮЛ и итоги

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- клиент на единый POST …/intercompany-matrix и …/export
- матрица: колонка «Итого Дт» и строка «Итого Кт» из total_debit/total_credit,
  клиентское сложение убрано
- фильтр «Компании» уходит в запрос (legal_entity_ids), варианты — весь
  периметр из ответа без выбора; выгрузка с тем же выбором
- результирующая таблица без строки «Итого», колонка «Итого по группе»
- change intercompany-matrix-totals-ui

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aep merged commit 4ab792ee39 into main 2026-11-06 16:21:39 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-core#225
No description provided.