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