Bối cảnh và vấn đề nghiên cứu

Khóa luận tốt nghiệp kỹ sư ngành Công nghệ thông tin, chuyên ngành Công nghệ phần mềm của tác giả Bùi Công Danh (MSSV: 19110008, Lớp 19110CLST4) tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh, dưới sự hướng dẫn của ThS. Lê Thị Minh Châu (thực hiện từ ngày 20/02/2023 đến 29/05/2023), tập trung giải quyết bài toán ứng dụng công nghệ thông tin vào lĩnh vực dịch vụ ẩm thực (F&B - Food and Beverage).

Bối cảnh thực tiễn được tác giả nêu rõ qua các số liệu thống kê cụ thể tại thị trường Việt Nam tính đến tháng 02/2023. Với quy mô dân số gần 100 triệu người cùng sự phục hồi của nền kinh tế sau đại dịch Covid-19, thị trường F&B ghi nhận tiềm năng khai thác rất lớn. Toàn quốc có khoảng 540.000 cửa hàng ăn uống, bao gồm 430.000 cửa hàng nhỏ lẻ, 7.000 nhà hàng phục vụ đồ ăn nhanh, 22.000 cửa hàng cà phê (tính cả chuỗi nhượng quyền, chuỗi tự doanh và quầy bar), cùng hơn 80.000 nhà hàng được đầu tư và phát triển bài bản. Trong số đó, ngành hàng thức ăn nhanh với các món ăn như gà rán, burger, pizza nhận được sự đón nhận nồng nhiệt từ phân khúc khách hàng trẻ tuổi (thế hệ GenZ).

Về tính cấp thiết, giai đoạn hậu Covid-19 tạo ra áp lực tài chính đè nặng lên các cửa hàng đồ ăn nhanh quy mô vừa và nhỏ hoặc các cơ sở nhượng quyền, khiến nhiều đơn vị phải rời bỏ thị trường và để lại thị phần cho các thương hiệu lớn như KFC, Lotteria, Texas, Popeyes. Đồng thời, sự phổ biến của thiết bị thông minh (điện thoại, máy tính cá nhân) và cuộc cách mạng công nghệ 4.0 đã thay đổi căn bản hành vi người dùng, khiến thói quen di chuyển trực tiếp đến cửa hàng giảm đi và nhu cầu đặt món trực tuyến gia tăng nhanh chóng. Việc thiết lập một website thương mại điện tử chuyên biệt không chỉ đóng vai trò kênh bán lẻ tự động hóa nhằm tiết kiệm thời gian cho khách hàng, mà còn là công cụ tiếp thị, định vị hình ảnh và là "bộ mặt" trực tuyến của cửa hàng trên không gian mạng.

Mục tiêu và nhiệm vụ nghiên cứu của đề tài được xác định thành hai nhóm chính:

  1. Đối với khách hàng: Xây dựng giao diện cho phép xem thực đơn (menu), lựa chọn khẩu phần ăn theo nhu cầu, quản lý giỏ hàng, thực hiện quy trình thanh toán (yêu cầu đăng nhập hoặc đăng ký tài khoản nếu chưa có), lựa chọn hình thức nhận hàng và phương thức thanh toán, tích lũy điểm thưởng sau mỗi đơn hàng thành công để thăng hạng thành viên hoặc đổi phiếu giảm giá (voucher).
  2. Đối với quản trị viên: Thiết lập hệ thống quản trị hỗ trợ quản lý đơn hàng, cập nhật trạng thái đơn hàng cho khách hàng, quản lý và thêm mới sản phẩm, khởi tạo các chương trình khuyến mãi/voucher kích cầu, quản lý danh sách thông tin người dùng và theo dõi biểu đồ kinh doanh.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Quy trình vận hành và kinh doanh của ngành F&B, tập trung vào mô hình bán hàng của các chuỗi thức ăn nhanh (như KFC, Lotteria, Jollibee, Popeyes, Texas).
  • Phạm vi nghiên cứu: Tập trung nghiên cứu cơ chế hoạt động của bộ công nghệ MERN Stack để phát triển ứng dụng website kinh doanh đồ ăn nhanh; phạm vi khảo sát thực tế hướng vào các nền tảng bán hàng trực tuyến của các chuỗi đồ ăn nhanh lớn tại Việt Nam trong năm 2023.

