[APP-AB-02] Реактивное обновление холодильника через WebSocket

Интеграция событий приёмки

Published

August 14, 2026

NoteКраткая карточка задачи
  • Репозиторий / Компонент: food_tracker_mobile (Dart / Flutter).
  • Тип задачи: Frontend / Интеграция.
  • Технологический стек: WebSockets / web_socket_channel.
  • Статус: В анализе

Описание задачи

Чтобы не заставлять пользователя ждать завершения работы ИИ и пайплайна очередей на экране приёмки, необходимо перевести обновление данных на реактивные рельсы. Пользователь должен иметь возможность сразу выйти с экрана приёмки, а новые продукты появятся в его холодильнике автоматически в реальном времени.

Инструкция по шагам для Flutter

  1. WebSocket Соединение: При старте приложения инициализировать постоянное WebSocket-соединение в бэкграунд-сервисе: wss://://foodtracker.com{user_token}.
  2. Подписка на события очереди: Реализовать прослушивание потока данных (Stream) от вебсокета на предмет события типа PRODUCTS_PROCESSED.
  3. Обработка события: При получении события PRODUCTS_PROCESSED (которое бэкенд пришлет сразу после того, как воркер вычитает сообщение из топика и запишет в Postgres):
    • Вызвать триггер обновления списка продуктов: context.read<FridgeBloc>().add(FetchProducts()).
    • Показать пользователю всплывающее уведомление внутри приложения (In-App Notification): “Успешно распознано Х продуктов из вашего чека!”.
  4. Закрытие экрана: На экранах ручного ввода/сканирования чека после получения ID из S3 сразу разрешать переход по кнопке “Назад”, не блокируя интерфейс.