Skip to content

API Events

Bề mặt async duy nhất của Pricing là một topic CDC Debezium inbound. Nó không có sự kiện domain outbound, không BullMQ, và không WebSocket. Kafka producer được bind bởi ApplicationKafkaComponent nhưng hiện không domain logic nào publish tới nó.

1. Inbound — Kafka

TopicProducerHandlerIdempotency KeyFailure Mode
CDCKafkaTopics.PRODUCT_VARIANTDebezium (CDC DB commerce)PricingWorkerService.handleProductVariantCDC(productVariantId) — bỏ qua nếu FareSet tồn tại; FBT bỏ qua theo (relatedFareSetId, leadVariantId)autocommit: false — offset commit chỉ sau khi handler thành công; throw chặn commit và re-deliver

Config consumer (src/components/kafka/component.ts): groupId PRICING_CONSUMER_GROUP (override được qua env), fallbackMode: 'latest', commit thủ công sau mỗi message.

Op xử lý: chỉ DebeziumPayloadOperators.CREATERETRIEVE. UPDATE / DELETE là no-op. Payload đã xoá (deletedAt đặt) bị bỏ qua.

2. Outbound — Kafka

Không. Producer helper được bind (BindingKeys.APPLICATION_KAFKA_PRODUCER, idempotent + lz4 + acks=ALL) nhưng không service nào emit. Dành cho sự kiện thay đổi giá tương lai.

3. Inbound — BullMQ

Không. Pricing không mount QueueComponent / BullMQ.

4. Outbound — BullMQ

Không.

5. WebSocket Emissions

Không. Pricing không mount component WebSocket.

6. Payload Schemas

Message inbound là một envelope Debezium trên một hàng ProductVariant. Pricing chỉ đọc metadata:

ts
// TDebeziumMessage<TProductVariantPgRow> — phần liên quan
interface ProductVariantMetadata {
  pricing?: {
    sellingPrice?: string; // seed amount default SALE fare
  };
  referenceId?: string;    // deep-copy cấu trúc FareSet của variant này
  bundlers?: Array<{
    type: string;                    // ProductBundlerTypes.FBT trigger seed override
    relatedProductVariantId: string; // FareSet nhận override child
    basis?: string;                  // ProductBundlerBasises.FIXED | PER_UNIT (khác bị bỏ)
    basisValue?: string;
    quantity?: string;
  }>;
}

Nguồn sự thật cho kiểu payload là @nx/core (TProductVariantPgRow, TProductVariantMetadata) — pricing không định nghĩa schema message riêng.

7. Idempotency & Thứ tự

TopicDeliveryThứ tựPhục hồi
PRODUCT_VARIANTat-least-once (commit thủ công)theo partition (Debezium khoá theo PK)Handler idempotent — replay/redelivery re-check FareSet/FBT override hiện có và bỏ qua

8. Trang liên quan

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