groupItems: группа встаёт на место своей первой записи и образуется только из двух и более записей;
sumMoney: точное сложение через BigInt. Код сложения вынесен из pages/account/model/positions.ts.
Ключи группы:
brokerageOperationGroupKey: день на экране, затем instrumentUid/figi, затем type;
brokerageEventGroupKey: ещё isin и dateKind.
UI:
EntryGroup, OperationGroup, BrokerageEventGroup;
выплаты внутри группы остаются карточками;
доступное имя группы на вложенном списке.
Итог группы скрыт, если:
у записи нет суммы;
сумма нулевая (журнал и выплаты);
сумма прогноза неизвестна;
meta.completeness не равен complete.
Лимит 5 в превью применяется до группировки. Журнал группирует только текущую страницу.
EntryCard рендерит div только для нестроковых value.
Планирование и решения: WealthLedger/specs PR spec: plan grouping of all-account rows by instrument (change group-account-rows-by-instrument).
Verification
npm run verify: exit 0, 73/73 test files, 530 tests, coverage 92.35% statements.
Independent review: все findings закрыты.
QA в браузере на stubbed API: 18 test-cases и сценариев pass, ширина 320 px без горизонтального скролла.
Ограничение: src/features/tbank-connection/model/screen-sync.test.tsx однажды упал при полном прогоне. Файл не менялся, на baseline тест проходит 3/3 — flaky и до этого change.
Breaking Changes (если есть)
Нет.
## Summary
В режиме «Все счета» записи с одинаковым экранным днём, Instrument и точным типом объединяются в одну визуальную группу:
- в заголовке группы — дата, инструмент, тип и точный итог по каждой валюте;
- под заголовком всегда видна отдельная строка каждой записи: счёт и сумма.
Изменение работает на страницах операций и будущих событий, в превью обзора и в «Выплатах». Режим одного счёта не меняется.
## Linked Issue
Refs WealthLedger/main#47
## Changes
- `shared/lib`:
- `groupItems`: группа встаёт на место своей первой записи и образуется только из двух и более записей;
- `sumMoney`: точное сложение через BigInt. Код сложения вынесен из `pages/account/model/positions.ts`.
- Ключи группы:
- `brokerageOperationGroupKey`: день на экране, затем `instrumentUid`/`figi`, затем `type`;
- `brokerageEventGroupKey`: ещё `isin` и `dateKind`.
- UI:
- `EntryGroup`, `OperationGroup`, `BrokerageEventGroup`;
- выплаты внутри группы остаются карточками;
- доступное имя группы на вложенном списке.
- Итог группы скрыт, если:
- у записи нет суммы;
- сумма нулевая (журнал и выплаты);
- сумма прогноза неизвестна;
- `meta.completeness` не равен `complete`.
- Лимит 5 в превью применяется до группировки. Журнал группирует только текущую страницу.
- `EntryCard` рендерит `div` только для нестроковых `value`.
Планирование и решения: WealthLedger/specs PR `spec: plan grouping of all-account rows by instrument` (change `group-account-rows-by-instrument`).
## Verification
- `npm run verify`: exit 0, 73/73 test files, 530 tests, coverage 92.35% statements.
- Independent review: все findings закрыты.
- QA в браузере на stubbed API: 18 test-cases и сценариев pass, ширина 320 px без горизонтального скролла.
- Ограничение: `src/features/tbank-connection/model/screen-sync.test.tsx` однажды упал при полном прогоне. Файл не менялся, на baseline тест проходит 3/3 — flaky и до этого change.
## Breaking Changes (если есть)
Нет.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
В режиме «Все счета» записи с одинаковым экранным днём, Instrument и точным типом объединяются в одну визуальную группу:
Изменение работает на страницах операций и будущих событий, в превью обзора и в «Выплатах». Режим одного счёта не меняется.
Linked Issue
Refs WealthLedger/main#47
Changes
shared/lib:groupItems: группа встаёт на место своей первой записи и образуется только из двух и более записей;sumMoney: точное сложение через BigInt. Код сложения вынесен изpages/account/model/positions.ts.brokerageOperationGroupKey: день на экране, затемinstrumentUid/figi, затемtype;brokerageEventGroupKey: ещёisinиdateKind.EntryGroup,OperationGroup,BrokerageEventGroup;meta.completenessне равенcomplete.EntryCardрендеритdivтолько для нестроковыхvalue.Планирование и решения: WealthLedger/specs PR
spec: plan grouping of all-account rows by instrument(changegroup-account-rows-by-instrument).Verification
npm run verify: exit 0, 73/73 test files, 530 tests, coverage 92.35% statements.src/features/tbank-connection/model/screen-sync.test.tsxоднажды упал при полном прогоне. Файл не менялся, на baseline тест проходит 3/3 — flaky и до этого change.Breaking Changes (если есть)
Нет.