Files
docs/domains/portfolio/flows/portfolio-loading.md
T
ksv741 a45d3e77b9
Docs security / security (push) Successful in 8s
Docs verify / verify (push) Successful in 13s
Conventional commits / commits (pull_request) Successful in 12s
Docs security / security (pull_request) Successful in 8s
Docs verify / verify (pull_request) Successful in 14s
docs: document hourly investment reads
2026-10-09 19:56:40 +03:00

48 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Загрузка портфеля
Экран `/accounts/:accountId` читает последний полный snapshot из SQLite после
проверки сессии, подключения и локального membership. Если список счетов ещё
неизвестен, сервер сообщает о загрузке доступа без выдачи личных данных
неизвестного ID. Известный недоступный счёт возвращает `404`.
## Основной обмен
Обычный GET и retry возвращают read-only локальный `{ data, meta }` envelope:
они не ждут и не вызывают T-Bank и не предлагают ручную синхронизацию. Часовой
обход текущего подключения обновляет Portfolio независимо от экрана. Для нового
полного snapshot ему нужны оба финансовых ответа `GetPortfolio` и
`GetPositions`; суммы и позиции публикуются вместе. Metadata инструмента
дополняет представление независимо, с доступным UID/FIGI вместо имени до её
онлайн-загрузки.
Открытый экран выполняет локальное перечитывание не чаще одного раза в
30 минут; retry также повторяет только HTTP GET. `data: null` означает, что
полного snapshot ещё нет, а не нулевой портфель. Пустой подтверждённый portfolio
остаётся available complete result. Секции могут быть готовы независимо.
Подробнее — [свежесть](../../../architecture/cross-cutting/data-freshness.md).
## Границы доступа
Публикация проверяет connection revision и attempt в той же транзакции. Замена
или удаление подключения не допускает позднюю запись прежней работы. Frontend
очищает недоступный personal view и отклоняет запоздалые ответы. В режиме
[«Все счета»](../all-accounts.md#полнота-свежесть-и-доступ) состав accounts и
snapshots читается согласованно, но их source times могут различаться.
## Ошибки и результат для пользователя
Нет подключения — `409 TBANK_NOT_CONNECTED`, известный отказ токена —
`400 INVALID_TBANK_TOKEN`, недоступный счёт — `404`. Они не маскируются
запасным snapshot. Временная ошибка часового обхода оставляет прежний полный
portfolio и его исходное `lastSuccessfulAt`; `meta.lastAttempt` сообщает о
failed или partial попытке отдельно. `Portfolio.isStale` сообщает возраст
snapshot, а Client Cached Snapshot и ошибка браузерного HTTP-перечитывания
имеют независимый смысл. При отсутствии полного snapshot `data: null` и
metadata обозначает initial loading либо временную недоступность, без нулевых
итогов. `503` означает ошибку обслуживания самого HTTP-запроса, а не
завершившуюся фоновую работу.
Денежные правила находятся в [справочнике](../data-reference.md), проверка
расхождения — в [диагностике](../how-to/investigate-discrepancy.md), RPC/лимиты
— в [интеграции T-Bank](../../../integrations/tbank.md).