Skip to content

API Events

Outreach không có Kafka và không có BullMQ. Nó là một nguồn event chỉ qua WebSocket. Emission async duy nhất là một broadcast INQUIRY_SUBMITTED real-time tới room quan sát của admin.

1. Inbound — Kafka

Không. Outreach không chạy Kafka consumer.

2. Outbound — Kafka

Không. Outreach không tạo Kafka event. Hệ thống downstream cần dữ liệu yêu cầu thì poll REST API hoặc subscribe qua WebSocket.

3. Inbound — BullMQ

Không. Không có queue worker.

4. Outbound — BullMQ

Không. Không enqueue job nào.

5. WebSocket Emissions

Topic (path)RoomsTriggerEmitter
observation/outreach/inquiry/submittedoutreach/inquiries, outreach/inquiries/{id}POST /inquiries/submit thành côngOutreachSocketEventService.notifyInquirySubmitted()
Thuộc tínhGiá trị
Emitter identifieroutreach-ws-emitter (tên kết nối Redis outreach-ws-redis)
BackendWebSocketEmitter backed bởi Redis (single hoặc cluster qua APP_ENV_WEBSOCKET_REDIS_MODE)
Topic builderWebSocketTopics.build({ paths: ['observation','outreach','inquiry','submitted'] })
Room builderWebSocketRooms.build({ paths: ['outreach','inquiries'(, id)] })
DeliveryFire-and-forget; isReady() guard; Promise.allSettled để một room fail không hủy phần còn lại

6. Payload Schemas

ts
// observation/outreach/inquiry/submitted
export interface InquirySubmittedMessage {
  id: string;              // inquiry id (Snowflake)
  type: string;            // giá trị InquiryTypes, vd "200_SALES"
  firstName: string;
  lastName: string | null;
  email: string;
  businessName: string | null;
  subject: string | null;
  createdAt: string;       // ISO timestamp
}

Nguồn chân lý: packages/outreach/src/components/websocket/socket-event.service.ts. Không có entry packages/core/src/models/messages/ — đây là payload chỉ-WS.

7. Idempotency & Ordering

ChannelDeliveryOrderingRecovery
observation/outreach/inquiry/submittedat-most-once (best-effort, không await)khôngkhông — client re-fetch qua GET /inquiries nếu lỡ một event

WS emission cố tình lossy: yêu cầu đã được lưu trước khi notify chạy, nên database là bản ghi bền. Một WS event bị rớt chỉ làm chậm toast real-time của admin, không bao giờ mất dữ liệu.

8. Trang liên quan

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.