11 KiB
Портфель
Портфель показывает, какими активами и доступными деньгами располагает
брокерский счёт по последнему успешному наблюдению T-Bank. Это снимок состава
и его текущей оценки, а не локальная история владения или расчёт полной
инвестиционной доходности. Пользователь открывает его на
/accounts/:accountId; режим «Все счета» объединяет
доступные счета текущего подключения.
Снимок и связанные области
Снимок состоит из позиций по инструментам, доступных денежных остатков,
валютных итогов и структуры активов. Позиция означает ненулевое количество
обычного инструмента в брокерском портфеле. Торгуемая валютная позиция
CURRENCY и свободные деньги имеют разный смысл и передаются раздельно.
Точный смысл сумм и неизвестных значений раскрыт в
справочнике данных.
Доступность счёта определяется текущим подключением и списком счетов. Backend получает данные через серверную интеграцию T-Bank и постоянно сохраняет последний полный снимок в SQLite. Frontend получает нормализованный результат через HTTP API. Поток загрузки объясняет границы доступа, свежесть снимка и восстановление после временной ошибки.
Обзор счёта также показывает пять последних операций, полученный доход текущего месяца и до пяти будущих событий. Каждый блок загружается самостоятельно: его ошибка или отсутствие данных не скрывает основной портфель. Полученные выплаты и прогноз не добавляются к текущей стоимости повторно и не превращают результат открытой позиции в полную доходность.
Как читать экран
Валютная сводка показывает отдельную карточку для каждого полученного итога.
Деньги уже включены в итог своей валюты. RUB, USD и EUR обозначены ₽, $ и €;
другие валюты сохраняют ISO-код. Вспомогательным технологиям доступны полное
значение и название валюты. Суммы сохраняют все исходные цифры, знак и
дробные позиции, включая -0,5; длинные значения переносятся без обрезания.
Карточки не интерактивны и занимают одну колонку на узком экране,
две или три на широком. Отсутствующая валюта не получает искусственную
нулевую карточку. Пустые итоги не скрывают доступный состав портфеля.
Структура после сводки распределяет известную стоимость по акциям, облигациям, другим активам и свободным деньгам. При нескольких валютах пользователь выбирает одну; при одной отдельного переключателя нет. Кольцевая диаграмма дополнена текстовым списком сумм и долей и подсказкой; на узком экране список расположен под ней. Неизвестная оценка, отрицательные составляющие или нулевой итог ограничивают возможность показать доли — почему кольцо бывает недоступно.
Акции и облигации показаны отдельными секциями, по одной карточке в ряду при любой ширине. Внутри сохраняется порядок источника. Слева находятся название, логотип, количество и идентификатор, справа — стоимость и результат. Средняя цена и доля размещены ниже. Логотип размером 40 px при недоступности изображения заменяется первой буквой имени. Акция показывает тикер, а при его отсутствии ISIN; облигация — ISIN. Название и логотип ведут на страницы акции или облигации, когда доступен точный UID инструмента.
Результат открытой позиции имеет явный знак: плюс при положительном, минус при отрицательном, без знака при нуле. Цвет дополняет знак. Иные отображаемые активы используют компактные плитки в адаптивной сетке без логотипа и с подписью результата. Отсутствующие показатели скрываются, а не подменяются нулём или заглушкой.
Рядом с вкладкой «Позиции» на странице отдельного счёта есть вкладка «Концентрация»: она показывает, где сконцентрированы деньги — крупнейшие бумаги, секторы и эмитенты. В режиме «Все счета» её нет.
Существует расхождение: согласованная спецификация представления позиций
требует доступности всех иных типов в отдельной секции, а текущие frontend
и его проверка исключают CURRENCY только из списка карточек. Такие позиции
остаются в ответе, валютных итогах, структуре и знаменателе долей остальных
позиций. Это описание фактического ограничения; выбор между изменением
интерфейса и согласованием требований остаётся отдельной задачей.
Свежесть и границы
При первом запросе экран показывает каркас заголовка, сводки и разделов. Три формы валютных карточек в каркасе не обещают наличие трёх валют. Загрузка обозначена для вспомогательных технологий; декоративные элементы не содержат данных и не получают фокус. При обычном фоновом обновлении сохраняются предыдущие суммы и время успешного получения в UTC.
Серверный isStale обозначает возраст снимка старше часа: обновлением
владеет часовой обход, а не запрос экрана. Он показывается рядом с суммами
вместе с временем последнего успешного результата и исходом последней часовой
попытки. Неудачная попытка клиента обновить уже показанный ответ о себе не
сообщает: эти состояния независимы, но пользователю видимо только состояние
источника. Успешное автоматическое перечитывание обновляет суммы и время;
обозначение устаревания определяется новым isStale.
Правила времени и ошибок приведены в потоке загрузки.
Отдельного чтения истории стоимости нет, но каждый полный снимок сохраняет точку оценки по счёту и валюте для будущих поддерживаемых представлений; публичного графика в текущем решении нет. Нет также валютной конвертации, учёта виртуальных позиций или заблокированных средств. Последний полный снимок сохраняется после перезапуска; обновлением личных данных владеет часовой обход, рассчитанный на один экземпляр backend. Действие «Обновить» выполняет только локальное перечитывание открытого экрана и не запускает работу с T-Bank.
Для проверки конкретной суммы используйте руководство по расхождениям. Проверяемое поведение отдельного счёта описано в спецификации портфеля; точную форму HTTP-ответа задаёт OpenAPI backend.