Files
codex-bot 0469756d3b
Specs security / security (push) Successful in 7s
Specs verify / verify (push) Successful in 10s
spec: allow warning and retry after exhausted read retries (WealthLedger/specs#79) (#80)
2026-11-03 07:45:09 +03:00

4.4 KiB

frontend-ui-resilience Specification

Purpose

Обеспечивает безопасное восстановление frontend после непойманной ошибки маршрута, не смешивая runtime failures с ожидаемыми состояниями инвестиционных сценариев.

Requirements

Requirement: Frontend безопасно обрабатывает непойманные ошибки маршрута

Frontend SHALL показывать понятный fallback вместо аварийно завершившегося route content, когда на public или protected route возникает непойманная runtime-ошибка. Fallback MUST предоставлять пользователю безопасный путь навигации и MUST NOT показывать технические детали ошибки.

Scenario: Ошибка на protected route

  • WHEN при отображении protected route возникает непойманная runtime-ошибка
  • THEN frontend показывает fallback с навигацией к безопасному route для текущего auth state

Scenario: Ошибка на public route

  • WHEN при отображении public route возникает непойманная runtime-ошибка
  • THEN frontend показывает fallback с навигацией к public route без технических деталей ошибки

Requirement: Frontend восстанавливается после навигации

Frontend SHALL сбрасывать состояние route error после перехода пользователя на другой route и MUST отображать новый route, если он не выбрасывает runtime-ошибку.

Scenario: Навигация после fallback

  • WHEN пользователь переходит с fallback на другой route
  • THEN frontend сбрасывает предыдущую runtime-ошибку и отображает целевой route

Requirement: Ожидаемые finance states не становятся route failures

Frontend SHALL сохранять локальное отображение известных состояний Brokerage Account, Portfolio и T-Bank connection. Эти состояния MUST NOT заменяться глобальным fallback. Временная ошибка фонового чтения MUST сохранять доступный результат без предупреждения об устаревании, технической ошибки и ручного повтора, пока автоматические повторы не исчерпаны; для Brokerage Account и Portfolio после их исчерпания применяется frontend-data-resilience (предупреждение и «Повторить»), для T-Bank connection поведение остаётся тихим. При отсутствии результата SHALL показываться локальная недоступность с автоматическим восстановлением. Подтверждённая необходимость входа, восстановления подключения или выбора доступного счёта MUST сохранять понятное объяснение и соответствующее действие, не маскируясь сохранёнными личными данными.

Scenario: Portfolio Snapshot устарел

  • WHEN frontend получает устаревший Portfolio Snapshot в действующей границе доступа
  • THEN frontend отображает Portfolio без предупреждения об устаревании и без глобального fallback

Scenario: Ошибка T-Bank connection

  • WHEN запрос T-Bank connection завершается известной ошибкой
  • THEN frontend сохраняет локальное состояние: временный сбой чтения восстанавливается автоматически, а подтверждённая необходимость действия пользователя сопровождается этим действием вместо глобального fallback