spec: complete persist-tbank-data implementation
Conventional commits / commits (pull_request) Successful in 12s
Specs security / security (pull_request) Successful in 7s
Specs verify / verify (pull_request) Successful in 11s
Specs security / security (push) Successful in 7s
Specs verify / verify (push) Successful in 9s

Record the approved proposal, delta specifications, design and 27 verified
implementation tasks. Keep the change active; archiving and main-spec synchronization
are deferred.
This commit was merged in pull request #16.
This commit is contained in:
2026-09-26 21:29:24 +03:00
parent ba76f6fccc
commit 2f5814abdd
11 changed files with 2750 additions and 0 deletions
@@ -0,0 +1,73 @@
## Why
Повторные открытия инвестиционных экранов зависят от скорости и доступности
T-Bank, а перезапуск приложения теряет уже загруженную историю. Пользователь
согласовал [ADR 017](../../../../docs/adr/017-local-tbank-reads-and-background-sync.md):
показывать сохранённые данные сразу и обновлять их в фоне только по запросу.
## What Changes
- Все экраны T-Bank — счета, портфель, операции, доходы, инструменты,
текущие цены, свечи и выплаты — повторно используют постоянно сохранённые
данные, в том числе после перезапуска. Обычный ответ не ждёт брокера;
целевой ориентир до 500 мс ещё должен быть подтверждён измерениями.
- Запрос экрана запускает обновление отсутствующих или устаревших данных:
портфель, текущие цены и незавершённая дневная свеча — 1 минута;
текущий месяц операций и список счетов — 5 минут;
инструменты и календари выплат — сутки. Само течение времени работу не запускает.
- Полные прошлые месяцы операций и завершённые свечи сохраняются.
Пропуски догружаются при запросах; ручное обновление перечитывает показанный
период и зависимости текущего экрана, а не весь накопленный архив.
- При первой загрузке сначала доступны нужный экрану период и сравнения
доходов, затем догружается вся доступная история счёта. История бумаг
текущего портфеля загружается заранее в рамках этой работы; остальных —
при открытии инструмента. Начатая работа может завершиться после ухода.
- Пользователь различает свежесть, полноту, загрузку и ошибку обновления.
Неполный период не считается окончательным финансовым результатом или
подтверждением отсутствия операций. Ошибка сохраняет прежние данные.
- Личные данные доступны только своему пользователю в границах текущего
подключения. Старое подключение не может опубликовать поздний результат.
Существующие проверки доступа и ошибки интеграции сохраняются.
«Полнота истории счёта» используется в смысле
[глоссария](../../../../docs/glossary.md#полнота-истории-счёта): все доступные
исполненные операции периода на момент успешной сверки, включая полный пустой
период. Полнота не означает свежесть и не исключает поздние исправления.
Стабильность ID операции — принятое допущение проекта, не гарантия T-Bank;
повторно полученные поля операции могут изменяться.
**Non-goals:** периодическая синхронизация, автоматический поиск исправлений
полной старой истории, обнаружение сменившихся ID, история стоимости портфеля,
предзагрузка всего каталога, архив без подключения, новые сценарии отключения
и закрытых счетов. Эта сессия создаёт planning artifacts; реализация не выполняется.
## Capabilities
### New Capabilities
- [specs/tbank-data-sync/spec.md](specs/tbank-data-sync/spec.md): постоянное локальное чтение, запросы
синхронизации, интервальная полнота, восстановление, общие данные инструментов,
границы подключения и проверяемые критерии быстродействия.
### Modified Capabilities
- [specs/brokerage-accounts/spec.md](specs/brokerage-accounts/spec.md): локальный список, сохранённые сводки,
состояния загрузки и ошибок без синхронного ожидания брокера.
- [specs/portfolio-view/spec.md](specs/portfolio-view/spec.md): постоянный последний полный снимок,
минутная свежесть и ручное обновление.
- [specs/brokerage-account-ledger/spec.md](specs/brokerage-account-ledger/spec.md): локальная пагинация и фильтрация,
полнота периода вместо обязательного перечитывания RAM-кэша.
- [specs/brokerage-account-income-analytics/spec.md](specs/brokerage-account-income-analytics/spec.md): полнота выбранного периода
и сравнений, сохранение результата, идентичность повторно загруженных операций.
- [specs/brokerage-account-upcoming-events/spec.md](specs/brokerage-account-upcoming-events/spec.md): прогноз из сохранённых
источников с видимой полнотой и ошибкой обновления.
- [specs/frontend-data-resilience/spec.md](specs/frontend-data-resilience/spec.md): различимые состояния серверного
сохранённого результата и клиентского кэша на всех экранах T-Bank.
## Impact
Изменение затрагивает пользователей всех инвестиционных экранов, серверное
хранение и получение данных, публичный контракт состояний, интерфейс обновления
и объясняющую документацию. Финансовые правила, валютная точность, значение
прогнозов и изоляция пользователей сохраняются. Основные specs и чужие active
changes не изменяются до отдельного завершения lifecycle этого change.