# Разобрать расхождение суммы портфеля Используйте этот порядок, когда итог, позиция или доля на экране отличаются от ожидаемого значения. Он помогает определить слой расхождения без изменения данных. Нужны адрес экрана и уже доступный ответ API либо синтетический пример из существующей проверки. Реальные токены, персональные выгрузки и содержимое базы для разбора не нужны; не переносите их в документацию или отчёт. 1. **Определите предмет сравнения.** Запишите, открыт отдельный счёт или «Все счета» и какой показатель расходится. Текущая стоимость, свободные деньги, результат открытой позиции и полученный доход — разные величины. Убедитесь, что сравниваемые значения относятся к одному составу счетов и инструменту. Название или тикер сами по себе не доказывают совпадение выпуска; используйте доступные UID, FIGI и ISIN. 2. **Сопоставьте время.** Проверьте `lastSuccessfulAt`, `isStale` и показанный исход последней часовой попытки. Серверный снимок не обещает время каждой котировки, а общий портфель может соединять разные моменты. Действия «Повторить» на экране нет: временный сбой чтения восстанавливается автоматически, поэтому расхождение проверяйте по показанному состоянию источника, а не по результату ручного обновления. Перезагрузка backend сохраняет последний полный снимок в SQLite, но не создаёт историю стоимости. 3. **Проверьте состав суммы.** Итог складывается из вычислимых стоимостей позиций и доступных денег в RUB. Не добавляйте деньги второй раз и не включайте заблокированные средства. Ненулевая позиция с `currentValue: null` делает оценку неполной, но не даёт нулевой вклад в смысле полной стоимости. `CURRENCY` участвует в суммах, хотя текущий интерфейс скрывает её карточку — [известное расхождение со спецификацией](../overview.md#как-читать-экран). 4. **Проверьте показатель по его определению.** Используйте [справочник](../data-reference.md#состав-и-денежные-показатели). Условный пример: 2 бумаги по 100 RUB и 50 RUB свободных денег дают 250 RUB стоимости. Доля позиции среди позиций равна 100%, а доля соответствующей категории в структуре с деньгами — 80%. Купоны и дивиденды не включаются в результат открытой позиции. Для проверки десятичных сумм сохраняйте исходные строки; арифметика с плавающей точкой может сама создать расхождение. 5. **Найдите ответственную границу.** Если ответ API корректен, а экран теряет цифры, валюту или показатель, исследуйте frontend. Если исходные безопасные данные и нормализованный ответ расходятся, исследуйте backend. Если не совпадают ожидаемое и описанное поведение, сначала сопоставьте [спецификацию портфеля](https://git.personal.ksv741.ru/WealthLedger/specs/src/commit/9e227a563dda67620f0ad78228aa8a4c18bf35a0/openspec/specs/portfolio-view/spec.md) и ограничения [потока загрузки](../flows/portfolio-loading.md). Исправление документации само по себе не разрешает конфликт требований и реализации. Для адресной проверки исходников владельцами служат [сервис снимков](https://git.personal.ksv741.ru/WealthLedger/backend/src/commit/016782657acfd35ff3fd755462007938fac35156/src/modules/investments/portfolio/application/portfolio.service.ts), [валютные итоги](https://git.personal.ksv741.ru/WealthLedger/backend/src/commit/016782657acfd35ff3fd755462007938fac35156/src/modules/investments/portfolio/infrastructure/tbank-portfolio.mapper.ts), [структура](https://git.personal.ksv741.ru/WealthLedger/backend/src/commit/016782657acfd35ff3fd755462007938fac35156/src/modules/investments/portfolio/domain/portfolio-structure.ts) и [подготовка экрана](https://git.personal.ksv741.ru/WealthLedger/frontend/src/commit/9f7e342333b80bfacfd5bc394a2dcd0613d33ff3/src/pages/account/ui/AccountPage.vm.ts). Это точки продолжения расследования; смысл вычислений изложен выше. Разбор завершён, когда различие объяснено составом, временем или определением показателя либо получен воспроизводимый пример дефекта с ожидаемым и фактическим результатом. В последнем случае сохраните минимальный синтетический пример и адрес ответственного слоя. Ошибки источника и неизвестные значения не исправляются подстановкой нулей или обходом проверки доступа.