eCoffee
Nền tảng chuỗi cung ứng cho nhượng quyền cà phê, kết nối đặt món trực tuyến, bán hàng tại quầy, giao nhận và tồn kho.

Phần việc tôi phụ trách
Thành viên phát triển full-stack · Dự án nhóm
- 01
Danh tính & phiên
Đóng góp vào các service Warehouse, Inventory, Supplier và Franchise trong hệ thống có sẵn 13 service.
- 02
Giao tiếp delivery
Thiết kế NestJS API và bốn Prisma schema, đồng thời xây dựng các giao diện React liên quan.
- 03
Độ tin cậy sự kiện
Triển khai giao tiếp giữa service qua gRPC và luồng sự kiện Kafka; sử dụng Jest, Docker và GitLab CI/CD.
Tổng quan
eCoffee kết nối khách hàng với đội ngũ vận hành chuỗi cà phê trên cùng một nền tảng. Khách xem thực đơn, đặt món, thanh toán và dùng ưu đãi; nhân viên xử lý bán hàng tại quầy và hoàn tất đơn; quản lý phụ trách tồn kho, nhà cung cấp; admin theo dõi chính sách và báo cáo toàn chuỗi.
Bài toán
Đơn online, bán hàng tại quầy, giao hàng chặng cuối và điều chuyển kho liên quan đến nhiều vai trò cùng các nguồn tồn kho khác nhau. Hệ thống cần phân quyền theo vai trò, chi nhánh rõ ràng và theo dõi được thay đổi của đơn hàng lẫn tồn kho.
Giải pháp kỹ thuật
Dùng gRPC cho hợp đồng gọi service đồng bộ
Vì sao chọn cách này
Phân công và theo dõi giao hàng cần phản hồi trực tiếp; hợp đồng protobuf làm rõ cấu trúc request và response.
Đánh đổi
Caller phụ thuộc vào độ sẵn sàng của service và hợp đồng tương thích, nên timeout và kỷ luật version rất quan trọng.
Kết hợp outbox với Kafka giao ít nhất một lần
Vì sao chọn cách này
Bản ghi đơn hàng và outbox event dùng chung transaction cục bộ; luồng outbox/inbox chịu được Kafka gửi trùng mà không cần distributed transaction.
Đánh đổi
Sự kiện có thể được gửi lại nên consumer cần khử trùng lặp và xử lý idempotent; thiết kế ưu tiên khả năng khôi phục thay vì tuyên bố exactly-once.
Để mỗi service sở hữu dữ liệu vận hành
Vì sao chọn cách này
Order, Delivery, Warehouse và Inventory sở hữu các bản ghi riêng; tham chiếu liên service đi qua ID và event, không phải foreign key liên cơ sở dữ liệu.
Đánh đổi
Ranh giới sở hữu giảm phụ thuộc ngầm, nhưng đòi hỏi mô tả rõ workflow và compensation giữa các service.
Tính năng sản phẩm
Tổng quan hệ thống
REST gateway tiếp nhận request công khai. gRPC dùng cho lời gọi đồng bộ giữa service; Kafka chuyển sự kiện bất đồng bộ.
Ứng dụng khách, nhân viên & POS
Kong API Gateway
Order · Inventory · Delivery
Transactional outbox → Kafka → inbox
DB Order + outbox
Outbox relay
Kafka topics
Inbox của consumer
Tài liệu ghi nhận outbox/inbox và mức độ áp dụng liên service mới một phần hoặc chưa xác minh; đây không phải cam kết exactly-once.
Sơ đồ phản ánh tài liệu kiến trúc bạn gửi. Tài liệu mô tả catalog service mục tiêu và ghi rõ một số luồng liên service mới triển khai một phần hoặc chưa xác minh.
Bằng chứng & kiểm chứng
Những điểm cần cân nhắc
eCoffee là hệ thống nhiều vai trò: trải nghiệm khách hàng và vận hành cửa hàng cùng dựa trên trạng thái đơn hàng, tồn kho. Phân tách từng luồng theo người dùng và phạm vi giúp làm rõ ranh giới giữa chuỗi, chi nhánh và kho hàng.
