Outbox-контракт (backend ↔ бот)
Описание
Бот не подписан ни на какие события backend'а напрямую (ни очередь, ни
webhook) — вся доменная интеграция идёт через транзакционный outbox:
таблицу bot_event_outbox, которой владеет apps/backend, и HTTP-контракт
/bot/events/pending + /bot/events/ack, который бот поллит.
Модуль на стороне backend: apps/backend/src/bot/ (BotOutboxModule —
@Global(), экспортирует BotOutboxService; BotModule — контроллер
/bot/*). Модуль на стороне бота: apps/onboarding-bot/src/outbox/
(OutboxConsumerService + EventHandlersService).