[APP-AB-02] Реактивное обновление холодильника через WebSocket
Интеграция событий приёмки
NoteКраткая карточка задачи
- Репозиторий / Компонент:
food_tracker_mobile(Dart / Flutter). - Тип задачи: Frontend / Интеграция.
- Технологический стек: WebSockets /
web_socket_channel. - Статус: В анализе
Описание задачи
Чтобы не заставлять пользователя ждать завершения работы ИИ и пайплайна очередей на экране приёмки, необходимо перевести обновление данных на реактивные рельсы. Пользователь должен иметь возможность сразу выйти с экрана приёмки, а новые продукты появятся в его холодильнике автоматически в реальном времени.
Инструкция по шагам для Flutter
- WebSocket Соединение: При старте приложения инициализировать постоянное WebSocket-соединение в бэкграунд-сервисе:
wss://://foodtracker.com{user_token}. - Подписка на события очереди: Реализовать прослушивание потока данных (Stream) от вебсокета на предмет события типа
PRODUCTS_PROCESSED. - Обработка события: При получении события
PRODUCTS_PROCESSED(которое бэкенд пришлет сразу после того, как воркер вычитает сообщение из топика и запишет в Postgres):- Вызвать триггер обновления списка продуктов:
context.read<FridgeBloc>().add(FetchProducts()). - Показать пользователю всплывающее уведомление внутри приложения (In-App Notification): “Успешно распознано Х продуктов из вашего чека!”.
- Вызвать триггер обновления списка продуктов:
- Закрытие экрана: На экранах ручного ввода/сканирования чека после получения ID из S3 сразу разрешать переход по кнопке “Назад”, не блокируя интерфейс.