Giao diện
Tích hợp và sự kiện
Quy tắc
| Mã | Yêu cầu |
|---|---|
| FR-INT-1 | Mỗi dịch vụ có CSDL riêng. Không dịch vụ nào đọc CSDL của dịch vụ khác. |
| FR-INT-2 | Dữ liệu của dịch vụ khác được giữ ở dạng bản sao, dựng từ sự kiện trên Valkey Streams. Sự kiện mang trạng thái hiện tại đầy đủ của bản ghi ({id, occurredAt, data}), không mang phần thay đổi. |
| FR-INT-3 | Bên phát và bên nhận tự khai báo cấu trúc sự kiện của mình; không dùng gói dùng chung. |
| FR-INT-4 | Bên nhận phải bỏ qua sự kiện cũ hơn bản đã có. |
| FR-INT-5 | Khi bản sao chưa có dòng cần dùng (sự kiện đến chậm), dịch vụ hỏi trực tiếp API của dịch vụ sở hữu. |
| FR-INT-6 | Gọi giữa dịch vụ dùng token client credentials của dịch vụ gọi kèm header nội bộ; bên nhận yêu cầu vai trò internal_service và quyền của API. |
| FR-INT-7 | Mỗi dịch vụ có API /sync phát lại toàn bộ bảng cho Đồng bộ. |
Luồng sự kiện
| Luồng | Phát khi | Bên nhận |
|---|---|---|
vendor-service:vendors | Thêm, sửa, xoá đối tác | phân bổ, kế hoạch sơ chế, kế hoạch thu mua, phiếu, báo cáo, cân xe |
vendor-service:cooperatives | Thêm, sửa, xoá HTX | phân bổ, kế hoạch thu mua, phiếu |
vendor-service:vendor_assignments | Đổi phân công | kế hoạch thu mua, phiếu |
vendor-service:trucks | Đổi xe tải | phân bổ, phiếu |
vendor-service:truck_vendor_links | Gắn, gỡ liên kết xe với NCC (kể cả gỡ do xoá xe, xoá đối tác) | chưa có |
product-service:products | Thêm, sửa, xoá sản phẩm, đổi loại gia công mặc định | phân bổ, kế hoạch thu mua, phiếu, báo cáo, cân xe, tra cứu cân |
product-service:product_categories | Thêm, sửa, xoá danh mục (kèm phát lại các sản phẩm thuộc danh mục) | cân xe |
user-service:users | Đổi người dùng | phân bổ, kế hoạch sơ chế, kế hoạch thu mua, phiếu, đối tác, tra cứu cân |
employee-service:employees | Đổi nhân công | tra cứu cân |
purchase-plan-service:purchase_plans | Tạo, lưu, xoá kế hoạch, gỡ mức giá | phân bổ (mở, đóng ngày), phiếu, báo cáo |
purchase-plan-service:price_sheets | Lưu bảng giá | phiếu (Dữ liệu TC) |
receiving-ticket-service:coconut_receiving_tickets | Mọi thay đổi phiếu mua dừa | phân bổ, báo cáo |
receiving-ticket-service:meat_receiving_tickets | Mọi thay đổi phiếu mua cơm dừa | báo cáo |
processing-allocation-service:processing_allocations | Mọi thay đổi thẻ xe | phiếu (Tổng phân phối, trạng thái, số lô), báo cáo |
processing-allocation-service:processing_allocation_receipts | Lưu nhận về | báo cáo |
truck-scale-service:weighing-records | Nhận, xử lý lại bản ghi cân xe | phiếu, phân bổ, đối tác (tự đăng ký xe), tra cứu cân |
attachment-service:attachments | Tệp tải lên xong, bị xoá | phiếu |
sync-service:runs | Kết quả một lần đồng bộ | đồng bộ |
Bên nhận: phân bổ processing-allocation-service, kế hoạch sơ chế processing-plan-service, kế hoạch thu mua purchase-plan-service, phiếu receiving-ticket-service, báo cáo report-service, đối tác vendor-service, cân xe truck-scale-service, tra cứu cân weighing-record-service (bản ghi cân xe và cân bàn), đồng bộ sync-service.
Đảm bảo phát
| Mã | Yêu cầu |
|---|---|
| FR-INT-8 | Mọi dịch vụ phát sự kiện phải ghi outbox trong cùng giao dịch với thay đổi; worker phát mỗi 200 ms, lô 100, ít nhất một lần. Không sự kiện nào được phát sau khi commit. |
Ngoài hệ thống
| Hệ thống | Giao tiếp |
|---|---|
| Keycloak | OIDC cho người dùng; Admin API chỉ từ user-service; JWKS cho xác thực token |
| MSSQL phần mềm cân xe | Chỉ đọc bảng Phieucan, qua tracker |
| Lưu trữ S3 (MinIO, DigitalOcean Spaces) | URL ký sẵn để tải lên (hết hạn 600 giây) và xem (300 giây) |
| Telegram | Nhận cảnh báo vận hành từ Alertmanager |