3.4 KiB
3.4 KiB
Why
Position Card на странице Account Portfolio выглядит вытянутой: полноширинный ряд на колонке 960px с данными только по краям и пустой серединой. Показываются всего четыре метрики, хотя API уже отдаёт averagePurchasePrice, а ISIN инструмента доступен у T-Bank, но не пробрасывается backend-ом. Карточка не даёт ответить на «сколько эта позиция весит в портфеле» и «по какой цене куплена» с первого взгляда.
What Changes
- Backend:
PortfolioPositionDtoполучает nullableisinиз metadata инструмента (T-Bank уже возвращаетisinв ответахGetInstrumentBy); типTbankInstrumentрасширяется полемisin. - Frontend: Position Card перестаёт быть полноширинной строкой и становится компактной плиткой в grid (
base: 1, sm: 2, md: 3). Плитка показывает:displayName, количество,currentValue(главная метрика),absoluteReturn(цвет зелёный/красный),averagePurchasePrice, долю позиции среди позиций той же валюты, ISIN (dim, моноширинный, под именем). Null-метрики скрываются, а не отображаются как «—». - Не меняется: upstream-порядок внутри секций, разбиение на секции Акции/Облигации/Другие, Totals-карточки, Cash Balance, «Последние события», остальные страницы. Плитки некликабельны. Относительная доходность в % и тикер не добавляются.
- Документация:
CONTEXT.mdполучает термин Instrument;docs/features/portfolio-view.mdобновляет описание отображения позиций и поляisin.
Capabilities
New Capabilities
- (нет новых возможностей — изменение затрагивает только существующий portfolio-view)
Modified Capabilities
portfolio-view: Portfolio Position получает nullableisin; клиент отображает позиции компактными плитками в grid с расширенным составом метрик (средняя цена покупки, доля среди позиций той же валюты, ISIN), скрывает отсутствующие метрики и раскрашивает доход.
Impact
- backend (
/api/v1/brokerage-accounts/:accountId/portfolio):PortfolioPositionDto+ полеisin; типTbankInstrument; маппинг вportfolio.service.ts; тестыportfolio.service.spec.ts. - frontend: OpenAPI snapshot и
schema.d.ts(openapi:sync),display.ts(расчёт доли),AccountPage.view.tsx,AccountPage.module.css, i18nru.ts, тестыAccountPage.test.tsxиdisplay.test.ts. - docs:
CONTEXT.md,docs/features/portfolio-view.md. - Внешних зависимостей и breaking-изменений нет:
isinдобавляется как nullable-поле.