Files
docs/domains/portfolio/overview.md
T
ksv741 97069d6f6d
Docs security / security (pull_request) Successful in 6s
Docs verify / verify (pull_request) Successful in 11s
Conventional commits / commits (pull_request) Successful in 16s
Docs security / security (push) Successful in 9s
Docs verify / verify (push) Successful in 10s
docs: make documentation checks self-contained
2026-09-15 20:45:40 +03:00

9.9 KiB

Портфель

Портфель показывает, какими активами и доступными деньгами располагает брокерский счёт по последнему успешному наблюдению T-Bank. Это снимок состава и его текущей оценки, а не локальная история владения или расчёт полной инвестиционной доходности. Пользователь открывает его на /accounts/:accountId; режим «Все счета» объединяет доступные счета текущего подключения.

Снимок и связанные области

Снимок состоит из позиций по инструментам, доступных денежных остатков, валютных итогов и структуры активов. Позиция означает ненулевое количество обычного инструмента в брокерском портфеле. Торгуемая валютная позиция CURRENCY и свободные деньги имеют разный смысл и передаются раздельно. Точный смысл сумм и неизвестных значений раскрыт в справочнике данных.

Доступность счёта определяется текущим подключением и списком счетов. SQLite не хранит сам портфель: backend получает данные через серверную интеграцию T-Bank и временно сохраняет успешный снимок в памяти. Frontend получает нормализованный результат через HTTP API. Поток загрузки объясняет границы доступа, свежий кэш и восстановление после временной ошибки.

Обзор счёта также показывает пять последних операций, полученный доход текущего месяца и до пяти будущих событий. Каждый блок загружается самостоятельно: его ошибка или отсутствие данных не скрывает основной портфель. Полученные выплаты и прогноз не добавляются к текущей стоимости повторно и не превращают результат открытой позиции в полную доходность.

Как читать экран

Валютная сводка показывает отдельную карточку для каждого полученного итога. Деньги уже включены в итог своей валюты. RUB, USD и EUR обозначены ₽, $ и €; другие валюты сохраняют ISO-код. Вспомогательным технологиям доступны полное значение и название валюты. Суммы сохраняют все исходные цифры, знак и дробные позиции, включая -0,5; длинные значения переносятся без обрезания. Карточки не интерактивны и занимают одну колонку на узком экране, две или три на широком. Отсутствующая валюта не получает искусственную нулевую карточку. Пустые итоги не скрывают доступный состав портфеля.

Структура после сводки распределяет известную стоимость по акциям, облигациям, другим активам и свободным деньгам. При нескольких валютах пользователь выбирает одну; при одной отдельного переключателя нет. Кольцевая диаграмма дополнена текстовым списком сумм и долей и подсказкой; на узком экране список расположен под ней. Неизвестная оценка, отрицательные составляющие или нулевой итог ограничивают возможность показать доли — почему кольцо бывает недоступно.

Акции и облигации показаны отдельными секциями, по одной карточке в ряду при любой ширине. Внутри сохраняется порядок источника. Слева находятся название, логотип, количество и идентификатор, справа — стоимость и результат. Средняя цена и доля размещены ниже. Логотип размером 40 px при недоступности изображения заменяется первой буквой имени. Акция показывает тикер, а при его отсутствии ISIN; облигация — ISIN. Название и логотип ведут на страницы акции или облигации, когда доступен точный UID инструмента.

Результат открытой позиции имеет явный знак: плюс при положительном, минус при отрицательном, без знака при нуле. Цвет дополняет знак. Иные отображаемые активы используют компактные плитки в адаптивной сетке без логотипа и с подписью результата. Отсутствующие показатели скрываются, а не подменяются нулём или заглушкой.

Существует расхождение: согласованная спецификация представления позиций требует доступности всех иных типов в отдельной секции, а текущие frontend и его проверка исключают CURRENCY только из списка карточек. Такие позиции остаются в ответе, валютных итогах, структуре и знаменателе долей остальных позиций. Это описание фактического ограничения; выбор между изменением интерфейса и согласованием требований остаётся отдельной задачей.

Свежесть и границы

При первом запросе экран показывает каркас заголовка, сводки и разделов. Три формы валютных карточек в каркасе не обещают наличие трёх валют. Загрузка обозначена для вспомогательных технологий; декоративные элементы не содержат данных и не получают фокус. При обычном фоновом обновлении сохраняются предыдущие суммы и время успешного получения в UTC.

Серверный isStale обозначает разрешённый запасной снимок backend. Клиентское предупреждение означает неудачную попытку обновить уже показанный ответ. Эти состояния независимы и могут появиться одновременно. Успешный повторный запрос обновляет суммы и время, снимает клиентскую ошибку; серверное предупреждение определяется новым isStale. Правила времени и ошибок приведены в потоке загрузки.

В текущем решении нет долговременной истории снимков, графиков стоимости портфеля, валютной конвертации, учёта виртуальных позиций или заблокированных средств. Кэш теряется при перезапуске и рассчитан на локальную работу одного экземпляра backend. Отдельной команды принудительного обновления на экране нет; повторная попытка доступна после ошибки.

Для проверки конкретной суммы используйте руководство по расхождениям. Проверяемое поведение отдельного счёта описано в спецификации портфеля; точную форму HTTP-ответа задаёт OpenAPI backend.