Document local data ownership, coverage and freshness, refresh behavior, failure recovery and additive migration rollback. Record ADR 017.
3.7 KiB
Загрузка портфеля
Экран /accounts/:accountId читает последний полный snapshot из SQLite
после проверки сессии, подключения и локального membership. Если список
счетов ещё неизвестен, сервер сообщает о загрузке доступа без выдачи личных
данных неизвестного ID. Известный недоступный счёт возвращает 404.
Основной обмен
Обычный GET возвращает локальный envelope. Missing/stale зависимости
запрашиваются в фоне; чтение не ждёт T-Bank. Для нового полного snapshot
нужны оба финансовых ответа GetPortfolio и GetPositions. Суммы и позиции
публикуются вместе; metadata дополняет представление независимо, с доступным
UID/FIGI вместо имени до её загрузки.
Свежесть portfolio — 60 секунд. Истечение срока не удаляет snapshot и не создаёт таймер. «Обновить» на обзоре перечитывает зависимости текущего экрана: membership, portfolio, показанные операции, доход и будущие события. Секции могут быть готовы независимо. Подробнее — свежесть.
Границы доступа
Публикация проверяет connection revision и attempt в той же транзакции. Замена или удаление подключения не допускает позднюю запись прежней работы. Frontend очищает недоступный personal view и отклоняет запоздалые ответы. В режиме «Все счета» состав accounts и snapshots читается согласованно, но их source times могут различаться.
Ошибки и результат для пользователя
Нет подключения — 409 TBANK_NOT_CONNECTED, известный отказ токена —
400 INVALID_TBANK_TOKEN, недоступный счёт — 404. Они не маскируются
запасным snapshot. Transient source failure оставляет прежний полный портфель
и его исходное время с безопасным предупреждением. При отсутствии snapshot
показывается missing/failed, без нулевых итогов. 503 означает ошибку
обслуживания HTTP-запроса, а не принятой фоновой работы.
Observer запрашивает статус известной работы, затем sync=observe читает
изменившийся ресурс без запуска синхронизации. При уходе и terminal outcome
наблюдение прекращается. Повторное открытие может запросить недостающее;
после рестарта сохранённый snapshot доступен сразу.
Денежные правила находятся в справочнике, проверка расхождения — в диагностике, RPC/лимиты — в интеграции T-Bank.