docs: record minimal runtime coordination

Document accepted cross-tab reauthentication, on-demand candles,
native query/logging ownership and the complete deployment path.

Preserve historical ADR context and link amendments through ADR 018.
Related backend change: WealthLedger/backend@d698ed9
This commit is contained in:
2026-10-03 21:32:35 +03:00
committed by ksv741
parent 6fa62fb8b5
commit 0ee54ca952
10 changed files with 85 additions and 32 deletions
@@ -43,6 +43,10 @@ Status GET и data GET с `sync=observe` не запускают работу.
наблюдение прекращается. Поздний ответ не заменяет уже принятый новый.
[HTTP API](../http-api.md) объясняет envelope и экранный refresh.
Отменой query lifecycle владеет TanStack Query. Status не пересобирает
финансовые ответы и не передаёт hash notifications. Свечи нового диапазона
загружаются при его открытии; предзагрузка всей истории портфеля не выполняется.
## Смена подключения
Каждое чтение проверяет локальную сессию, текущее подключение, известный отказ
+6 -11
View File
@@ -142,20 +142,15 @@ backups находятся рядом с data directory, вне checkout, и а
не удаляются. Незавершённая копия помечается `.partial-` и не подходит для restore.
Ключ шифрования хранится отдельно. Локальная копия не защищает от потери диска.
## Независимое обновление frontend
## Единый цикл обновления
Если изменились только image или конфигурация frontend, backend не
пересоздаётся, backup и migration не выполняются. Возможен короткий перерыв
на внешней точке входа; старым browser tabs может потребоваться reload.
При неизменных исправных контейнерах повтор команды не пересоздаёт сервисы.
## Независимое обновление backend
Изменение image или конфигурации backend запускает stop → backup → migration →
readiness. Неизменный frontend не пересоздаётся. Во время простоя возможен 502.
Каждое обновление, включая повтор того же тега и изменение только frontend,
выполняет stop → backup → migration → readiness. Сравнение hashes контейнеров
и конфигурации не выполняется. Приняты короткий простой API и дополнительный
backup; во время простоя возможен 502, вкладкам может потребоваться reload.
Ошибка migration блокирует старт, ошибка готовности останавливает новый backend;
ошибка frontend не останавливает исправный backend. Успех фиксируется только
после проверок запуска затронутых компонентов.
после проверок запуска обоих компонентов.
Одна file lock защищает установку от параллельных команд. Маркер незавершённого
обновления блокирует повтор до разбора оператором. Он содержит этап, версии
+7 -2
View File
@@ -26,8 +26,8 @@ T-Bank data GET возвращают envelope `{ data, meta }`. `data` може
при missing или неполном финансовом агрегате; partial ledger/candles могут
содержать подтверждённые строки. `meta` разделяет availability, freshness,
lastSuccessfulAt, sync, coverage и состояния зависимостей. `dataRevision`
описывает набор данных, `stateVersion` — наблюдаемое состояние, включая
пустое завершённое покрытие. Ни одно поле не раскрывает connection revision.
описывает набор данных; пустое завершённое покрытие явно представлено в coverage.
Публичной hash-версии состояния нет. Ни одно поле не раскрывает connection revision.
Обычный GET планирует missing/stale зависимости после проверки доступа.
GET с `sync=observe` только читает. `POST /api/v1/tbank-sync` принимает
@@ -35,6 +35,11 @@ GET с `sync=observe` только читает. `POST /api/v1/tbank-sync` пр
scope. `GET /api/v1/tbank-sync/:id` наблюдает разрешённую работу; чужой или
прежний handle возвращает `404`. Приём работы не означает её успех.
Status возвращает state/errorCode без данных ресурсов и численных progress
counters. Клиент перечитывает показанные resources через `sync=observe` во время
работы и после завершения, сохраняя generated query identity. Sync states ресурса:
`idle`, `running`, `failed`; отдельного публичного `queued` нет.
Source failure принятой работы передаётся безопасным `meta.sync.errorCode`;
HTTP transport/access/input errors сохраняют Problem Details. Старые данные
при transient failure сохраняют исходное успешное время. Детали поведения —