Cơ sở lý thuyết và phương pháp

Đề tài áp dụng mô hình kiến trúc MVC (Model - View - Controller) kết hợp với bộ công nghệ MERN Stack làm nền tảng kỹ thuật cốt lõi. MERN Stack là bộ giải pháp mã nguồn mở hoàn toàn dựa trên ngôn ngữ JavaScript, bao gồm bốn thành phần:

Thành phần Vai trò kỹ thuật trong hệ thống Đặc tính và cơ chế cốt lõi
MongoDB Hệ quản trị cơ sở dữ liệu NoSQL Lưu trữ dạng tài liệu (document-oriented), định dạng BSON, hỗ trợ replica set, sharding, xử lý tập hợp (aggregation), lưu trữ dữ liệu đệm trên RAM giúp tối ưu tốc độ đọc/ghi
ExpressJS Framework ứng dụng web phía máy chủ Xây dựng trên nền tảng NodeJS, cung cấp hệ thống định tuyến (router) cho các phương thức HTTP và cơ chế middleware xử lý xác thực, kiểm soát lỗi
ReactJS Thư viện giao diện người dùng (Front-end) Phát triển bởi Meta, vận hành theo mô hình dựa trên thành phần (component-based), quản lý trạng thái qua Props và State, sử dụng cú pháp JSX, tối ưu hiệu năng render thông qua Virtual DOM và vòng đời Component Lifecycle (Mounting, Updating, Unmounting)
NodeJS Môi trường thực thi JavaScript phía máy chủ Xây dựng trên nền JavaScript Engine V8 của Google, xử lý I/O không đồng bộ (asynchronous) phục vụ xây dựng API và các tác vụ backend

Phương pháp nghiên cứu thực tế được tác giả triển khai bao gồm:

  1. Phương pháp khảo sát và phân tích hiện trạng: Khảo sát trực tiếp giao diện và tính năng trên website chính thức của 3 thương hiệu lớn tại Việt Nam: Jollibee (ưu điểm giao diện bắt mắt, hình ảnh chân thực nhưng nhược điểm là xuất hiện biểu mẫu nhập thông tin bắt buộc ngay khi vừa truy cập), Lotteria (thiết kế phù hợp với thị hiếu GenZ, menu hiển thị giá gốc và giá khuyến mãi song tốc độ tải trang chậm và không cho phép thêm món vào giỏ hàng nếu chưa đăng nhập), và KFC (bố cục rõ ràng, nhiều combo, định vị địa chỉ trực tuyến nhưng mục khuyến mãi không hoạt động ổn định).
  2. Phương pháp mô hình hóa phần mềm: Sử dụng chuẩn mô hình hóa UML để phân tích yêu cầu nghiệp vụ qua sơ đồ ca sử dụng (Usecase Diagram), mô hình hóa luồng xử lý tương tác qua 17 sơ đồ tuần tự (Sequence Diagram), và mô hình hóa cấu trúc tĩnh qua sơ đồ lớp (Class Diagram).
  3. Phương pháp thiết kế cơ sở dữ liệu hướng tài liệu: Xây dựng lược đồ dữ liệu NoSQL không ràng buộc khóa ngoại cứng nhắc, tối ưu hóa truy vấn thông qua các collection được lưu trữ trên nền tảng MongoDB Atlas.

Nguồn dữ liệu của nghiên cứu bao gồm số liệu thống kê ngành F&B Việt Nam tính đến tháng 02/2023, tài liệu kỹ thuật từ nhà phát triển công nghệ MERN Stack, tài liệu hướng dẫn tích hợp cổng thanh toán trực tuyến và giao vận vận chuyển, cùng dữ liệu khảo sát trực tiếp từ các website thương mại điện tử fast food đối thủ.

