Skip to content

Tích hợp

1. Sister Services

SisterHướngBề mặtAuthChế độ lỗiIdempotency
@nx/mq-payHTTP webhook /webhooks/paymentkhông (tin cậy)MQ-Pay retry 5xxwebhook handler no-op trên transition đã áp dụng
@nx/inventoryKafka payment.successpost-commit fire-and-forgetper (saleOrderId, stockId) phía consumer
@nx/inventoryKafka kitchen-ticket-item.status-changedpost-commit fire-and-forgetper (saleOrderId, kitchenTicketItemId, materialId) phía consumer
@nx/inventoryKafka material.stock-changed(sale hiện không tiêu thụ — sản xuất cho UI consumer)
@nx/financeKafka payment.successpost-commit fire-and-forgetper saleOrderId phía consumer
@nx/commerceHTTP — đọc ProductVariant, ProductInfo, SaleChannel, Category cho snapshotJWT (service-to-service)retry 3xsnapshot lưu trên order
@nx/pricingHTTP — PricingNetworkService.calculate() + calculateV2()JWTretry; checkout fail khi lỗi liên tụcrequest checkout idempotent (không side-effect khi retry)
@nx/identityHTTP — xác minh JWT qua JWKS (/jw-certs)JWTretry / circuit-breakrequest-id được lan truyền
@nx/identityHTTP — PolicyDefinitionService lookup permissionJWTRedis cache fallbackper (role, action)
@nx/signalPhát WebSocket qua ApplicationWebSocketComponentgiao hàng best-effortbroadcast

2. Hệ thống bên ngoài

Tích hợp bên ngoài trực tiếp: không có. Sale dùng MQ-Pay (sister) để trừu tượng hóa payment provider. Payment provider bên thứ ba (VNPay, v.v.) thuộc về @nx/mq-pay.

3. Flow liên service quan trọng

3.1 Thanh toán thành công → Trừ kho + Ghi nhận thu nhập

Hợp đồng:

  • Sale đảm bảo PAYMENT_SUCCESS được phát đúng một lần per transition trạng thái (post-commit).
  • Webhook là source-of-truth cho trạng thái — Sale không poll MQ-Pay.
  • Idempotency: webhook handler short-circuit nếu order đã ở trạng thái target.

3.2 Kitchen Item READY → Tiêu thụ Material

3.3 Fan-out Pricing khi Checkout

3.4 MQ-Pay Webhook Retry (lưới an toàn của Sale)

4. Ổn định hợp đồng

Bề mặtỔn địnhVersioning
HTTP /v1/api/sale/*stableURL prefix /v1/
HTTP webhook /webhooks/paymentstablerequest schema được version qua namespace eventType
Kafka topic payment.successstablepayload chỉ thêm field
Kafka topic kitchen-ticket-item.status-changedstablepayload chỉ thêm field
WebSocket topic observation/sale/*stablepayload chỉ thêm field

5. Mối quan tâm xuyên suốt

Mối quan tâmXử lý
Trust boundaryEndpoint webhook tin cậy MQ-Pay (không auth). Cô lập cấp mạng qua Cilium policy áp đặt điều này.
Bảo vệ raceSELECT FOR UPDATE trên row order khi checkout + add-item.
Capture snapshotKhi checkout, sale snapshot: pricing (v1+v2), trạng thái allocation, metadata product variant, recipe id. Vòng đời = order.
Tiền tệLưu cấp order. Đa tiền tệ yêu cầu snapshot exchangeRate per order.

6. Trang liên quan

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