Warehouse Service — Events

(Обновлено в BR 1.9)

Статус реализации

События ниже спланированы, но в текущем коде kafkaTemplate.send(...) не вызывается. Consumer’ы (для store.created, catalog.product.updated) также ещё не реализованы. При добавлении потребителей — включить публикацию в TechCardService / ReceiptActService / WriteOffActService.

Публикует (planned)

warehouse.tech-card.updated

Публикуется при создании, обновлении или удалении техкарты.

Topic: warehouse.tech-card.updated Consumer group: для будущих потребителей (авто-стоп-лист, BFF кэш)

{
  "event_id": "uuid",
  "timestamp": "datetime",
  "version": 1,
  "payload": {
    "tech_card_id": "uuid",
    "product_id": "uuid",
    "modifier_option_id": "uuid | null",
    "action": "created | updated | deleted",
    "franchise_id": "uuid"
  }
}

warehouse.receipt-act.posted

(BR 1.14)

Публикуется при проводке акта приёмки.

Topic: warehouse.receipt-act.posted

{
  "event_id": "uuid",
  "timestamp": "datetime",
  "version": 1,
  "payload": {
    "receipt_act_id": "uuid",
    "warehouse_id": "uuid",
    "store_id": "uuid",
    "franchise_id": "uuid",
    "total_amount": "decimal",
    "line_count": "integer"
  }
}

warehouse.write-off-act.posted

(BR 1.14)

Публикуется при проводке акта списания.

Topic: warehouse.write-off-act.posted

{
  "event_id": "uuid",
  "timestamp": "datetime",
  "version": 1,
  "payload": {
    "write_off_act_id": "uuid",
    "warehouse_id": "uuid",
    "store_id": "uuid",
    "franchise_id": "uuid",
    "total_cost": "decimal",
    "line_count": "integer"
  }
}

Потребляет

catalog.product.updated

Источник: Catalog Service. Используется для инвалидации кэша названий продуктов/ингредиентов.

Consumer group: warehouse-service-group

На MVP

Warehouse Service не кэширует названия продуктов — lookup при каждом запросе. Событие подготовлено для будущей оптимизации.

store.created

(BR 1.14)

Источник: Store Service. При создании ТТ — автоматически создаётся склад.

Consumer group: warehouse-service-group

{
  "event_id": "uuid",
  "timestamp": "datetime",
  "version": 1,
  "payload": {
    "store_id": "uuid",
    "franchise_id": "uuid",
    "name": "string"
  }
}

Обработка: WarehouseService.createForStore(store_id, franchise_id, name) — создаёт запись в warehouses.