Thiết kế và triển khai

Hệ thống được thiết kế theo kiến trúc phân tầng, phân định rõ ràng giữa tầng giao diện người dùng (ReactJS), tầng logic máy chủ (ExpressJS/NodeJS) và tầng dữ liệu đám mây (MongoDB Atlas).

Hệ sinh thái công cụ hỗ trợ và công nghệ tích hợp bao gồm:

  • Công cụ phát triển và kiểm thử: Visual Studio Code làm môi trường soạn thảo mã nguồn; Postman dùng để gửi các yêu cầu HTTP kiểm thử tính toàn vẹn của các API máy chủ.
  • Cơ chế bảo mật và phân quyền: Sử dụng JSON Web Token (JWT) để khởi tạo và làm mới chuỗi mã thông báo, phục vụ xác thực người dùng và phân quyền truy cập tài nguyên hệ thống.
  • Tích hợp dịch vụ ngoại vi: VNPAY API được sử dụng để tích hợp giải pháp thanh toán điện tử trực tuyến; GHN API (Giao Hàng Nhanh) được tích hợp để tự động tính toán chi phí vận chuyển dựa trên địa chỉ giao hàng của khách hàng.
  • Đóng gói và ảo hóa: Ứng dụng công nghệ Docker (Docker Image, Docker Container, Docker Engine, Docker Compose) để đóng gói mã nguồn, môi trường thực thi và các phụ thuộc vào các container độc lập, đảm bảo tính nhất quán khi chuyển đổi môi trường.
  • Triển khai hạ tầng đám mây: Sử dụng dịch vụ điện toán máy ảo AWS EC2 (Elastic Compute Cloud) thuộc Amazon Web Services. Hệ thống tận dụng các tính năng quản lý instance, nhóm bảo mật (Security Groups), chính sách IAM, cơ chế cân bằng tải Elastic Load Balancing và khả năng co giãn tự động Auto Scaling để duy trì độ tin cậy và khả năng mở rộng.

Cơ sở dữ liệu của hệ thống được tổ chức thành 5 collection chính trong MongoDB:

Tên Collection Các trường dữ liệu chính Kiểu dữ liệu Diễn giải chức năng nghiệp vụ
User _id, fullName, Dob, Gender, Address (add, ward, district), phoneNumber, Reward points, Rank, totalOrders, successfulOrder, percentage, Email, Password, softDeleted, Roles, Voucher ObjectID, String, Date, Boolean, Object, Number, Array Lưu trữ định danh, thông tin cá nhân, tài khoản đăng nhập, điểm thưởng tích lũy, cấp bậc thành viên (Đồng, Bạc, Vàng, Bạch Kim, Kim Cương), tỷ lệ đơn hàng thành công, trạng thái khóa tài khoản và phân quyền ("USER", "ADMIN")
Product _id, Name, Category, Price, View, Sold, Img, softDeleted ObjectID, String, Number, Boolean Quản lý mã sản phẩm, tên món ăn, danh mục liên kết, đơn giá, lượt xem kích cầu, số lượng đã bán, đường dẫn ảnh và trạng thái ẩn/hiện
Order _id, totalPrice, Status, Voucher, items (Product, Quantity, Price), dateOrder, User, isPaid, Payment, DeliveryMethod, Discount, VAT, feeShip, subTotal, Contact ObjectID, Number, String, Array, Date, Boolean, Object Quản lý thông tin chi tiết đơn hàng, danh sách món ăn, ngày đặt, trạng thái thanh toán, phương thức trả tiền (COD hoặc online), cách nhận hàng (ship hoặc pick up), thuế VAT (10%), phí vận chuyển, tổng tiền sau giảm trừ và thông tin liên hệ
Voucher _id, isActive, Expired, isExpired, Description, Discount, minDiscount, maxDiscount ObjectId, Boolean, Date, Array, Number Quản lý mã giảm giá (sử dụng chính _id), trạng thái kích hoạt, hạn sử dụng (mặc định 30 ngày), mô tả điều kiện áp dụng, phần trăm giảm giá, giá trị đơn hàng tối thiểu và số tiền chiết khấu tối đa
Category _id, Name ObjectId, String Phân loại các nhóm món ăn trong hệ thống menu

