diff --git a/features/portfolio-view.md b/features/portfolio-view.md index 30b985c..19f4da6 100644 --- a/features/portfolio-view.md +++ b/features/portfolio-view.md @@ -65,6 +65,37 @@ Metadata инструмента ищется сначала по instrument UID, сводка не обещает полной оценки портфеля. Отсутствующие валюты не дополняются карточками; при пустом списке итогов доступный состав портфеля остаётся видимым. +## Структура портфеля + +После валютной сводки, перед составом портфеля, показана структура по типам: +акции, облигации, другие активы и свободные деньги. Этот же блок используется +в обзоре «Все счета». Mantine Charts 9.5.1 с Recharts 3.10.1 отображает кольцо +и подсказку сегмента; суммы и доли всегда доступны в соседнем списке. +На узком экране список расположен под кольцом. При нескольких валютах +доступен Select, при одной — дополнительный control отсутствует. + +Backend формирует `Portfolio.structure` из нормализованных позиций и денег, +используя точную decimal-арифметику. Сводные итоги повторно не прибавляются. +Тип `CURRENCY` относится к другим активам; денежные остатки — к свободным +деньгам. Доли учитывают деньги той же валюты, без FX. Доли на существующих +карточках позиций сохраняют прежний знаменатель без денег. + +Суммы категорий передаются без потери точности. Сервер округляет процент до +шести знаков, клиент отображает его до сотых; положительная доля меньше +0,01% обозначается «< 0,01 %», если она не округлилась в ноль на сервере. +В графическую библиотеку передаются только числовые проценты для геометрии, +а суммы в списке и подсказке форматируются из исходных decimal strings. + +`unvaluedCategories` сохраняет типы и количество позиций без оценки. Их +валюту нельзя определить по текущей стоимости, поэтому при наличии таких +позиций кольцо и доли недоступны для всех валют. UI показывает объяснение, +известные суммы и категории без оценки, не выдавая неизвестное за ноль. +Отрицательная позиция или остаток отключает кольцо своей валюты даже при +положительной сумме категории; суммы со знаком остаются в списке. В общем +режиме проверка использует остатки отдельных счетов до их взаимозачёта. +При пустом или нулевом составе вместо кольца показано текстовое состояние. +Блок использует тот же snapshot и lifecycle обновления, что и валютная сводка. + ## Свежесть и ошибки При первом открытии Portfolio frontend показывает structural skeleton заголовка, @@ -91,4 +122,4 @@ stale-предупреждение зависит от `isStale` нового о ## Ограничения MVP -In-memory cache теряется после перезапуска и рассчитан на одного User. Нет истории Snapshot, операций, графиков, валютной конвертации, виртуальных позиций, заблокированных средств, ручного обновления и поддержки нескольких backend instances. +In-memory cache теряется после перезапуска и рассчитан на одного User. Нет истории Snapshot, графиков стоимости и доходности, валютной конвертации, виртуальных позиций, заблокированных средств, ручного обновления и поддержки нескольких backend instances.