refactor!: simplify runtime coordination #7
Keep financial ownership, atomic publication and refresh CAS. Failed refresh leaves cookies untouched; logout still clears them. Remove full-history candle prefetch and special metadata retries. Use native Pino request context instead of parallel middleware. BREAKING CHANGE: remove investment stateVersion, queued sync state, and tbank-sync status progress/resources. Consumers must observe resources through sync=observe with the updated frontend contract.
This commit is contained in:
@@ -43,6 +43,10 @@ CA mechanism. Точные параметры и ограничения прин
|
||||
[validated environment](../../src/config/env.validation.ts) и
|
||||
[TbankClient](../../src/integrations/tbank/tbank.client.ts).
|
||||
|
||||
Все RPC, включая metadata, допускают один повтор временной upstream-ошибки.
|
||||
Переполнение локальной очереди не повторяется. Свечи загружаются по требуемому
|
||||
диапазону; prefetch портфеля и автоматический переход к `all` не поддерживаются.
|
||||
|
||||
Эта queue/retry policy относится к T-Bank. MOEX/NCR HTTP clients используют
|
||||
собственный bounded timeout и безопасный unavailable outcome; не приписывай им
|
||||
gRPC retry policy. При изменении upstream сначала прочитай конкретный client.
|
||||
|
||||
@@ -7,10 +7,12 @@
|
||||
- `info` — значимый lifecycle/outcome; `debug` — подробности успешного RPC;
|
||||
`warn` — восстановимая проблема/retry; `error` — окончательный сбой.
|
||||
Не добавляй log на каждый вход/выход функции или дубликат HTTP completion.
|
||||
- RequestContextService и request middleware владеют correlation: серверный
|
||||
request ID возвращается как `X-Request-ID`, входящий client ID хранится отдельно.
|
||||
- Native `nestjs-pino` context и `pino-http` completion владеют correlation:
|
||||
server request ID возвращается как `X-Request-ID`, client ID хранится отдельно.
|
||||
Настройки принадлежат `common/logging/logging.module.ts`; второй AsyncLocalStorage
|
||||
или HTTP completion middleware не нужен.
|
||||
Передавай существующий context, не создавай собственный UUID в каждом service.
|
||||
- Wrapper ограничивает поля, Pino redacts request secrets. Не логируй passwords,
|
||||
- StructuredLogger ограничивает поля, Pino redacts request secrets. Не логируй passwords,
|
||||
tokens, cookie, Authorization, credentials, connection generation, raw body
|
||||
или upstream error. Secret в `message/stack` не становится безопасным из-за
|
||||
allowlist; правила [Security](security-auth.md) обязательны для sensitive data.
|
||||
|
||||
@@ -17,7 +17,9 @@ Source code конфигурации cookie —
|
||||
проверки browser/HTTP поведения, не только TypeScript.
|
||||
|
||||
Refresh rotation атомарна: один победитель, проигравший/superseded token получает
|
||||
401, но сам по себе не отзывает session победителя. Не вводи replay history/grace
|
||||
401, но не меняет cookie и сам по себе не отзывает session победителя.
|
||||
Cookie очищает logout; межвкладочная синхронизация не требуется, допустим re-login.
|
||||
Не вводи Web Locks, replay history/grace
|
||||
или иной security contract без текущей задачи. Logout идемпотентен, отзывает
|
||||
сессию и очищает refresh cookie на HTTP-границе.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user