Hệ thống thiết lập 3 nhóm tác nhân tương tác: GUEST (người dùng vãng lai chưa xác thực), CLIENT (khách hàng đã đăng nhập tài khoản), và ADMIN (quản trị viên quản lý cửa hàng). Mọi tương tác nghiệp vụ được kiểm soát thông qua các luồng xử lý tuần tự đồng bộ giữa máy trạm, máy chủ và cơ sở dữ liệu.

Nội dung chính theo từng chương

Bố cục khóa luận được cấu trúc thành 3 phần với 4 chương nội dung chính, bám sát các giai đoạn của quy trình công nghệ phần mềm:

PHẦN I: MỞ ĐẦU

Trình bày lý do chọn đề tài dựa trên số liệu thực tế của ngành ẩm thực Việt Nam năm 2023, phân tích tính cấp thiết của việc xây dựng website kinh doanh đồ ăn nhanh cho các đơn vị vừa và nhỏ hậu Covid-19. Xác định mục tiêu nghiên cứu cho cả đối tượng khách hàng và quản trị viên, giới hạn đối tượng và phạm vi nghiên cứu xoay quanh công nghệ MERN Stack, đồng thời liệt kê tổng quan các công nghệ và công cụ hỗ trợ (VS Code, Postman, MongoDB Atlas, Docker, AWS EC2, VNPAY, GHN).

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

Tập trung làm rõ cơ sở lý thuyết của bộ công nghệ MERN Stack và các công cụ hạ tầng:

  • Phân tích chi tiết hệ quản trị cơ sở dữ liệu MongoDB: cấu trúc lưu trữ BSON hướng tài liệu, các tính năng truy vấn (field, regex, range), cơ chế tạo chỉ mục (indexing), tính năng sao lưu nhân bản (replication), tính năng tổng hợp dữ liệu (aggregation), và khả năng phân mảnh (sharding). Tác giả cũng chỉ ra các nhược điểm cần lưu ý của MongoDB như yêu cầu dung lượng RAM lớn, rủi ro mất dữ liệu khi mất điện đột xuất do chưa ghi ngay xuống ổ cứng, và việc không có cơ chế giao dịch (transaction) chặt chẽ cho mô hình ngân hàng.
  • Phân tích framework ExpressJS: vai trò trung gian xử lý các HTTP request, thiết lập router định hướng URL và cơ chế middleware.
  • Phân tích thư viện ReactJS: các khái niệm cốt lõi bao gồm kiến trúc phân tách thành phần (component-based), cơ chế Virtual DOM giúp giảm tải việc vẽ lại DOM thực, phân biệt Props (dữ liệu truyền từ component cha xuống con) và State (dữ liệu nội bộ), chu kỳ vòng đời của thành phần (Mounting, Updating, Unmounting), và cú pháp mở rộng JSX.
  • Giới thiệu môi trường thực thi NodeJS trên nền V8 Engine của Google phục vụ xử lý backend bất đồng bộ.
  • Phân tích công nghệ ảo hóa đóng gói Docker (khái niệm Docker Image, Docker Container, Docker Engine, Docker Compose) và dịch vụ máy ảo đám mây AWS EC2 (quản lý instance, tính năng co giãn Auto Scaling, bộ cân bằng tải Elastic Load Balancing và quản lý bảo mật qua Security Groups, khóa SSH).

