[APP-ERR-03] Замена технических ошибок gRPC на визуальные UI-модалки
Экран Приёмка Продуктов
NoteКраткая карточка задачи
- Репозиторий / Компонент:
food_tracker_mobile(Dart / Flutter). - Тип задачи: Frontend (UI / Верстка).
- Связана с экраном: Приёмка продуктов (Режим чека / Режим голоса).
- Статус: Готово к реализации
Описание задачи
Текущая реализация при возникновении сетевых сбоев выводит сырой технический текст ошибки gRPC сокета напрямую на экран пользователя (например, gRPC Error (code: 16... authorization token is not provided)).
Необходимо скрыть технические детали от пользователя и заменить плашку ошибки на красивые нижние шторки (Modal Bottom Sheets) с человекочитаемым текстом и кнопками действий в зависимости от кода ошибки.
Справочник маппинга ошибок (Для UI)
При возникновении ошибки сетевого слоя, интерфейс должен отобразить нижнюю шторку, используя следующие тексты и иконки:
1. Ошибка авторизации сессии (gRPC 16 / HTTP 401)
- Иконка:
<i class="bi-lock-fill"></i> - Заголовок:
Сбой авторизации - Текст:
Не удалось подтвердить ваш профиль для загрузки данных. Пожалуйста, попробуйте обновить сессию. - Кнопка действия:
[ Обновить сессию ]
2. Сервер недоступен / Обрыв сети (gRPC 14 / HTTP 503)
- Иконка:
<i class="bi-cloud-slash-fill"></i> - Заголовок:
Проблемы со связью - Текст:
Сервер приёмки временно недоступен. Проверьте подключение к интернету или попробуйте еще раз через минуту. - Кнопка действия:
[ Повторить попытку ]
3. Ошибка валидации / Нечитаемый чек (gRPC 3 / HTTP 400)
- Иконка:
<i class="bi-exclamation-triangle-fill"></i> - Заголовок:
Ошибка распознавания - Текст:
Не удалось распознать продукты. Пожалуйста, сделайте более четкое фото чека или повторите аудиозапись. - Кнопка действия:
[ Понятно ]
Инструкция по шагам для Flutter
- Создание компонента шторки: Сверстать универсальный виджет
AppErrorBottomSheetна основе стандартногоshowModalBottomSheet. - Параметризация виджета: Компонент должен принимать на вход иконку, заголовок, текст описания и колбэк-функцию для кнопки действия (
onPressed). - Перехват стейта ошибки: В UI-слое экрана приёмки продуктов внутри
BlocListenerвместо вывода сырого текста ошибки вызывать метод отображения созданной шторки. - Реализация маппинга: Написать простую конструкцию
switch-caseпо кодамGrpcError, которая подставляет нужные параметры из справочника выше при вызове шторки.