docs: document T-Bank cache generation boundary

This commit is contained in:
2026-09-01 05:55:09 +03:00
parent adc369be79
commit 3d2bc1eac4
4 changed files with 28 additions and 6 deletions
+20
View File
@@ -24,6 +24,26 @@ sequenceDiagram
`INVALID_TBANK_TOKEN` означает, что T-Bank отклонил аутентификацию или права доступа. `TBANK_UNAVAILABLE` означает временную ошибку, превышение лимита, ожидание в очереди или другую ошибку внешнего сервиса.
## Граница финансового кэша
Каждый успешный `PUT` заново шифрует token с новым AES-GCM nonce. Backend
вычисляет из сохранённого шифротекста непрозрачную внутреннюю generation и
разрешает повторно использовать Portfolio Snapshot и Ledger Page Cache только
для текущей generation. Generation не хранится отдельным полем, не входит в
API, logs или errors. Поэтому сохранённый или поздно завершившийся ответ
предыдущего подключения не обслуживает запрос после создания, замены или
удаления connection, включая замену тем же plaintext token.
После успешного `PUT` или `DELETE` frontend сначала коммитит подтверждённый
статус connection, затем сбрасывает все generated GET query в
`/api/v1/brokerage-accounts` subtree. Активные выборки запрашиваются заново, а
неактивные загружаются при следующем использовании; данные предыдущей границы
не остаются Client Cached Snapshot. Неуспешная mutation не меняет status,
backend generation или financial cache. Обычная ошибка фонового refetch
сохраняет Client Cached Snapshot текущей generation. Logout остаётся отдельной
границей Session и полностью очищает status connection и остальные
session-scoped query.
## Конфигурация и ограничения
- `TOKEN_ENCRYPTION_KEY` - закодированный в base64 32-байтный ключ AES-256-GCM; обязателен при запуске.