CHƯƠNG 2: XÂY DỰNG WEBSITE KINH DOANH ĐỒ ĂN NHANH

  • Trình bày kết quả khảo sát thực tế và phân tích điểm mạnh, điểm yếu của website các chuỗi thức ăn nhanh lớn đang hoạt động tại Việt Nam: Jollibee, Lotteria và KFC.
  • Đưa ra bản đặc tả yêu cầu chức năng hệ thống theo mô hình MVC. Phân định rõ các yêu cầu nghiệp vụ:
    • Đối với khách hàng: Đăng ký, đăng nhập, quên mật khẩu, cập nhật thông tin cá nhân, xem menu, thêm/sửa/kiểm tra giỏ hàng, thanh toán giỏ hàng (chọn COD hoặc online), chọn nhận hàng (giao tận nơi hoặc nhận tại quán), tích điểm đơn hàng, đổi điểm lấy voucher, và nâng hạng thành viên.
    • Đối với quản trị viên: Đăng nhập, thêm mới/cập nhật sản phẩm, quản lý khách hàng, quản lý đơn hàng và cập nhật tình trạng giao nhận, tạo voucher và các chương trình khuyến mãi.

CHƯƠNG 3: MÔ HÌNH THIẾT KẾ

Tập trung hiện thực hóa các yêu cầu thành các mô hình kỹ thuật chi tiết:

  • Thiết lập lược đồ ca sử dụng (Usecase Diagram) cho 3 tác nhân: GUEST (7 ca sử dụng: Visit website, Watch menu, Watch food detail, Classify by category, Sign up, Sign in, Forget password); CLIENT (22 ca sử dụng: bổ sung các tính năng quản lý hồ sơ, đổi mật khẩu, thăng hạng, đổi điểm thưởng, quản lý giỏ hàng, đặt hàng, thanh toán, áp dụng mã voucher); ADMIN (21 ca sử dụng: quản lý đơn hàng theo trạng thái, cập nhật trạng thái vận chuyển, quản lý sản phẩm, quản lý người dùng, hạn chế/khóa tài khoản boom hàng, cấp điểm thưởng, quản lý voucher).
  • Thiết kế 17 lược đồ tuần tự (Sequence Diagram) mô tả chi tiết tương tác qua lại giữa Client, Server và Database: đăng ký tài khoản, làm mới token, đăng nhập, quên mật khẩu, tạo đơn hàng, lấy danh sách đơn hàng, xem chi tiết đơn hàng, cập nhật đơn hàng, thanh toán online, tạo mới sản phẩm, cập nhật sản phẩm, lấy danh sách sản phẩm, xem chi tiết sản phẩm, đổi mật khẩu, đăng xuất, xem thông tin cá nhân, cập nhật thông tin cá nhân.
  • Thiết kế chi tiết cơ sở dữ liệu MongoDB gồm 5 collection và thiết kế sơ đồ lớp (Class Diagram) với các thuộc tính cụ thể cho từng đối tượng (User, Voucher, Product, Order, Category).

CHƯƠNG 4: THIẾT KẾ GIAO DIỆN XỬ LÝ

Mô tả chi tiết các màn hình giao diện đã được lập trình và tích hợp xử lý:

  • Phân hệ người dùng chưa đăng nhập: Giao diện trang chủ hiển thị sản phẩm theo danh mục, trang đăng nhập tài khoản, trang quên mật khẩu, trang đăng ký, trang xác thực mã OTP gửi về email (có bộ đếm ngược 60 giây), thông báo phản hồi khi đăng nhập sai, trang chi tiết sản phẩm trước và sau khi thêm vào giỏ hàng, giao diện quản lý giỏ hàng (khi đã có món, thao tác xóa món, và trạng thái giỏ rỗng).
  • Phân hệ người dùng đã đăng nhập: Giao diện trang chủ cá nhân hóa, trang thông tin cá nhân, trang đổi mật khẩu, trang quản lý điểm thưởng tích lũy, giao diện chi tiết mã giảm giá, lịch sử các giao dịch đã thực hiện, và trang thanh toán (checkout) hiển thị chi tiết tiền hàng, phí ship, chiết khấu và tổng thanh toán.
  • Phân hệ quản trị viên: Trang quản lý danh sách đơn hàng và lọc theo trạng thái, trang quản trị sản phẩm (giao diện bảng sản phẩm, form thêm mới sản phẩm, form chỉnh sửa sản phẩm), trang quản trị người dùng (xem chi tiết thông tin, khóa tài khoản vi phạm), và màn hình hiển thị biểu đồ thống kê kinh doanh.

