Над вкладками: заголовок, статус синхронизации, итоги по валютам, «Нереализованный результат» (сумма absoluteReturn по валюте; скрыт для валюты с неполными данными и при partial), PortfolioStructure.
Вкладки (локальное состояние, URL не меняется): «Позиции» (по умолчанию), «Деньги», «Операции», «События», «Доход».
«Позиции»: переключатель по присутствующим типам (Акции / Облигации / Прочее), по умолчанию первый; скрыт при одном типе.
«Операции», «События», «Доход»: превью + «Подробнее» на существующие страницы. В пустом состоянии сохранены самоописательные подписи ссылок (WCAG 2.4.4).
Процент позиции = absoluteReturn / (averagePurchasePrice × quantity) × 100, без НКД и купонов, как в backend instrument-position.ts; точная BigInt-арифметика, округление half away from zero, вывод +7,14 %. Расчёт в VM/model.
Skeleton загрузки под вкладки, обновлены тесты и stories.
Verification
npm run lint — exit 0.
npm run typecheck — exit 0.
npm run test:run — 68 files / 490 tests passed (включая browser narrow/wide), прогон на ветке изолированно от прочих локальных изменений.
commitlint --from origin/develop --to HEAD --strict — ok.
Ограничения: ручная проверка клавиатурной навигации по вкладкам и вида целиком на 375px не выполнялась (покрыто тестами ролей и browser layout-тестом позиций).
Breaking Changes (если есть)
Нет. Backend и API не менялись.
## Summary
Страница брокерского счёта: аккордеон заменён на Mantine Tabs, добавлен результат открытых позиций по валютам и процент по позиции.
## Linked Issue
Refs #112
## Changes
- Над вкладками: заголовок, статус синхронизации, итоги по валютам, «Нереализованный результат» (сумма `absoluteReturn` по валюте; скрыт для валюты с неполными данными и при partial), `PortfolioStructure`.
- Вкладки (локальное состояние, URL не меняется): «Позиции» (по умолчанию), «Деньги», «Операции», «События», «Доход».
- «Позиции»: переключатель по присутствующим типам (Акции / Облигации / Прочее), по умолчанию первый; скрыт при одном типе.
- «Операции», «События», «Доход»: превью + «Подробнее» на существующие страницы. В пустом состоянии сохранены самоописательные подписи ссылок (WCAG 2.4.4).
- Процент позиции = `absoluteReturn / (averagePurchasePrice × quantity) × 100`, без НКД и купонов, как в backend `instrument-position.ts`; точная BigInt-арифметика, округление half away from zero, вывод `+7,14 %`. Расчёт в VM/model.
- Skeleton загрузки под вкладки, обновлены тесты и stories.
## Verification
- `npm run lint` — exit 0.
- `npm run typecheck` — exit 0.
- `npm run test:run` — 68 files / 490 tests passed (включая browser narrow/wide), прогон на ветке изолированно от прочих локальных изменений.
- `commitlint --from origin/develop --to HEAD --strict` — ok.
- Ограничения: ручная проверка клавиатурной навигации по вкладкам и вида целиком на 375px не выполнялась (покрыто тестами ролей и browser layout-тестом позиций).
## Breaking Changes (если есть)
Нет. Backend и API не менялись.
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
Страница брокерского счёта: аккордеон заменён на Mantine Tabs, добавлен результат открытых позиций по валютам и процент по позиции.
Linked Issue
Refs #112
Changes
absoluteReturnпо валюте; скрыт для валюты с неполными данными и при partial),PortfolioStructure.absoluteReturn / (averagePurchasePrice × quantity) × 100, без НКД и купонов, как в backendinstrument-position.ts; точная BigInt-арифметика, округление half away from zero, вывод+7,14 %. Расчёт в VM/model.Verification
npm run lint— exit 0.npm run typecheck— exit 0.npm run test:run— 68 files / 490 tests passed (включая browser narrow/wide), прогон на ветке изолированно от прочих локальных изменений.commitlint --from origin/develop --to HEAD --strict— ok.Breaking Changes (если есть)
Нет. Backend и API не менялись.