Bối cảnh và vấn đề nghiên cứu
Sự phát triển của công nghệ thông tin đã tác động sâu sắc đến thói quen sinh hoạt hàng ngày, trong đó lĩnh vực ẩm thực ghi nhận nhu cầu tìm kiếm công thức và chia sẻ kinh nghiệm nấu ăn gia tăng rõ rệt. Tuy nhiên, qua khảo sát thực tế của tác giả đối với các nền tảng phổ biến hiện nay như Cookpad, Tasty, Allrecipes và Yummly, phần lớn hệ thống vẫn bộc lộ nhiều điểm hạn chế: thiếu khả năng cá nhân hóa nội dung chuyên sâu theo khẩu vị và hành vi của từng cá nhân; công cụ tìm kiếm và bộ lọc chưa thực sự trực quan; tính năng tương tác cộng đồng còn nghèo nàn; và đặc biệt là chưa có cơ chế hỗ trợ tài chính để ghi nhận đóng góp của tác giả sáng tạo nội dung. Đồ án "Phát triển ứng dụng về nấu ăn" được thực hiện nhằm xây dựng nền tảng ứng dụng web LetWeCook, giải quyết các bất cập trên bằng cách tích hợp các tiện ích quản lý toàn diện cùng các module trí tuệ nhân tạo (AI).
Mục tiêu chính của đề tài là xây dựng hoàn chỉnh ứng dụng web LetWeCook với đầy đủ chức năng quản lý, tương tác và cá nhân hóa trải nghiệm nấu nướng. Để hiện thực hóa mục tiêu này, tác giả xác định 5 nhiệm vụ nghiên cứu cốt lõi theo đề cương:
- Nghiên cứu và phân tích các yêu cầu từ người dùng để xác định các tính năng cốt lõi của ứng dụng LetWeCook; thiết kế kiến trúc hệ thống và cơ sở dữ liệu nhằm đảm bảo tính ổn định, bảo mật và hiệu quả hoạt động.
- Xây dựng hệ thống đăng nhập và quản lý hồ sơ an toàn, hỗ trợ đăng nhập truyền thống qua email/mật khẩu, đăng nhập mạng xã hội qua giao thức OAuth2 (Google, Facebook), tính năng khôi phục mật khẩu và cập nhật hồ sơ cá nhân gắn liền với sở thích ăn uống.
- Triển khai các chức năng quản lý nguyên liệu và công thức nấu ăn (CRUD nguyên liệu, CRUD công thức), tích hợp trí tuệ nhân tạo để đề xuất và tối ưu hóa công thức.
- Tích hợp tính năng tương tác cộng đồng và hỗ trợ tài chính, bao gồm hệ thống bình luận, đánh giá xếp hạng 1-5 sao, lưu trữ bộ sưu tập cá nhân và tính năng quyên góp (donate) cho tác giả công thức thông qua cổng thanh toán PayPal.
- Phát triển các tính năng trí tuệ nhân tạo (AI) độc lập, bao gồm gợi ý công thức dựa trên hồ sơ ăn uống, hành vi người dùng và nhận diện nguyên liệu thông qua ảnh chụp tải lên; đồng thời thực hiện kiểm thử và tối ưu hóa toàn bộ hệ thống.
Đối tượng nghiên cứu của đồ án bao gồm:
- Các nền tảng chia sẻ công thức ẩm thực hiện có trên thị trường (Yummly, Cookpad, Allrecipes, Tasty).
- Người dùng ứng dụng nấu ăn, tập trung vào nhu cầu, thói quen tìm kiếm, sở thích ăn kiêng và hành vi tương tác trên môi trường số.
Phạm vi nghiên cứu được giới hạn như sau:
- Về phạm vi tính năng: Tập trung vào các nghiệp vụ quản lý tài khoản, quản trị nguyên liệu, công thức, bộ sưu tập, tương tác đánh giá, thanh toán quyên góp và các tác vụ gợi ý thông minh từ AI.
- Về phạm vi công nghệ: Nền tảng ASP.NET Core MVC, Entity Framework Core, SQL Server, Tailwind CSS, JavaScript/jQuery cho ứng dụng web; Python, FastAPI, Scikit-learn, Pandas, NumPy cho dịch vụ AI; Docker và Kubernetes (GKE) cho hạ tầng triển khai.
- Về thời gian thực hiện: Kế hoạch triển khai theo tiến độ 15 tuần học kỳ, hoàn thành vào tháng 06/2025 tại Trường Đại học Sư phạm Kỹ thuật TP.HCM.
Cơ sở lý thuyết và phương pháp
Khóa luận áp dụng mô hình kiến trúc phần mềm Clean Architecture nhằm tách biệt rõ ràng các tầng nghiệp vụ, hạn chế sự phụ thuộc giữa các thành phần và tối ưu hóa khả năng kiểm thử. Kết hợp với đó là mô hình Model-View-Controller (MVC) trên nền tảng .NET Core. Các công nghệ và thư viện kỹ thuật được sử dụng bao gồm:
- Tầng Domain và Application: Định nghĩa các thực thể cốt lõi (User, Recipe, Collection...), các giao diện dịch vụ (Service Interfaces) và Data Transfer Objects (DTOs), áp dụng nguyên lý Dependency Inversion.
- Tầng Infrastructure: Sử dụng Entity Framework Core (EF Core) tiếp cận theo phương pháp Code-First để ánh xạ đối tượng sang cơ sở dữ liệu quan hệ SQL Server; tích hợp thư viện ASP.NET Core Identity quản trị người dùng; xác thực phân quyền qua giao thức OAuth2 (Google, Facebook); dịch vụ gửi thư Gmail SMTP; lưu trữ tệp đa phương tiện trên nền tảng đám mây Cloudinary.
- Tầng Presentation: Sử dụng ASP.NET Core MVC với Razor View Engine, kết hợp framework CSS tiện ích Tailwind CSS, JavaScript thuần và thư viện jQuery để thực hiện các thao tác AJAX bất đồng bộ.
- Module Trí tuệ nhân tạo: Xây dựng dưới dạng Microservice độc lập sử dụng ngôn ngữ Python và framework FastAPI, kết hợp các thư viện xử lý và học máy Scikit-learn, Pandas, NumPy.
- Bảo mật: Triển khai ASP.NET Core Identity, cơ chế chống tấn công Cross-Site Request Forgery (CSRF Protection) qua mã kiểm thực (token), và mã hóa đường truyền bằng giao thức HTTPS.
Tác giả đã triển khai kết hợp các phương pháp nghiên cứu thực tế sau:
- Phương pháp điều tra, phân tích: Khảo sát trực tiếp nhu cầu người dùng để thu thập số liệu định lượng về mức độ cần thiết của từng chức năng trên ứng dụng nấu ăn.
- Phương pháp thống kê, so sánh: Thu thập dữ liệu vận hành từ các ứng dụng Yummly, Cookpad, Tasty, Allrecipes nhằm phân tích đối chiếu điểm mạnh, điểm yếu và khoảng trống nghiệp vụ.
- Phương pháp đối chiếu, tổng hợp: Tổng hợp yêu cầu thực tế để thiết kế đặc tả hệ thống thông qua các sơ đồ UML (Use Case Diagram, Activity Diagram, Sequence Diagram, Class Diagram) và sơ đồ quan hệ thực thể (ERD).
Nguồn dữ liệu trong nghiên cứu gồm:
- Dữ liệu sơ cấp: Kết quả khảo sát ý kiến người dùng về tính năng và trải nghiệm ứng dụng ẩm thực.
- Dữ liệu thứ cấp: Tài liệu kiến trúc và hướng dẫn kỹ thuật của Microsoft (.NET Core, EF Core), tài liệu FastAPI, Scikit-learn, cùng dữ liệu mẫu về thành phần dinh dưỡng, danh mục nguyên liệu và công thức nấu ăn.
Thiết kế và triển khai
Hệ thống LetWeCook được thiết kế theo kiến trúc phân tầng Clean Architecture, bảo đảm tính độc lập giữa lõi nghiệp vụ và các dịch vụ bên ngoài, kết nối với một dịch vụ phụ trợ AI chuyên trách:
[Presentation Layer] -> ASP.NET Core MVC, Tailwind CSS, jQuery, AJAX
[Domain & Application Layer] -> Core Entities, Service Interfaces, DTOs
[Infrastructure Layer] -> EF Core, SQL Server, Identity, OAuth2, Cloudinary, SMTP
[AI Microservice] -> Python FastAPI, Scikit-learn, Pandas, NumPy
Cơ sở dữ liệu của ứng dụng được xây dựng trên hệ quản trị SQL Server, chuẩn hóa qua 17 bảng dữ liệu phục vụ toàn bộ các phân hệ nghiệp vụ:
| Tên bảng trong CSDL |
Mục đích lưu trữ và vai trò trong hệ thống |
site_users |
Thông tin tài khoản người dùng, email, mật khẩu băm, quyền hạn |
user_profiles |
Hồ sơ chi tiết (họ tên, tiểu sử, ngày sinh, giới tính, liên hệ, ví PayPal) |
dietary_preferences |
Danh mục các chế độ ăn uống chuẩn trong hệ thống |
user_dietary_preferences |
Quan hệ liên kết sở thích ăn kiêng của từng người dùng cụ thể |
media_urls |
Danh mục đường dẫn lưu trữ hình ảnh và video đa phương tiện |
ingredient_categories |
Phân loại nhóm nguyên liệu (rau củ, thịt, gia vị, hải sản...) |
ingredient_details |
Chi tiết nguyên liệu: tên, mô tả, hạn dùng, chỉ số dinh dưỡng |
detail_media_urls |
Liên kết giữa thông tin chi tiết nguyên liệu và tệp đa phương tiện |
recipe_details |
Thông tin công thức nấu ăn: tiêu đề, khẩu phần, thời gian, độ khó |
recipe_ingredients |
Danh sách nguyên liệu và định lượng tương ứng trong từng công thức |
recipe_tags |
Thẻ phân loại công thức (quốc gia, dịp lễ, đặc tính món ăn) |
recipe_tags_recipes |
Bảng liên kết nhiều-nhiều giữa công thức và các thẻ phân loại |
recipe_ratings |
Đánh giá xếp hạng (1-5 sao) và nhận xét của người dùng |
recipe_collections |
Bộ sưu tập công thức cá nhân do người dùng khởi tạo |
recipe_collection_items |
Danh sách các công thức được lưu trong từng bộ sưu tập |
suggestion_feedbacks |
Phản hồi của người dùng đối với các đề xuất món ăn từ hệ thống AI |
user_requests |
Yêu cầu đăng tải công thức hoặc nguyên liệu chờ quản trị viên duyệt |
Về quy trình triển khai:
- Đóng gói ứng dụng: Ứng dụng web ASP.NET Core và dịch vụ Python AI được đóng gói thành các Docker Images độc lập.
- Điều phối hệ thống: Hệ thống sử dụng Kubernetes để điều phối các vùng chứa (containers), cấu hình triển khai thực tế trên nền tảng Google Kubernetes Engine (GKE).
- Bảo mật và vận hành: Thiết lập chứng chỉ bảo mật SSL/TLS phục vụ kết nối HTTPS, xây dựng kịch bản kiểm tra tự động và quy trình xử lý lỗi vận hành cho cụm máy chủ.
Nội dung chính theo từng chương
Chương 1: Cơ sở lý thuyết và các công nghệ được sử dụng
Chương này tập trung trình bày các nền tảng lý thuyết và công nghệ xây dựng LetWeCook. Tác giả phân tích mô hình Clean Architecture cùng nguyên lý Dependency Inversion nhằm phân tách hệ thống thành ba tầng chính: Domain, Infrastructure và Presentation. Mô hình MVC trong ASP.NET Core được trình bày chi tiết về luồng tiếp nhận yêu cầu từ Controller, xử lý dữ liệu qua Model và phản hồi giao diện thông qua View. Các tính năng của Entity Framework Core như Change Tracking, LINQ và cơ chế Migration theo hướng Code-First được hệ thống hóa để quản lý cấu trúc bảng trong SQL Server. Về giao diện, tác giả trình bày cách ứng dụng Tailwind CSS để xây dựng giao diện đáp ứng (responsive) và jQuery để xử lý dữ liệu động không tải lại trang. Các giải pháp bảo mật gồm ASP.NET Core Identity, xác thực bên ngoài OAuth2 và phòng chống tấn công CSRF bằng mã bảo vệ được thiết lập đầy đủ.
Chương 2: Phân tích và thiết kế hệ thống
Nội dung chương 2 mở đầu bằng báo cáo khảo sát và phân tích đối chiếu ba website ẩm thực tiêu biểu: Cookpad, Tasty và Allrecipes:
| Nền tảng |
Tính năng chính |
Giao diện |
Ưu điểm nổi bật |
Nhược điểm chính |
| Cookpad |
Tìm kiếm theo nguyên liệu; chia sẻ công thức; bình luận cộng đồng. |
Thiết kế tối giản, thân thiện thiết bị di động. |
Cộng đồng lớn, hoạt động tích cực; tìm kiếm thông minh. |
Thiếu phân loại chuyên biệt; không có phân tích dinh dưỡng; nhiều tính năng trả phí. |
| Tasty |
Video nấu ăn ngắn; gợi ý theo dịp và chế độ ăn; lưu danh sách nguyên liệu. |
Trực quan, tối ưu cho định dạng video và mạng xã hội. |
Nội dung trực quan, sinh động; hấp dẫn giới trẻ. |
Tương tác người dùng hạn chế; thiếu thông tin kỹ thuật nấu và chỉ số dinh dưỡng. |
| Allrecipes |
Đề xuất cá nhân hóa; lập kế hoạch bữa ăn; phân tích dinh dưỡng chi tiết. |
Truyền thống, tập trung vào nội dung văn bản. |
Dữ liệu công thức phong phú; có công cụ dinh dưỡng và kế hoạch ăn. |
Giao diện lỗi thời; tốc độ tải trang chậm; chưa thu hút người dùng trẻ. |
Từ kết quả khảo sát, tác giả xây dựng 14 kịch bản sử dụng (Use Case Scenarios):
- Đăng ký, đăng nhập truyền thống, đăng nhập OAuth (Google/Facebook) và khôi phục mật khẩu.
- Cập nhật hồ sơ cá nhân (ảnh đại diện tối đa 10MB các định dạng JPG/JPEG/PNG, thông tin liên lạc, tài khoản PayPal) và thiết lập 12 chế độ ăn uống: None, Vegetarian, Vegan, GlutenFree, Pescatarian, LowCalorie, HighProtein, LowCarb, LowFat, LowSugar, HighFiber, LowSodium.
- Tìm kiếm công thức theo tên, thời gian nấu, độ khó, khẩu phần và chế độ ăn.
- Xem chi tiết công thức nấu ăn, thành phần định lượng, các bước chế biến và thông tin dinh dưỡng.
- Đánh giá xếp hạng từ 1 đến 5 sao và viết bình luận phản hồi.
- Quản lý công thức cá nhân (thêm, sửa, xóa công thức).
- Quản lý bộ sưu tập công thức yêu thích theo từng chủ đề.
- Tìm kiếm nguyên liệu theo tên và phân loại danh mục.
- Xem thông tin chi tiết nguyên liệu, công dụng và mẹo bảo quản.
- Quản lý danh sách nguyên liệu cá nhân, hỗ trợ tính năng tự động điền dinh dưỡng bằng AI ("Add Nutrition Values with AI") cùng các chỉ số: Calories, Protein, Carbohydrates, Fat, Sugar, Fiber, Sodium.
- Gợi ý công thức món ăn từ ảnh chụp nguyên liệu thực tế tải lên.
- Gợi ý công thức bằng AI dựa trên sở thích, các món đánh giá 4-5 sao, bình luận tích cực và lịch sử ủng hộ tác giả.
- Hỗ trợ tài chính (donate) cho tác giả công thức thông qua cổng thanh toán PayPal.
- Quản trị viên xét duyệt yêu cầu đăng tải (phê duyệt, từ chối kèm lý do, hoặc yêu cầu chỉnh sửa) đối với công thức và nguyên liệu mới.
Toàn bộ các ca sử dụng được mô hình hóa qua hệ thống sơ đồ chức năng (Use Case Diagram), lược đồ hoạt động (Activity Diagram), lược đồ tuần tự (Sequence Diagram), lược đồ lớp (Class Diagram) và sơ đồ thực thể mối quan hệ (ERD).
Chương 3: Thiết kế giao diện
Chương 3 trình bày các bản thiết kế giao diện chi tiết của ứng dụng LetWeCook, bao gồm 17 màn hình chức năng:
- Màn hình xác thực: Đăng nhập, Đăng ký, Quên mật khẩu.
- Màn hình điều hướng chính: Trang chủ, 5 biến thể giao diện Gợi ý món ăn, Hồ sơ cá nhân.
- Màn hình quản trị nội dung: Công thức nấu ăn cá nhân, Bộ sưu tập công thức (2 giao diện), Tìm kiếm nguyên liệu, Chi tiết nguyên liệu, Tạo nguyên liệu (2 giao diện), Tìm kiếm công thức, Tạo công thức (2 giao diện), Chi tiết công thức (3 giao diện).
- Màn hình tương tác và tính năng mở rộng: Đánh giá công thức, Gợi ý món ăn dựa trên ảnh chụp nguyên liệu, Giao diện hỗ trợ tài chính cho tác giả qua PayPal.
Các giao diện được thiết kế đồng bộ theo chuẩn lưới của Tailwind CSS, tích hợp phân trang động 12 mục mỗi trang (với các nút First, Prev, Next, Last) và các biểu mẫu nhập liệu có kiểm tra tính hợp lệ dữ liệu.
Chương 4: Ứng dụng trí tuệ nhân tạo trong hệ thống
Chương này đi sâu vào quy trình xây dựng các tính năng thông minh trên LetWeCook. Tác giả trình bày chi tiết quy trình học máy:
- Lựa chọn mô hình và thiết kế đặc trưng: Trích xuất các thuộc tính từ hồ sơ người dùng, danh mục sở thích ăn uống, lịch sử tương tác và các đặc trưng nhận dạng nguyên liệu từ hình ảnh.
- Chuẩn bị dữ liệu: Xây dựng cấu trúc dữ liệu huấn luyện, thực hiện tiền xử lý dữ liệu (làm sạch dữ liệu, xử lý giá trị khuyết thiếu và chuẩn hóa véc-tơ đặc trưng).
- Huấn luyện và đánh giá: Thực hiện huấn luyện mô hình phân loại và gợi ý; đánh giá chất lượng mô hình thông qua báo cáo phân loại (Classification Report).
- Triển khai mô hình: Lưu trữ mô hình đã huấn luyện và đóng gói vào API dịch vụ FastAPI bằng Python, cho phép hệ thống web ASP.NET Core gửi truy vấn và nhận kết quả đề xuất trong thời gian thực.
Chương 5: Cài đặt
Chương 5 mô tả chi tiết quá trình đóng gói và phát hành ứng dụng:
- Thiết lập môi trường vận hành đáp ứng yêu cầu của nền tảng .NET Core, SQL Server và Python.
- Xây dựng Dockerfile và tạo các Docker Images cho từng thành phần trong hệ thống.
- Viết cấu hình Kubernetes (các tệp cấu hình Pods, Services, Ingress).
- Thực hiện quy trình triển khai phân tán trên cụm máy chủ Google Kubernetes Engine (GKE).
- Thiết lập kiểm tra khởi chạy hệ thống, giám sát luồng dữ liệu và tổng kết quy trình xử lý sự cố thường gặp trong môi trường phân tán.
Kết quả và đóng góp
Đồ án đã hoàn thành các mục tiêu đề ra và ghi nhận các kết quả cụ thể trong văn bản:
- Kết quả khảo sát nhu cầu người dùng làm tiền đề phát triển hệ thống:
- 80% người dùng mong muốn tính năng tạo bộ sưu tập công thức yêu thích để truy cập nhanh.
- 70% người dùng đánh giá tính năng tìm kiếm và bộ lọc nâng cao là rất cần thiết.
- 60% người dùng coi trọng việc bình luận, đánh giá công thức để tham khảo ý kiến cộng đồng.
- Hơn 50% người dùng bày tỏ sự hứng thú với tính năng AI gợi ý món ăn theo sở thích cá nhân.
- Một bộ phận người dùng ủng hộ việc tích hợp cơ chế donate cho tác giả nội dung.
- Kết quả xây dựng phần mềm:
- Hoàn thiện ứng dụng web LetWeCook trên nền tảng Clean Architecture kết hợp ASP.NET Core MVC, quản trị dữ liệu bằng SQL Server thông qua 17 bảng liên kết.
- Hiện thực hóa 14 ca sử dụng bao quát các tương tác từ người dùng thông thường đến quản trị viên.
- Hỗ trợ 12 chế độ ăn uống chuyên biệt phục vụ cá nhân hóa dinh dưỡng.
- Tích hợp thành công 2 dịch vụ AI độc lập: gợi ý món ăn theo hành vi/sở thích và nhận diện nguyên liệu qua ảnh chụp.
- Triển khai cổng thanh toán PayPal cho phép quyên góp tài chính trực tiếp tới tác giả công thức.
- Đóng gói container bằng Docker và triển khai vận hành thành công trên cụm Google Kubernetes Engine (GKE) bảo mật qua HTTPS.
Đóng góp của đồ án:
- Giải quyết bài toán tích hợp giữa một framework web truyền thống (.NET Core) với các dịch vụ học máy hiện đại (FastAPI/Python) trong lĩnh vực ẩm thực.
- Đề xuất mô hình nền tảng ẩm thực kết hợp quản lý dữ liệu cá nhân, nhận diện hình ảnh và cơ chế bảo trợ tác giả trực tiếp, khắc phục các khoảng trống vận hành của những nền tảng thương mại hiện nay.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của đề tài:
- Hệ thống mới chỉ tập trung phát triển trên nền tảng ứng dụng web, chưa xây dựng ứng dụng di động độc lập (native mobile app) trên iOS hoặc Android.
- Khả năng xử lý của mô hình AI nhận diện hình ảnh còn phụ thuộc vào tập dữ liệu huấn luyện và chất lượng ảnh chụp đầu vào.
- Quy trình xét duyệt nội dung công thức và nguyên liệu mới vẫn đòi hỏi thao tác can thiệp thủ công từ phía quản trị viên qua bảng
user_requests.
Hướng phát triển tiếp được tác giả xác định:
- Nâng cấp độ chính xác của mô hình học máy nhận diện ảnh khi chụp nhiều nguyên liệu phức tạp cùng lúc.
- Cải tiến thuật toán gợi ý món ăn thông minh dựa trên việc học sâu hơn hành vi dài hạn của người dùng.
- Phát triển ứng dụng di động để tăng tính tiện lợi cho người dùng khi thao tác trực tiếp trong nhà bếp.
- Tự động hóa một phần quy trình kiểm duyệt nội dung nhờ AI trước khi gửi đến quản trị viên.
Giá trị tham khảo
Báo cáo khóa luận có giá trị tham khảo hữu ích cho các nhóm đối tượng:
- Sinh viên chuyên ngành Công nghệ thông tin và Công nghệ phần mềm: Là tài liệu tham khảo chi tiết về việc ứng dụng Clean Architecture trong dự án thực tế với ASP.NET Core, kết hợp Entity Framework Core Code-First và cấu trúc cơ sở dữ liệu quan hệ phức tạp.
- Lập trình viên phát triển hệ thống kết hợp Web và Trí tuệ nhân tạo: Cung cấp phương án kiến trúc phân tách rõ ràng giữa ứng dụng web quản trị và microservice AI viết bằng Python FastAPI.
- Người nghiên cứu về quy trình DevOps và triển khai ứng dụng: Cung cấp tài liệu thực tế về việc đóng gói container bằng Docker, cấu hình tệp manifest và vận hành hệ thống phân tán trên dịch vụ Google Kubernetes Engine (GKE).
Các phần đáng tham khảo nhất trong tài liệu gồm: chương phân tích đặc tả Use Case kèm lược đồ tuần tự (Sequence Diagram), thiết kế cơ sở dữ liệu 17 bảng chuẩn hóa, và quy trình triển khai cụm dịch vụ trên nền tảng GKE.
Câu hỏi thường gặp
1. Ứng dụng LetWeCook hỗ trợ những chế độ ăn uống (Dietary Preferences) cụ thể nào để cá nhân hóa cho người dùng?
Trong hệ thống, người dùng có thể tùy chọn một hoặc nhiều chế độ ăn uống thuộc danh mục 12 lựa chọn: None (không có sở thích đặc biệt), Vegetarian (ăn chay có trứng/sữa), Vegan (thuần chay), GlutenFree (không chứa gluten), Pescatarian (ăn cá, không ăn thịt), LowCalorie (ít calo), HighProtein (giàu protein), LowCarb (ít tinh bột), LowFat (ít chất béo), LowSugar (ít đường), HighFiber (giàu chất xơ), và LowSodium (ít muối).
2. Kiến trúc phần mềm của LetWeCook được tổ chức như thế nào để tích hợp dịch vụ AI vào ứng dụng web?
Ứng dụng sử dụng mô hình Clean Architecture phân tầng: Tầng Domain (thực thể, interface), Tầng Infrastructure (EF Core, SQL Server, Identity), và Tầng Presentation (ASP.NET Core MVC, Tailwind CSS, jQuery). Dịch vụ AI được tách biệt thành một microservice độc lập viết bằng Python và FastAPI, sử dụng các thư viện Scikit-learn, Pandas, NumPy, giao tiếp với hệ thống web chính thông qua các API RESTful.
3. Cơ chế hỗ trợ tài chính cho tác giả công thức trên LetWeCook hoạt động ra sao?
Người dùng chọn nút "Ủng hộ tác giả" trên trang chi tiết công thức, nhập số tiền và lời nhắn tùy chọn. Giao dịch được xử lý qua cổng PayPal tích hợp vào tài khoản PayPal do tác giả thiết lập trong hồ sơ cá nhân. Sau khi giao dịch thành công, công thức được gắn huy hiệu "Được ủng hộ" và giao dịch được lưu vết trong lịch sử của cả hai người dùng.
4. Dữ liệu dinh dưỡng của nguyên liệu được quản lý như thế nào trong hệ thống?
Khi tạo hoặc cập nhật nguyên liệu trong bảng ingredient_details, người dùng có thể tự nhập hoặc sử dụng tính năng "Add Nutrition Values with AI" để hệ thống tự động điền các chỉ số dinh dưỡng gồm: Calories, Protein (g), Carbohydrates (g), Fat (g), Sugar (g), Fiber (g) và Sodium (mg).
5. Quy trình quản trị viên xét duyệt yêu cầu đăng tải nội dung được thiết kế như thế nào?
Thông qua bảng user_requests, quản trị viên truy cập danh sách các công thức và nguyên liệu do người dùng gửi lên. Quản trị viên kiểm tra nội dung chi tiết (hình ảnh, nguyên liệu, hướng dẫn, chỉ số dinh dưỡng) và thực hiện một trong ba thao tác: Phê duyệt (hiển thị công khai), Từ chối (nhập lý do từ chối), hoặc Yêu cầu chỉnh sửa để người dùng hoàn thiện và gửi lại.
Kết luận
Khóa luận tốt nghiệp "Phát triển ứng dụng về nấu ăn" của sinh viên Võ Trọng Tín đã hoàn thành việc xây dựng ứng dụng web LetWeCook theo đúng kế hoạch kỹ thuật đề ra. Đề tài kết hợp thành công kiến trúc Clean Architecture trên nền tảng ASP.NET Core MVC với microservice AI phát triển bằng Python/FastAPI, giải quyết đồng thời các bài toán về quản lý nguyên liệu, tương tác cộng đồng, gợi ý món ăn thông minh và hỗ trợ tài chính cho tác giả qua PayPal. Với cơ sở dữ liệu 17 bảng được thiết kế chặt chẽ và quy trình triển khai hoàn chỉnh trên Google Kubernetes Engine, công trình cung cấp giải pháp kỹ thuật có tính ứng dụng thực tiễn cao trong lĩnh vực công nghệ phần mềm ứng dụng.