PHẦN III: KẾT QUẢ VÀ ĐÁNH GIÁ

Tổng hợp đánh giá kết quả đạt được, phân tích các nhược điểm còn tồn tại trong giải pháp kỹ thuật và đề xuất các định hướng phát triển hoàn thiện hệ thống trong tương lai.

Kết quả và đóng góp

Khóa luận đã hoàn thành việc xây dựng một hệ thống website thương mại điện tử chuyên ngành thức ăn nhanh hoàn chỉnh, đáp ứng đầy đủ các yêu cầu chức năng đặt ra cho cả khách hàng và quản trị viên:

  • Kết quả kỹ thuật và số liệu cụ thể trong hệ thống:
    • Tích hợp đầy đủ quy trình đặt hàng trực tuyến với công thức tính toán tài chính tự động gồm: tiền hàng gốc (totalPrice), thuế giá trị gia tăng bắt buộc 10% (VAT), phí vận chuyển tính qua GHN API (feeShip), giá trị chiết khấu từ voucher (Discount), và tổng số tiền thanh toán cuối cùng (subTotal).
    • Xây dựng cơ chế mã giảm giá (Voucher) với thời hạn hiệu lực mặc định là 30 ngày kể từ ngày khởi tạo, tích hợp các ràng buộc về giá trị đơn hàng tối thiểu (minDiscount) và giá trị chiết khấu tối đa (maxDiscount).
    • Thiết lập chính sách khách hàng thân thiết thông qua hệ thống tích lũy điểm thưởng (Reward points, rankingPoint) sau mỗi đơn hàng thành công, tự động phân hạng thành viên theo 5 cấp bậc: Đồng, Bạc, Vàng, Bạch Kim và Kim Cương; đồng thời ghi nhận tỷ lệ hoàn thành đơn hàng (percentage) dựa trên tổng số đơn (totalOrders) và số đơn thành công (successfulOrder).
    • Cung cấp tính năng xác thực hai lớp qua OTP email với thời gian chờ phản hồi giới hạn trong 60 giây; cơ chế khóa mềm (softDeleted) hỗ trợ quản trị viên ngăn chặn các tài khoản có hành vi gian lận hoặc phá hoại (boom hàng).
    • Đóng gói ứng dụng thành công bằng Docker và đưa lên vận hành thử nghiệm trên máy ảo điện toán đám mây AWS EC2, tích hợp cổng thanh toán trực tuyến VNPAY.
  • Đóng góp so với các hệ thống đã khảo sát:
    • So với Jollibee: Loại bỏ hoàn toàn biểu mẫu bắt buộc nhập thông tin ngay khi truy cập, cho phép người dùng tự do xem menu và tra cứu sản phẩm trước khi quyết định đặt hàng.
    • So với Lotteria: Khắc phục hạn chế về trải nghiệm bằng cách cho phép khách hàng vãng lai thoải mái thêm món vào giỏ hàng và chỉ yêu cầu đăng nhập/đăng ký khi chuyển sang bước thanh toán (checkout); tối ưu hóa cấu trúc tải trang thông qua Virtual DOM của ReactJS.
    • So với KFC: Hiện thực hóa thành công và vận hành ổn định hệ thống mã giảm giá (voucher), chương trình khuyến mãi và công cụ tính toán chi phí minh bạch.
  • Đề xuất giải pháp của tác giả: Đề xuất áp dụng mô hình phân quyền rõ ràng qua JWT kết hợp phân loại trạng thái đơn hàng (đang chuẩn bị, giao hàng, giao hàng thành công) giúp quản trị viên kiểm soát chuỗi cung ứng cục bộ, đồng thời kiến nghị sử dụng điểm thưởng tích lũy như một công cụ marketing gắn kết khách hàng với thương hiệu.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên các phân tích trong văn bản và phần tự đánh giá của tác giả, công trình ghi nhận một số hạn chế và hướng mở:

  • Hạn chế của hệ thống:
    • Về mặt công nghệ lưu trữ, việc sử dụng MongoDB bộc lộ nhược điểm cố hữu là không có cơ chế giao dịch (transaction) bảo đảm tính toàn vẹn tuyệt đối như các cơ sở dữ liệu quan hệ, gây khó khăn nếu mở rộng sang các giao dịch tài chính phức tạp; ngoài ra, cơ chế lưu trữ đệm ưu tiên trên RAM tiềm ẩn rủi ro sai lệch dữ liệu nếu hệ thống gặp sự cố mất điện đột xuất trước khi dữ liệu kịp ghi xuống đĩa cứng.
    • Chức năng đổi điểm thưởng tích lũy lấy các phần quà là sản phẩm vật lý vẫn đang trong giai đoạn phát triển, chưa được hoàn thiện đồng bộ trên hệ thống.
    • Do giới hạn về mặt thời gian thực hiện (từ tháng 2 đến tháng 5 năm 2023) cũng như kinh nghiệm thực tiễn của sinh viên, hệ thống chưa trải qua các bài kiểm thử tải quy mô lớn để đánh giá độ trễ khi có lượng truy cập đồng thời đột biến.
  • Hướng nghiên cứu tiếp:
    • Hoàn thiện toàn diện phân hệ đổi thưởng, cho phép người dùng sử dụng điểm tích lũy để đổi lấy các sản phẩm quà tặng trực tiếp bên cạnh việc đổi voucher giảm giá.
    • Nâng cấp các giải pháp sao lưu tự động và cơ chế đồng bộ dữ liệu của MongoDB nhằm khắc phục triệt để nguy cơ mất mát dữ liệu đệm.
    • Phát triển thêm các thuật toán gợi ý món ăn thông minh dựa trên lịch sử mua hàng của từng tài khoản khách hàng nhằm nâng cao hiệu quả tiếp thị.

