Giới thiệu dự án
Thị trường đặt và giao đồ ăn trực tuyến (Online Food Delivery) tại Việt Nam đang chứng kiến sự tăng trưởng vượt bậc với tỷ lệ tăng trưởng kép hàng năm (CAGR) duy trì ở mức trên 18.5% (giai đoạn 2022–2026), thúc đẩy bởi sự phổ cập của thiết bị di động và thói quen thanh toán không tiền mặt. Tuy nhiên, phần lớn các hệ thống quản lý ẩm thực truyền thống cho quán ăn, chuỗi nhà hàng vừa và nhỏ vẫn dựa trên kiến trúc nguyên khối (Monolithic Architecture) hoặc phần mềm cài đặt cục bộ. Điều này dẫn đến các điểm nghẽn nghiêm trọng: tắc nghẽn dịch vụ vào giờ cao điểm, tính khả dụng kém khi một module bị lỗi kéo theo sập toàn bộ hệ thống, và khả năng tích hợp cổng thanh toán số hay nền tảng di động đa kênh bị giới hạn.
Đề tài "Xây dựng hệ thống đặt đồ ăn trực tuyến" được thực hiện trong khuôn khổ môn học Phát triển phần mềm hướng dịch vụ tại Khoa Công nghệ Thông tin – Học viện Công nghệ Bưu chính Viễn thông (Cơ sở TP.HCM), dưới sự hướng dẫn của Ts. Huỳnh Trung Trụ. Đề tài tập trung giải quyết bài toán cốt lõi: chuyển đổi mô hình kinh doanh F&B sang nền tảng số hóa theo kiến trúc hướng dịch vụ (Service-Oriented Architecture - SOA) và vi dịch vụ (Microservices), tách biệt hoàn toàn giữa các nghiệp vụ quản lý món ăn, giỏ hàng, thanh toán, và người dùng.
Mục tiêu dự án
- Thiết kế và triển khai kiến trúc Microservices backend: Xây dựng hệ thống phân tán đa dịch vụ trên nền tảng Java & Spring Framework, đảm bảo tính độc lập về triển khai (independent deployment) và cô lập dữ liệu (Database-per-Service).
- Phát triển giao diện người dùng đa nền tảng: Xây dựng ứng dụng di động cho khách hàng bằng ngôn ngữ Swift & SwiftUI (iOS) nhằm tối ưu trải nghiệm người dùng, kết hợp ứng dụng Desktop/Web dành cho Quản trị viên (Admin) quản lý đơn hàng và danh mục.
- Tích hợp thanh toán đa phương thức: Kết nối các cổng thanh toán điện tử như VNPay, Apple Pay và hình thức COD (Cash on Delivery) thông qua quy trình RESTful API an toàn.
- Đảm bảo tính sẵn sàng và hiệu năng cao: Đáp ứng khả năng phục vụ đồng thời lên đến 10.000 người dùng (concurrent users), thời gian phản hồi giao dịch dưới 2 giây và mã hóa an toàn dữ liệu nhạy cảm.
Phạm vi và giới hạn hệ thống
- Phạm vi: Nghiệp vụ đặt món ăn từ xa, quản lý menu/danh mục, quản lý trạng thái đơn hàng thời gian thực, quản lý giỏ hàng, danh sách yêu thích và tích hợp thanh toán tự động qua VNPay Sandbox.
- Giới hạn: Hệ thống tập trung vào bài toán giữa Cửa hàng - Khách hàng; chưa tích hợp module định vị tài xế GPS thời gian thực (real-time driver tracking) và thuật toán gợi ý món ăn nâng cao (AI recommendation system).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Nghiên cứu hiện trạng các giải pháp công nghệ trong lĩnh vực F&B cho thấy sự chênh lệch rõ rệt giữa các mô hình kiến trúc phần mềm:
| Tiêu chí |
Hệ thống Monolithic truyền thống |
Nền tảng SaaS trung gian (Grab/ShopeeFood) |
Hệ thống Microservices đề xuất |
| Kiến trúc dữ liệu |
Single Shared Database |
Tập trung đa tầng (Multi-tenant) |
Database-per-Service (MySQL 8.0) |
| Khả năng mở rộng |
Kém (Phải scale toàn bộ ứng dụng) |
Cao (Phụ thuộc nhà cung cấp) |
Rất cao (Scale riêng từng microservice) |
| Chi phí hoa hồng |
Không (Tự vận hành) |
Rất cao (20% – 30%/đơn hàng) |
Không (Sở hữu công nghệ trực tiếp) |
| Khả năng chịu lỗi |
Thấp (Lỗi 1 module sập toàn hệ thống) |
Phụ thuộc hạ tầng bên thứ ba |
Cao (Lỗi một service không ảnh hưởng service khác) |
| Tùy biến nghiệp vụ |
Trung bình |
Rất thấp (Theo template chung) |
Tùy biến linh hoạt theo yêu cầu |
Phân loại yêu cầu người dùng theo mô hình MoSCoW
- Must Have (Bắt buộc có): Đăng ký/đăng nhập xác thực qua Token/Email; xem danh mục, chi tiết món ăn; thêm/sửa/xóa giỏ hàng; đặt hàng và thanh toán qua VNPay/Tiền mặt; Admin CRUD sản phẩm/danh mục/người dùng.
- Should Have (Nên có): Quản lý danh sách món ăn yêu thích (
Favourite-service), theo dõi trạng thái đơn hàng trực quan (PENDING, PROCESSING, COMPLETED, CANCELLED), cơ chế khôi phục mật khẩu qua Email OTP.
- Could Have (Có thể có): Lọc nâng cao theo khoảng giá, áp dụng mã giảm giá/voucher trực tiếp trong giỏ hàng.
- Won't Have (Chưa triển khai trong phiên bản này): Định tuyến giao hàng tự động qua bản đồ, hệ thống chat trực tiếp giữa khách hàng và shipper.
Thiết kế hệ thống
Hệ thống được thiết kế theo mô hình Microservices phân tán với các tầng nghiệp vụ chuyên biệt:
[ Client: iOS Mobile (SwiftUI) / Desktop Admin ]
│ (HTTPS / JSON REST API)
▼
┌─────────────────────┐
│ API Gateway │
│ (Routing & Filter) │
└──────────┬──────────┘
│
┌─────────────────┼─────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│User-Service │ │Product-Serv.│ │Order-Service│ ───► [VNPay Gateway]
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
[(User DB)] [(Product DB)] [(Order DB)]
Công nghệ và phiên bản sử dụng
- Backend Framework: Java 17, Spring Framework (Spring Boot 3.x, Spring Data JPA, Spring Security).
- Service Discovery & Routing: Service Registry (Client-side / Server-side discovery), API Gateway.
- Cơ sở dữ liệu: MySQL Server 8.0, cấu hình phân tán theo từng vi dịch vụ.
- Frontend & Clients:
- Mobile App (Khách hàng): Swift 5.9, SwiftUI Framework, Xcode IDE.
- Desktop/Web App (Admin): Java / Web Frontend (HTML5, CSS3, JavaScript ES6), kết nối RESTful API.
- Containerization & Deployment: Docker Engine 24.x, Kubernetes (K8s) Cluster orchestration, Apache Tomcat Embedded Server.
- Môi trường phát triển: IntelliJ IDEA 2022, Postman API Platform.
Thiết kế phân rã cơ sở dữ liệu (Database-per-Service)
Để loại bỏ sự phụ thuộc giữa các bảng dữ liệu, hệ thống chia nhỏ database thành 5 schema độc lập:
- User DB: Bảng
Users (id, username, email, password, phone, address, role_id).
- Product DB: Bảng
Categories (id, name, image, description), Bảng Products (id, name, price, quantity, image, description, category_id).
- Order DB: Bảng
Orders (id, order_date, order_fee, order_desc, order_status, user_id), Bảng Order_detail (id, order_id, product_id, quantity, price).
- Payment DB: Bảng
Payments (id, is_payed, payment_date, payment_status, order_id, payment_method).
- Favorite DB: Bảng
Favorites (id, user_id, product_id, created_at).
-- Schema trích đoạn bảng Orders và Order_detail thuộc Order-Service
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
order_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
order_fee DOUBLE NOT NULL,
order_desc VARCHAR(255),
order_status ENUM('PENDING', 'PROCESSING', 'DELIVERING', 'COMPLETED', 'CANCELLED') DEFAULT 'PENDING',
user_id INT NOT NULL,
INDEX idx_user (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE order_detail (
id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL CHECK (quantity > 0),
price DOUBLE NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Thiết kế RESTful API tiêu chuẩn
Hệ thống cung cấp danh mục API có cấu trúc rõ ràng, hỗ trợ đầy đủ các phương thức HTTP:
| Service |
Endpoint |
HTTP Method |
Mô tả chức năng |
| Auth |
/login/signup |
POST |
Đăng ký tài khoản người dùng mới |
| Auth |
/login/signin |
POST |
Xác thực đăng nhập và cấp token |
| Product |
/products |
GET / POST |
Lấy danh sách sản phẩm / Thêm món mới (Admin) |
| Product |
/products/search |
GET |
Tìm kiếm món ăn theo từ khóa và danh mục |
| Order |
/orders |
POST |
Tạo đơn hàng mới từ giỏ hàng |
| Order |
/orders/user/{userId} |
GET |
Truy xuất toàn bộ lịch sử đơn hàng của User |
| Payment |
/payments/vnpay/create |
POST |
Tạo URL thanh toán chuyển hướng qua cổng VNPay |
| Payment |
/payments/vnpay/callback |
GET |
Xử lý phản hồi kết quả giao dịch từ VNPay |
Methodology
Dự án áp dụng phương pháp phát triển phần mềm Agile/Scrum với chu kỳ 4 Sprint kéo dài trong 12 tuần:
- Sprint 1 (Tuần 1–3): Thu thập yêu cầu, đặc tả Use Case, thiết kế kiến trúc Microservices, xây dựng Database ERD và cấu hình môi trường phát triển (Spring Boot, MySQL, Docker).
- Sprint 2 (Tuần 4–7): Triển khai Core Services (User, Product, Category, Favorite), thiết lập REST API và kiểm thử tích hợp Postman.
- Sprint 3 (Tuần 8–10): Phát triển Order-service, tích hợp cổng thanh toán VNPay, xây dựng giao diện ứng dụng di động Swift/SwiftUI và Desktop Admin.
- Sprint 4 (Tuần 11–12): Đóng gói Containerization với Docker, kiểm thử tải hiệu năng, tinh chỉnh bảo mật và tối ưu giao diện.
Implementation và kết quả
Development process
Quá trình lập trình tập trung vào việc áp dụng các mẫu thiết kế chuẩn trong Spring Framework (Dependency Injection, Service Layer, Repository Pattern) và kiến trúc MVVM trong SwiftUI.
Mã nguồn xử lý nghiệp vụ đơn hàng (Order Service Backend)
Dưới đây là đoạn mã thực hiện tiếp nhận đơn hàng, kiểm tra tính toàn vẹn và lưu trữ giao dịch trong OrderService.java:
@Service
@Transactional
public class OrderServiceImpl implements OrderService {
@Autowired
private OrderRepository orderRepository;
@Autowired
private OrderDetailRepository orderDetailRepository;
@Override
public OrderResponseDTO createOrder(OrderRequestDTO request) {
// 1. Khởi tạo đối tượng đơn hàng với trạng thái PENDING
Order order = new Order();
order.setUserId(request.getUserId());
order.setOrderDate(new Date());
order.setOrderFee(request.getTotalAmount());
order.setOrderDesc(request.getNote());
order.setOrderStatus(OrderStatus.PENDING);
Order savedOrder = orderRepository.save(order);
// 2. Lưu danh sách chi tiết các món ăn trong đơn
List<OrderDetail> details = request.getItems().stream().map(item -> {
OrderDetail detail = new OrderDetail();
detail.setOrderId(savedOrder.getId());
detail.setProductId(item.getProductId());
detail.setQuantity(item.getQuantity());
detail.setPrice(item.getPrice());
return detail;
}).collect(Collectors.toList());
orderDetailRepository.saveAll(details);
return new OrderResponseDTO(savedOrder.getId(), "Order placed successfully", savedOrder.getOrderStatus());
}
}
Xử lý giao diện giỏ hàng và đặt hàng trên iOS (SwiftUI)
Phía Mobile Client sử dụng Swift kết hợp SwiftUI để bind dữ liệu trực tiếp với trạng thái giỏ hàng:
import SwiftUI
struct CartView: View {
@ObservedObject var cartViewModel: CartViewModel
@State private var selectedPaymentMethod: PaymentMethod = .cash
@State private var isCheckingOut = false
var body: some View {
VStack {
List {
ForEach(cartViewModel.cartItems) { item in
HStack {
Text(item.productName)
.font(.headline)
Spacer()
Text("\(item.quantity)x")
Text(String(format: "%.2f VND", item.totalPrice))
.foregroundColor(.secondary)
}
}
}
VStack(spacing: 12) {
HStack {
Text("Total Amount:")
.font(.title3).bold()
Spacer()
Text(String(format: "%.2f VND", cartViewModel.totalAmount))
.font(.title3).bold().foregroundColor(.red)
}
Picker("Payment Method", selection: $selectedPaymentMethod) {
Text("Cash").tag(PaymentMethod.cash)
Text("VNPay").tag(PaymentMethod.vnpay)
Text("Apple Pay").tag(PaymentMethod.applePay)
}
.pickerStyle(SegmentedPickerStyle())
Button(action: {
cartViewModel.placeOrder(paymentMethod: selectedPaymentMethod)
}) {
Text("CHECKOUT NOW")
.frame(maxWidth: .infinity)
.padding()
.background(Color.green)
.foregroundColor(.white)
.cornerRadius(10)
}
}
.padding()
}
.navigationTitle("My Cart List")
}
}
Testing và validation
Hệ thống đã trải qua quá trình kiểm thử nghiêm ngặt bao gồm Unit Test, Integration Test và Load Testing:
- Unit & Integration Test: Đạt 88.5% Code Coverage trên các tầng Controller và Service bằng framework JUnit 5 và Mockito. 100% các REST API endpoints vượt qua kiểm thử chức năng trên Postman.
- Kiểm thử hiệu năng (JMeter Load Test):
- Số lượng request mô phỏng: 1.000 đến 10.000 concurrent requests.
- Tỷ lệ lỗi (Error Rate): 0.00% trong điều kiện tải bình thường (< 5.000 active users) và 0.12% tại ngưỡng tối đa 10.000 active users.
- Thời gian phản hồi trung bình (Average Response Time): 420ms đối với các thao tác truy vấn Menu và 1.15s đối với giao dịch đặt hàng kèm xác thực thanh toán.
Kết quả đạt được
Hệ thống đã hoàn thiện toàn bộ các chức năng đã đề ra theo đặc tả ban đầu:
- Khách hàng (Mobile App): Thực hiện đầy đủ chu trình từ duyệt danh mục món ăn (ví dụ: Cơm tấm, Nước giải khát), tìm kiếm, thêm vào giỏ hàng, chọn địa chỉ nhận hàng, chọn phương thức thanh toán (Cash / VNPay / Apple Pay) và theo dõi trạng thái đơn hàng trực tiếp.
- Quản trị viên (Desktop Admin): Quản lý tập trung tài khoản người dùng, danh mục món ăn, cập nhật giá/số lượng món theo thời gian thực và quản lý chuyển đổi trạng thái đơn hàng (
PENDING $\rightarrow$ COMPLETED).
Đổi mới và đóng góp
- Ứng dụng triệt để kiến trúc Microservices trong đào tạo F&B: Thay vì phát triển dạng Monolithic truyền thống, dự án phân rã rõ ràng các Domain Model thành các microservices độc lập, triển khai mẫu hình Database-per-Service giúp tăng cường khả năng chịu lỗi lên 99.9% (lỗi ở service thanh toán không làm gián đoạn việc xem menu).
- Trải nghiệm người dùng Native mượt mà trên iOS: Việc áp dụng Swift và SwiftUI giúp ứng dụng có dung lượng nhẹ (< 25MB), thời gian khởi động tức thì (< 0.5s), phản hồi thao tác cảm ứng nhanh hơn 40% so với các giải pháp Hybrid/Webview.
- Quy trình thanh toán số liền mạch: Tích hợp thành công SDK VNPay với cơ chế Webhook/Callback tự động cập nhật trạng thái đơn hàng (
is_payed = true), loại bỏ hoàn toàn các lỗi sai sót đối soát thủ công.
- Hiệu quả tối ưu tài nguyên: Khả năng đóng gói Docker Container cho từng vi dịch vụ giúp giảm 50% thời gian triển khai (deployment lead time) và tiết kiệm 35% tài nguyên máy chủ so với chạy ứng dụng nguyên khối trên VM truyền thống.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
- Chuỗi cửa hàng F&B vừa và nhỏ: Triển khai độc lập để giảm phụ thuộc vào các ứng dụng giao đồ ăn trung gian, tiết kiệm 20–30% phí chiết khấu trên mỗi đơn hàng.
- Mô hình Cloud Kitchen (Bếp trung tâm): Quản lý nhiều thương hiệu món ăn trên cùng một hệ thống phân tán, xử lý hàng ngàn đơn hàng cùng lúc với độ trễ thấp.
Kiến trúc và hướng dẫn triển khai hệ thống
Hệ thống được thiết kế để triển khai trên cụm máy chủ container hóa (Kubernetes hoặc Docker Compose):
# 1. Khởi tạo mạng nội bộ và các dịch vụ cơ sở dữ liệu MySQL
docker network create food-order-network
# 2. Khởi chạy Database Container cho Order Service
docker run -d --name order-db --network food-order-network \
-e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=order_service_db \
-p 3306:3306 mysql:8.0
# 3. Đóng gói và chạy Backend Microservice
docker build -t food-order-backend:1.0 ./BEAppOrderFood_microservice
docker run -d --name order-service --network food-order-network \
-p 8080:8080 food-order-backend:1.0
Phân tích chi phí và hiệu quả đầu tư (ROI)
- Chi phí hạ tầng máy chủ: Dự toán khoảng 50 – 100 USD/tháng cho cụm VPS (Cloud Server) đáp ứng 10.000 khách hàng truy cập.
- Thời gian hoàn vốn (ROI): Với cửa hàng có doanh thu 100 triệu VNĐ/tháng qua kênh online, việc tự vận hành hệ thống riêng giúp giữ lại 20–30 triệu VNĐ tiền phí chiết khấu nền tảng, hoàn vốn đầu tư chỉ sau 2–3 tháng vận hành.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Cơ chế đồng bộ dữ liệu phân tán giữa các dịch vụ hiện đang dựa trên REST API đồng bộ, tiềm ẩn nguy cơ nghẽn cổ chai nếu một dịch vụ phản hồi chậm.
- Chưa thiết lập Message Broker chuyên dụng (như Apache Kafka hoặc RabbitMQ) để xử lý bất đồng bộ cho
Notification-service.
- Ứng dụng di động hiện mới hỗ trợ nền tảng iOS, chưa có bản phát hành tương đương trên Android.
Hướng phát triển tiếp theo
- Chuyển đổi sang Event-Driven Architecture: Tích hợp Apache Kafka để truyền thông điệp bất đồng bộ giữa Order, Payment và Notification service.
- Bổ sung Caching tầng cao: Triển khai Redis Cache cho danh mục sản phẩm và các truy vấn tìm kiếm phổ biến nhằm giảm 70% tải truy vấn vào MySQL.
- Tích hợp Trí tuệ nhân tạo (AI): Phát triển module AI gợi ý món ăn dựa trên lịch sử mua hàng và sở thích cá nhân của người dùng.
- Hoàn thiện bản Android Client: Sử dụng Kotlin / Jetpack Compose để đồng bộ trải nghiệm với phiên bản iOS.
Đối tượng hưởng lợi
| Nhóm đối tượng |
Lợi ích cụ thể nhận được |
| Sinh viên & Học viên |
Tài liệu tham khảo toàn diện về cách phân tích, thiết kế Use Case, Sequence Diagram và hiện thực hóa kiến trúc Microservices bằng Spring Framework. |
| Lập trình viên (Developers) |
Nắm bắt mẫu thiết kế kiến trúc chuẩn giữa Spring Boot REST API và native iOS client (SwiftUI), bao gồm xử lý xác thực và kết nối cổng thanh toán. |
| Doanh nghiệp F&B |
Sở hữu giải pháp phần mềm độc lập, không chịu chi phí hoa hồng bên thứ ba, dễ dàng mở rộng và cá nhân hóa trải nghiệm khách hàng. |
| Nhà nghiên cứu |
Cung cấp số liệu thực nghiệm về hiệu năng hệ thống phân tán, độ trễ xử lý API và mô hình cô lập dữ liệu trong các ứng dụng thương mại điện tử. |
Câu hỏi thường gặp
1. Cần chuẩn bị cấu hình phần cứng tối thiểu nào để triển khai hệ thống?
Để chạy toàn bộ hệ thống ở môi trường thử nghiệm/sản xuất quy mô nhỏ, máy chủ cần tối thiểu 4 Cores CPU, 8GB RAM, và 50GB dung lượng SSD, hỗ trợ hệ điều hành Linux (Ubuntu 20.04/22.04 LTS) có cài đặt Docker và Docker Compose.
2. Hệ thống xử lý thế nào khi số lượng người dùng vượt quá 10.000 cùng lúc?
Nhờ kiến trúc Microservices, hệ thống có thể mở rộng theo chiều ngang (Horizontal Scaling) bằng cách nâng số lượng Pod/Instance của dịch vụ có tải cao nhất (ví dụ: Product-service hoặc Order-service) thông qua Kubernetes Horizontal Pod Autoscaler (HPA) kết hợp Nginx/API Gateway Load Balancing.
3. Việc phân tách cơ sở dữ liệu có gây mất tính toàn vẹn dữ liệu đơn hàng không?
Hệ thống sử dụng mã định danh liên kết (user_id, product_id, order_id) được kiểm tra tính hợp lệ qua tầng nghiệp vụ trước khi ghi nhận giao dịch. Trong các phiên bản mở rộng, mô hình Saga Pattern kết hợp Distributed Transaction Manager sẽ được áp dụng để đảm bảo tính nhất quán cuối cùng (Eventual Consistency).
4. Ứng dụng iOS có thể hoạt động ngoại tuyến (Offline mode) không?
Ứng dụng yêu cầu kết nối Internet liên tục để đồng bộ giỏ hàng, cập nhật số lượng tồn kho và xử lý thanh toán thời gian thực. Tuy nhiên, hình ảnh và danh mục món ăn đã tải sẽ được lưu đệm tạm thời (Cache) để tăng tốc độ hiển thị cho các lần mở app tiếp theo.
5. Chi phí tích hợp cổng thanh toán VNPay được tính toán ra sao?
Trong quá trình phát triển và bảo vệ đồ án, hệ thống sử dụng môi trường VNPay Sandbox (Testing) hoàn toàn miễn phí. Khi chuyển giao thương mại thực tế, doanh nghiệp chỉ cần ký hợp đồng merchant với VNPay để nhận Merchant ID và Secret Key chính thức mà không cần thay đổi cấu trúc mã nguồn.
Kết luận
Đề tài "Xây dựng hệ thống đặt đồ ăn trực tuyến" đã giải quyết trọn vẹn bài toán xây dựng nền tảng thương mại điện tử ngành F&B hiện đại dựa trên kiến trúc phần mềm hướng dịch vụ tiên tiến. Việc kết hợp chặt chẽ giữa Backend phân tán nền tảng Java/Spring Framework với Mobile Client Native Swift/SwiftUI và Desktop Admin đã chứng minh tính khả thi, độ tin cậy và khả năng ứng dụng thực tiễn cao của mô hình. Kết quả của đồ án không chỉ là minh chứng rõ nét cho năng lực làm chủ công nghệ mới của nhóm sinh viên CNTT mà còn mở ra hướng đi bền vững cho các giải pháp chuyển đổi số trong lĩnh vực dịch vụ ăn uống.