63 lines
3.6 KiB
Markdown
63 lines
3.6 KiB
Markdown
## Why
|
||
|
||
Frontend data-loading code сейчас заставляет page-level callers вручную
|
||
передавать текущий session access token в несколько investment data hooks,
|
||
хотя сам bearer header уже добавляется централизованным authenticated
|
||
transport boundary. Из-за этого token одновременно является security credential
|
||
и локальным флагом включения запроса в местах, которые не должны владеть
|
||
transport concerns.
|
||
|
||
Это стоит исправить сейчас, потому что review от 25 авг 2026 подтвердил
|
||
повторяющийся token-plumbing pattern как отдельную frontend architecture
|
||
проблему. Пока он остаётся в публичных hook interfaces, новые screens будут
|
||
копировать тот же контракт и расширять область, где auth state виден без
|
||
необходимости.
|
||
|
||
## What Changes
|
||
|
||
- Сузить frontend data-loading interfaces так, чтобы callers investment views
|
||
больше не передавали session access token через props или hook arguments для
|
||
включения query.
|
||
- Централизовать authenticated-query gating на frontend API/auth boundary,
|
||
сохранив существующую transport responsibility: bearer injection остаётся
|
||
единственным местом, которое формирует Authorization header для защищённых
|
||
backend requests.
|
||
- Сохранить текущее observable behavior для authenticated и unauthenticated
|
||
users: защищённые investment requests не выполняются без active session, а
|
||
при active session продолжают использовать тот же backend API contract и
|
||
тот же refresh/retry behavior.
|
||
- Сохранить existing query cache policy, stale behavior, loading/error/empty
|
||
presentation states и generated OpenAPI snapshot.
|
||
- Non-goal: менять backend auth semantics, HTTP routes, response DTOs,
|
||
generated API types, session storage model или T-Bank connection behavior.
|
||
- Non-goal: выполнять несвязанные frontend page restructuring или error-code
|
||
consolidation из architecture review.
|
||
|
||
## Capabilities
|
||
|
||
### New Capabilities
|
||
|
||
_Нет._
|
||
|
||
### Modified Capabilities
|
||
|
||
_Нет._
|
||
|
||
Это behavior-preserving frontend architecture cleanup. Change отказывается от
|
||
Delta Specs через `skip_specs: true`, потому что user-visible capability,
|
||
backend API contract, durable data behavior и product requirement не меняются.
|
||
Если при Design или реализации обнаружится observable behavior change, работа
|
||
должна вернуться к Proposal и Delta Specs до продолжения.
|
||
|
||
## Impact
|
||
|
||
Users должны видеть те же investment screens и auth transitions до и после
|
||
change. Frontend maintainers и AI agents получают более узкий data-loading
|
||
interface: session token остаётся detail auth/API boundary, а не параметром
|
||
каждого investment data consumer.
|
||
|
||
Affected implementation area — frontend authenticated data-loading boundary и
|
||
его callers. Specs отслеживает SDD lifecycle. Backend и as-built docs
|
||
repository не должны меняться, если Design не обнаружит фактическую
|
||
документационную дельту.
|