Giá trị tham khảo

Báo cáo khóa luận có giá trị tham khảo thiết thực cho các nhóm đối tượng:

  • Sinh viên chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm: Tài liệu là tài liệu tham khảo chi tiết về cách xây dựng một ứng dụng thương mại điện tử hoàn chỉnh theo kiến trúc MVC sử dụng bộ công nghệ MERN Stack từ giai đoạn phân tích, thiết kế đến triển khai thực tế.
  • Người nghiên cứu quy trình phân tích thiết kế hệ thống phần mềm: Khóa luận cung cấp hệ thống tài liệu mô hình hóa chuẩn mực, đặc biệt là bảng đặc tả 17 lược đồ tuần tự (Sequence Diagram) bao quát hầu hết các nghiệp vụ thương mại điện tử cơ bản và nâng cao (quản lý token, quy trình thanh toán online, phân quyền admin/user).
  • Lập trình viên phát triển ứng dụng web: Phần tài liệu về cách thức tích hợp các API thanh toán nội địa (VNPAY API), đơn vị vận chuyển (GHN API), giải pháp đóng gói Docker đa container và cấu hình máy ảo đám mây AWS EC2 là các chỉ dẫn kỹ thuật có tính ứng dụng thực tế cao.

Câu hỏi thường gặp

1. Khóa luận phân loại người dùng thành những nhóm tác nhân nào và cơ chế kiểm soát truy cập ra sao? Hệ thống xác định 3 nhóm tác nhân tương tác bao gồm: GUEST (khách vãng lai chưa đăng nhập, chỉ được xem menu, chi tiết món ăn, phân loại danh mục, đăng ký, đăng nhập và yêu cầu quên mật khẩu); CLIENT (khách hàng đã đăng nhập, có đầy đủ quyền quản lý hồ sơ, chỉnh sửa giỏ hàng, đặt hàng, thanh toán COD/online, đổi điểm thưởng, nâng hạng thành viên); và ADMIN (quản trị viên cửa hàng, quản lý đơn hàng, cập nhật tiến độ giao nhận, quản lý/thêm mới sản phẩm, quản lý mã voucher, cấp điểm thưởng và khóa/mở khóa tài khoản khách hàng). Cơ chế kiểm soát truy cập và phân quyền giữa các vai trò được thực hiện thông qua JSON Web Token (JWT).

