POS BFF

Ответственность

Backend-for-Frontend для POS Desktop. Агрегирует данные из микросервисов (Order, Catalog, Store, User, PayKeeper Adapter), проксирует REST-вызовы кассового приложения, держит SSE-канал для realtime-обновлений (мост Kafka → EventSource).

Без бизнес-логики

POS BFF — только агрегация, маппинг и проксирование. Бизнес-логика остаётся в Java-микросервисах.

Без собственной БД

POS BFF stateless. Состояние сессии — JWT кассира. Кэш — память процесса (для маршрутизации SSE по store_id).

Функции

REST API для POS Desktop

  • Логин кассира (proxy в Auth/User Service)
  • Открытие/закрытие смены (proxy в Order Service)
  • CRUD заказа, добавление позиций, оплата (proxy в Order Service + PayKeeper Adapter)
  • Меню, стоп-листы, прейскуранты (proxy в Catalog Service)
  • Столы зала и dine-in (proxy в Store Service)
  • Заказы агрегаторов (proxy в Aggregator Service)
  • Маркетинговая информация для standby-режима (BR 6.1)GET /pos/api/v1/marketing/active агрегирует слайды + конфиг standby ТТ

SSE Hub (мост Kafka → POS Desktop)

(Внедрено в BR SSE-1…7, задачи #284–290)

Fastify держит долгоживущий SSE-канал /pos/api/v1/pos/notifications/stream на каждый POS-терминал. Внутри pos-bff — kafkajs consumer (per-pod group pos-bff-sse-${HOSTNAME}), который слушает топики микросервисов и форвардит события подключённым клиентам.

Топики: см. Events.

SSE-события для клиента: menu.invalidate, table.invalidate, aggregator.invalidate, marketing.invalidate (BR 6.1).

Зависимости

Ссылки