Integration
Outreach gần như là một service lá. Tích hợp runtime duy nhất của nó là xác thực JWT dựa trên JWKS của Identity; tín hiệu đi ra duy nhất là một bản phát WebSocket được BO dashboard tiêu thụ.
1. Service anh em
Direction:→gọi /←được gọi bởi /↔hai chiều.
| Service anh em | Hướng | Giao diện | Giao kèo | Auth | Khi lỗi | Idempotency |
|---|---|---|---|---|---|---|
@nx/identity | → | JWKS endpoint (từ xa) | VerifierApplication xác thực JWT ES256 | - (JWKS công khai) | từ chối request (401) nếu không tới được JWKS | n/a |
| BO dashboard | ← | Đăng ký phòng WebSocket | payload INQUIRY_SUBMITTED | phiên WS | client lấy lại qua REST nếu bỏ lỡ event | n/a |
Không có lời gọi HTTP tới service BANA nào khác. Không tiêu thụ hay tạo Kafka topic.
@nx/corelà phụ thuộc code nội bộ duy nhất.
2. Hệ thống bên ngoài
| Hệ thống | Hướng | Giao diện | Auth | Khi lỗi |
|---|---|---|---|---|
| PostgreSQL | → | PostgresCoreDataSource (schema outreach) | thông tin đăng nhập DB | request thất bại khi mất kết nối |
| Redis | → | WebSocket pub/sub fan-out | mật khẩu (tuỳ chọn) | bỏ qua thông báo WS nếu emitter chưa sẵn sàng |
Không có nhà cung cấp email/SMTP nào được nối dù package mang khẩu hiệu "Communications" - việc gửi newsletter nằm ngoài phạm vi (xem Domain Model).
3. Các luồng liên-service quan trọng
3.1 Thông báo yêu cầu theo thời gian thực tới BO
| Bước | Chi tiết |
|---|---|
| 2 | Thông báo theo kiểu fire-and-forget sau khi dòng được commit |
| 3 | Hai phòng: phòng danh sách (outreach/inquiries) và phòng theo từng inquiry |
| 4 | BO phải đã có sẵn một phiên WS mở và đăng ký vào phòng |
4. Tính ổn định của giao kèo
| Giao diện | Độ ổn định | Versioning |
|---|---|---|
HTTP /inquiries/submit, /subscribers/subscribe, /subscribers/unsubscribe | ổn định | URL /v1/ |
HTTP /subscribers/statistics | beta (cấu trúc có thể mở rộng) | URL /v1/ |
WS observation/outreach/inquiry/submitted | beta | theo path; payload chỉ thêm vào |