3.9 KiB
Загрузка портфеля
Экран /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. Секции могут быть готовы независимо.
Подробнее — свежесть.
Границы доступа
Публикация проверяет connection revision и attempt в той же транзакции. Замена или удаление подключения не допускает позднюю запись прежней работы. Frontend очищает недоступный personal view и отклоняет запоздалые ответы. В режиме «Все счета» состав 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-запроса, а не
завершившуюся фоновую работу.
Денежные правила находятся в справочнике, проверка расхождения — в диагностике, RPC/лимиты — в интеграции T-Bank.