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).
Зависимости
- Kafka — consume only (без публикации)
- Auth Service / User Service — авторизация
- Order Service — основа заказов
- Catalog Service — меню, стоп-листы
- Store Service — ТТ, столы, маркетинговые слайды
- Aggregator Service — заказы агрегаторов
- PayKeeper Adapter — фискализация и эквайринг
Ссылки
- API контракты
- События
- Event Bus — общая SSE-архитектура
- System Overview