Skip to content

API Events

Outreach không có Kafka và không có BullMQ. Nó chỉ là một nguồn event qua WebSocket. Event bất đồng bộ duy nhất nó phát ra là bản phát INQUIRY_SUBMITTED theo thời gian thực tới các phòng 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 phía sau nếu cần dữ liệu yêu cầu thì poll REST API hoặc đăng ký 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)PhòngKích hoạt khiEmitter
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 dựa trên 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)] })
Giao nhậnFire-and-forget; có kiểm tra isReady(); dùng Promise.allSettled để một phòng lỗi không làm hỏng 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, ví dụ "200_SALES"
  firstName: string;
  lastName: string | null;
  email: string;
  businessName: string | null;
  subject: string | null;
  createdAt: string;       // ISO timestamp
}

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

7. Idempotency & Ordering

KênhGiao nhậnThứ tựKhôi phục
observation/outreach/inquiry/submittedtối đa một lần (best-effort, không await)khôngkhông - client lấy lại qua GET /inquiries nếu bỏ lỡ một event

Việc phát WS cố tình chấp nhận mất mát: yêu cầu đã được lưu trước khi thông báo chạy, nên database là bản ghi bền vững. Một WS event bị rớt chỉ làm chậm toast theo thời gian thực của admin, không bao giờ làm mất dữ liệu.

8. Trang liên quan

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