2. Công thức tính toán tổng số tiền thanh toán của một đơn hàng được thiết kế gồm những tham số nào? Trong collection Order, tổng số tiền thanh toán cuối cùng của khách hàng (subTotal) được tổng hợp từ: tổng tiền các món ăn đã chọn (totalPrice), cộng thêm 10% thuế giá trị gia tăng (VAT), cộng thêm cước phí giao hàng được tính toán tự động qua GHN API (feeShip), và trừ đi giá trị chiết khấu từ mã giảm giá nếu có áp dụng (Discount).

3. Cơ chế tích điểm và thăng hạng thành viên cho khách hàng được quy định như thế nào? Sau mỗi đơn hàng thành công, tài khoản khách hàng sẽ được cộng điểm thưởng (Reward points) và điểm xếp hạng (rankingPoint). Hệ thống phân hạng thành viên thành 5 cấp bậc tăng dần: Đồng, Bạc, Vàng, Bạch Kim và Kim Cương. Dựa trên cấp bậc thành viên đạt được, người dùng sẽ nhận được các mức giảm giá ưu đãi tương ứng khi mua hàng; đồng thời điểm tích lũy có thể chuyển đổi thành các Voucher/E-coupon khuyến mãi.

4. Điều kiện hiệu lực và cách thức quản lý một mã giảm giá (Voucher) trong cơ sở dữ liệu được quy định ra sao? Mỗi voucher sử dụng chính mã định danh _id làm mã giảm giá. Thuộc tính Expired quy định thời gian sử dụng mặc định là 30 ngày kể từ ngày khởi tạo. Để voucher có hiệu lực (isActive = true và isExpired = false), giá trị đơn hàng của khách phải lớn hơn hoặc bằng giá trị tối thiểu (minDiscount). Khi áp dụng, số tiền chiết khấu sẽ tính theo phần trăm (Discount) nhưng không vượt quá mức giảm tối đa (maxDiscount).

5. Hệ thống sử dụng những công nghệ nào cho việc đóng gói, triển khai hạ tầng và kiểm thử API? Hệ thống sử dụng Docker (Dockerfile, Image, Container, Compose) để đóng gói mã nguồn và chuẩn hóa môi trường thực thi; triển khai ứng dụng trên đám mây thông qua dịch vụ máy ảo AWS EC2 với các thiết lập bảo mật qua Security Groups, quản trị quyền IAM và cơ chế cân bằng tải/tự động co giãn (Elastic Load Balancing, Auto Scaling). Các điểm cuối API phía máy chủ được kiểm thử tính đúng đắn thông qua công cụ Postman trước khi kết nối với giao diện ReactJS.

Kết luận

Khóa luận tốt nghiệp của tác giả Bùi Công Danh đã nghiên cứu và hiện thực hóa thành công đồ án xây dựng website kinh doanh đồ ăn nhanh dựa trên kiến trúc MVC và bộ công nghệ MERN Stack. Công trình đã số hóa hoàn chỉnh quy trình kinh doanh từ bước xem thực đơn, quản lý giỏ hàng, thanh toán trực tuyến qua VNPAY, tính phí giao hàng qua GHN đến các tính năng tiếp thị như voucher khuyến mãi và tích điểm thăng hạng thành viên. Mặc dù còn một số điểm cần tiếp tục hoàn thiện về cơ chế lưu trữ cơ sở dữ liệu và tính năng đổi quà tặng vật lý, hệ thống đã giải quyết được các bất cập tồn tại trên website của các chuỗi đồ ăn nhanh lớn tại Việt Nam, mang lại tài liệu tham khảo kỹ thuật có giá trị cho sinh viên ngành công nghệ phần mềm.