User Service — Events

Публикует

user.kds_device.revoked (BR 5.1)

Публикуется при DELETE /admin/kds/devices/{id} — force-logout KDS-устройства администратором. Используется pos-bff чтобы немедленно разорвать активные WebSocket-сессии этого устройства (вместо ожидания следующего REST-запроса с 401).

Topic: user.kds_device.revoked

Ключ Kafka: device_id

Retention: 1 день (короткое — событие потеряет актуальность через сутки)

{
  "event_id": "uuid",
  "event_type": "user.kds_device.revoked",
  "timestamp": "datetime",
  "version": 1,
  "source": "user-service",
  "payload": {
    "device_id": "uuid",
    "franchise_id": "uuid",
    "store_id": "uuid",
    "revoked_by_user_id": "uuid",
    "revoked_at": "datetime"
  }
}

Консьюмеры:

  • pos-bff — ищет открытые WS-сессии с этим device_id, отправляет close-frame DEVICE_REVOKED, удаляет из реестра подписчиков

Прочие события

На текущем этапе User Service не публикует других Kafka-событий. Приостановка/возобновление ЮЛ реализована через синхронный вызов Store Service (internal API).

Потребляет

User Service не потребляет внешних событий на текущем этапе.

Запланировано к публикации (BR 1.4.1, ещё не в коде)

EventTopicОписаниеPayload
user.shift.auto-closeduser.shift.auto-closedСмена автоматически закрыта (превышение 24ч){ employee_id, store_id, shift_record_id, clock_in, auto_clock_out }
user.payroll.confirmeduser.payroll.confirmedВедомость подтверждена{ payroll_id, store_id, period, confirmed_by, employee_count, total_amount }

Пока не опубликовано

ShiftAutoCloseJob фиксирует автозакрытие в БД, но Kafka-события не шлёт. Будет включено при появлении консьюмеров (Notification Service, Finance Service).

Будущие события

EventОписаниеКогда понадобится
user.legal-entity.suspendedЮЛ приостановленоЕсли появятся другие консьюмеры кроме Store Service
user.legal-entity.resumedЮЛ возобновленоЕсли появятся другие консьюмеры
user.legal-entity.deletedЮЛ удалено (soft)Для синхронизации с другими сервисами
user.employee.deactivatedСотрудник деактивированAuth Service (инвалидация сессий)

События клиентов — в Customer Service

(BR 3.1) События customer.created / customer.updated / customer.deleted публикует Customer Service, а не User Service. Строка user.customer.registered убрана — клиенты вынесены в отдельный микросервис.

Переход на Kafka

При появлении нескольких консьюмеров одного события (например, приостановка ЮЛ нужна и Store Service, и Finance Service) — переводим на Kafka, убираем синхронный вызов.