Bối cảnh và vấn đề nghiên cứu
Đề tài khóa luận tốt nghiệp "Xây dựng hệ thống bán hàng điện tử sử dụng MERN Stack và Flutter" do sinh viên Hồ Xuân Hiếu và Đỗ Ngọc Duy Hưng thực hiện dưới sự hướng dẫn của ThS. Nguyễn Hữu Trung tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (hoàn thành tháng 6 năm 2024, mã số SKL013812).
Xuất phát từ bối cảnh mạng Internet và ngành dịch vụ thương mại điện tử phát triển mạnh mẽ, các doanh nghiệp ngày càng chú trọng việc thiết lập kênh tiếp cận khách hàng trực tuyến thông qua hệ thống Website và ứng dụng di động (App). Thay vì chỉ đóng vai trò quảng bá đơn thuần, một hệ thống bán hàng hiện đại đòi hỏi khả năng cung cấp thông tin sản phẩm cập nhật liên tục, hỗ trợ phân phối hàng hóa tiện lợi với chi phí tối ưu, kết hợp cùng sự phát triển của hệ thống logistics. Từ thực tiễn đó, nhóm tác giả lựa chọn xây dựng một giải pháp phần mềm hoàn chỉnh nhằm kết nối trực tiếp giữa người mua, người bán và lực lượng vận chuyển trong lĩnh vực kinh doanh thiết bị điện tử.
Mục tiêu xây dựng của đề tài được tác giả xác định cụ thể qua 7 nội dung:
- Xây dựng giao diện đẹp mắt, thân thiện với người dùng.
- Cung cấp chức năng mua sắm tiện lợi cho khách hàng.
- Đảm bảo trải nghiệm người dùng mượt mà, hạn chế tối đa các lỗi vận hành gây khó chịu.
- Tích hợp chức năng thanh toán dễ dàng, nhanh chóng.
- Thiết lập hệ thống bảo mật thông tin an toàn.
- Xây dựng ứng dụng di động dành riêng cho nhân viên giao hàng (Shipper) nhằm tiếp nhận thông tin, hỗ trợ giao hàng chính xác và nhanh chóng.
- Đảm bảo hệ thống quản lý trơn tru, dễ dàng thao tác cho quản trị viên.
Về đối tượng nghiên cứu, đề tài tập trung vào hành vi và nhu cầu mua sắm thiết bị điện tử trực tuyến không bị giới hạn về không gian và thời gian của người dùng thông qua các thiết bị thông minh kết nối mạng. Đồng thời, đề tài đi sâu nghiên cứu các công nghệ và công cụ lập trình gồm: nền tảng NodeJS kết hợp ExpressJS Framework để xây dựng máy chủ (Server/Backend); thư viện ReactJS và nền tảng Flutter để phát triển giao diện Web và ứng dụng di động; hệ quản trị cơ sở dữ liệu MongoDB; cơ chế bảo mật xác thực phân quyền JSON Web Token (JWT); và dịch vụ lưu trữ hình ảnh điện toán đám mây Cloudinary.
Phạm vi nghiên cứu của đề tài giới hạn trong quy trình nghiệp vụ kinh doanh trực tuyến các thiết bị điện tử. Các phân hệ chức năng bao gồm: xem, tìm kiếm, lọc, sắp xếp sản phẩm; quản lý giỏ hàng, đặt hàng và thanh toán; đánh giá, thảo luận sản phẩm; quản lý lịch sử đơn hàng và địa chỉ giao hàng; phân hệ dành cho Shipper xử lý đơn hàng và thanh toán tiền thu hộ; cùng phân hệ quản trị (Administrator) phục vụ quản lý sản phẩm, đơn hàng, người dùng, khuyến mãi (vouchers) và báo cáo thống kê doanh thu.
Cơ sở lý thuyết và phương pháp
Khóa luận xây dựng nền tảng kỹ thuật dựa trên các công nghệ thuộc hệ sinh thái JavaScript, mô hình NoSQL và giải pháp phát triển ứng dụng di động đa nền tảng:
- JavaScript: Ngôn ngữ lập trình kịch bản bậc cao, mã nguồn mở, hỗ trợ mô hình hướng sự kiện và các kỹ thuật lập trình hiện đại.
- MERN Stack: Bộ công nghệ full-stack đồng nhất gồm MongoDB (NoSQL Database), Express (Web Framework), React (Frontend Library) và NodeJS (Runtime Environment chạy trên V8 Engine).
- NodeJS và ExpressJS: NodeJS vận hành trên cơ chế đơn luồng (single-thread), hướng sự kiện với kiến trúc vào/ra không chặn (event-driven, non-blocking I/O), tiêu tốn ít RAM, thích hợp xây dựng các dịch vụ RESTful API trao đổi dữ liệu dạng JSON. Express đóng vai trò khung ứng dụng phía máy chủ, cung cấp hệ thống routing và middleware giúp tinh gọn mã nguồn xử lý HTTP request.
- MongoDB: Hệ quản trị cơ sở dữ liệu hướng tài liệu (document database) phi quan hệ, lưu trữ dữ liệu dưới dạng JSON/BSON linh hoạt theo các bộ sưu tập (collections) thay cho cấu trúc bảng cố định của RDBMS, tối ưu tốc độ đọc/ghi dữ liệu.
- ReactJS: Thư viện xây dựng giao diện người dùng phía Web dựa trên kiến trúc phân tách thành phần (component-based), tái sử dụng mã nguồn và đảm nhận lớp View trong mô hình phát triển phần mềm.
- Flutter: Bộ công cụ giao diện mã nguồn mở do Google phát triển, sử dụng ngôn ngữ lập trình Dart, cho phép biên dịch mã nguồn trực tiếp thành mã máy (native code) chạy trên cả hai nền tảng iOS và Android với hiệu năng cao.
- JSON Web Token (JWT): Tiêu chuẩn mở phục vụ xác thực danh tính người dùng và phân quyền truy cập thông qua mã token gắn trong Header của các request gửi đến API bảo mật.
Về phương pháp nghiên cứu, đề tài kết hợp phương pháp khảo sát đối chuẩn hiện trạng thực tế và phương pháp phân tích, thiết kế hệ thống theo định hướng đối tượng:
- Khảo sát hệ thống thực tế: Tác giả đã tiến hành khảo sát và đánh giá trực tiếp trên cả nền tảng Website và ứng dụng di động của hai hệ thống thương mại điện tử đang hoạt động tại Việt Nam là Bách Hóa Xanh và Di Động Việt. Kết quả khảo sát được nhóm tác giả tổng hợp để rút ra bài toán thiết kế:
| Hệ thống khảo sát |
Chức năng nổi bật |
Hạn chế ghi nhận |
| Bách Hóa Xanh |
- Danh mục mặt hàng đa dạng. - Hiển thị số lượng đánh giá và xếp hạng cho từng sản phẩm. - Tìm kiếm sản phẩm tiện lợi. |
- Không xem được chi tiết đánh giá sản phẩm. - Xuất hiện quảng cáo gây khó chịu cho trải nghiệm. - Thời gian phản hồi hệ thống còn chậm. - Màn hình giỏ hàng bị gộp chung với màn hình đặt hàng. |
| Di Động Việt |
- Danh mục sản phẩm công nghệ phong phú. - Phân loại sản phẩm rõ ràng. - Tích hợp trang tin tức công nghệ và thông tin hệ thống cửa hàng. - Hỗ trợ quét mã QR để tra cứu thông tin. |
- Chưa hỗ trợ tính năng đặt hàng và thanh toán trực tiếp trên ứng dụng di động. - Ứng dụng không có chức năng xem và gửi đánh giá sản phẩm. - Thiếu tính năng tìm kiếm sản phẩm ngay trên ứng dụng di động. |
- Phương pháp phân tích và mô hình hóa yêu cầu: Dựa trên kết quả khảo sát, nhóm tác giả tiến hành xác định tác nhân, đặc tả chi tiết các Use Case nghiệp vụ, mô hình hóa hành vi hệ thống bằng biểu đồ tuần tự (Sequence Diagram), thiết kế cơ sở dữ liệu hướng tài liệu và tiến hành kiểm thử các kịch bản kiểm thử (Test Cases) cụ thể.
Thiết kế và triển khai
Hệ thống được thiết kế theo kiến trúc Client - Server tách biệt, trao đổi dữ liệu thông qua giao thức HTTP/HTTPS với các chuẩn RESTful API. Hệ thống bao gồm 3 thành phần chính:
[Web Client (ReactJS) / Mobile Client (Flutter)]
(RESTful APIs / JWT)
[Backend Server (NodeJS & ExpressJS)]
[Database (MongoDB)] [Cloud Media (Cloudinary)]
- Phía Backend: Xây dựng bằng NodeJS và ExpressJS, tổ chức theo cấu trúc module rõ ràng để phân tách các tầng điều khiển (Controllers), tuyến định tuyến (Routes), mô hình dữ liệu (Models) và middleware. Backend chịu trách nhiệm xử lý logic nghiệp vụ, quản lý phiên làm việc bằng JWT, mã hóa dữ liệu mật khẩu trước khi lưu trữ và cung cấp endpoints cho toàn bộ máy khách. Quá trình lưu trữ hình ảnh sản phẩm được tích hợp API với dịch vụ Cloudinary.
- Phía Cơ sở dữ liệu: MongoDB tổ chức dữ liệu theo 7 collections chính nhằm đáp ứng các luồng xử lý:
user: Lưu trữ thông tin định danh khách hàng, quản trị viên, thông tin tài khoản và mật khẩu đã mã hóa.
products: Quản lý thông tin chi tiết sản phẩm, giá bán, danh mục, số lượng tồn kho và liên kết hình ảnh.
vouchers: Quản lý danh sách mã giảm giá, khuyến mãi và điều kiện áp dụng.
orders: Lưu trữ chi tiết đơn đặt hàng, trạng thái xử lý, phương thức thanh toán và tổng tiền.
address: Lưu trữ danh sách địa chỉ nhận hàng của người dùng.
shippings: Quản lý đơn vị vận chuyển và phương thức giao nhận.
shippers: Lưu trữ thông tin tài khoản, trạng thái phân công và số tiền thu hộ của nhân viên giao hàng.
- Phía Frontend và Mobile App:
- Giao diện Website xây dựng bằng ReactJS phục vụ hai phân hệ: Phân hệ người dùng mua sắm và Phân hệ quản trị (Dashboard, quản lý danh mục, đơn hàng, voucher, phân quyền người dùng).
- Ứng dụng di động xây dựng bằng Flutter được phân tách thành hai project độc lập:
Store_app phục vụ khách hàng mua sắm và Shipping_app phục vụ nhân viên giao hàng theo dõi lộ trình đơn hàng, xác nhận giao nhận và quản lý công nợ COD.
Kế hoạch cài đặt và triển khai hệ thống được nhóm thực hiện theo tiến trình từ ngày 04/03/2024 đến 02/06/2024, trải qua các giai đoạn từ khảo sát, thiết kế lược đồ Use Case, xây dựng cấu trúc thư mục, khởi tạo collections, lập trình APIs, ghép nối giao diện, phát triển phân hệ Shipper, kiểm thử và deploy hệ thống Backend lẫn Frontend.
Nội dung chính theo từng chương
Chương 1: Cơ sở lý thuyết
Chương 1 trình bày tổng quan lý thuyết về các công nghệ được lựa chọn trong đề tài. Nhóm tác giả phân tích lịch sử hình thành, khái niệm cốt lõi cùng ưu và nhược điểm kỹ thuật của:
- JavaScript: Ưu điểm dễ triển khai các dự án quy mô lớn, cộng đồng hỗ trợ rộng rãi, hệ sinh thái framework phong phú, bản quyền mã nguồn mở; nhược điểm cần trình thông dịch/biên dịch để thực thi ngoài môi trường trình duyệt.
- MERN Stack: Ưu điểm mang lại tính đồng nhất cao do toàn bộ ngăn xếp đều sử dụng chung một ngôn ngữ JavaScript, giúp tối ưu thời gian phát triển và tốc độ xử lý; nhược điểm đòi hỏi người học phải nắm vững nhiều công nghệ phối hợp và chưa phải giải pháp tối ưu cho mọi loại hình ứng dụng phức tạp.
- React: Ưu điểm cơ chế component-based giúp tái sử dụng mã nguồn, khả năng render nhanh; nhược điểm chỉ đảm nhận tầng View trong mô hình kiến trúc phần mềm và có đường cong học tập tương đối dốc đối với người mới tiếp cận.
- NodeJS và Express: Phân tích cơ chế xử lý kết nối đồng thời với mô hình đơn luồng giúp tối ưu RAM, hỗ trợ luồng dữ liệu (streaming) và kiến trúc thời gian thực; chỉ ra nhược điểm không thích hợp cho các tác vụ tính toán chuyên sâu tiêu tốn nhiều năng lượng xử lý của CPU.
- MongoDB: Đánh giá tính linh hoạt trong việc lưu trữ tài liệu phi cấu trúc, khả năng mở rộng quy mô dễ dàng và tốc độ truy vấn cao; đồng thời chỉ rõ nhược điểm tiêu hao dung lượng bộ nhớ do việc lặp lại các trường khóa (key) giữa các bản ghi và cơ chế hoãn ghi dữ liệu (độ trễ khoảng 60 giây trước khi đồng bộ hoàn toàn) tiềm ẩn rủi ro nếu hệ thống mất điện đột ngột.
- Flutter: Phân tích khả năng xây dựng ứng dụng di động đa nền tảng (iOS và Android) từ một mã nguồn duy nhất, giao diện mượt mà và khả năng biên dịch sang mã gốc; nhược điểm phụ thuộc vào ngôn ngữ Dart vốn chưa phổ biến rộng rãi và kích thước ứng dụng ban đầu còn lớn.
Chương 2: Phân tích, khảo sát hiện trạng và mô hình hóa yêu cầu
Chương này tập trung làm rõ căn cứ thực tiễn và mô hình hóa các yêu cầu của hệ thống:
- Phân tích bối cảnh cách mạng công nghiệp 4.0 và xu hướng thương mại trực tuyến thay thế các phương thức kinh doanh truyền thống.
- Khảo sát thực tế hệ thống Website và App của chuỗi Bách Hóa Xanh và Di Động Việt để xác định những điểm bất cập cần khắc phục.
- Xác định 3 nhóm tác nhân chính tham gia hệ thống:
- Khách hàng (User/Buyer): Thực hiện đăng ký, đăng nhập, khôi phục mật khẩu, chỉnh sửa thông tin cá nhân, tìm kiếm/lọc sản phẩm, quản lý giỏ hàng, đặt hàng, lựa chọn phương thức thanh toán, quản lý đơn hàng và đánh giá sản phẩm.
- Nhân viên giao hàng (Shipper): Đăng nhập hệ thống, cập nhật hồ sơ, theo dõi danh sách đơn hàng cần giao, sử dụng tính năng chỉ đường giao nhận, xác nhận trạng thái đơn hàng, theo dõi doanh thu và nộp tiền thu hộ COD.
- Quản trị viên (Admin): Quản lý toàn bộ danh mục sản phẩm, quản lý thông tin tài khoản người dùng, duyệt và cập nhật trạng thái đơn đặt hàng, quản lý mã voucher, quản lý đối tác vận chuyển và theo dõi biểu đồ thống kê doanh thu.
- Xây dựng danh sách yêu cầu phi chức năng: Đảm bảo giao diện thân thiện, tốc độ phản hồi nhanh, tính bảo mật cao, mật khẩu lưu trữ trong cơ sở dữ liệu phải được mã hóa hoàn toàn.
- Thiết lập lược đồ Use Case tổng quát và chi tiết hóa luồng xử lý thông qua hệ thống biểu đồ tuần tự (Sequence Diagram) cho từng hành động nghiệp vụ.
Chương 3: Thiết kế hệ thống
Chương 3 trình bày chi tiết bản vẽ kỹ thuật của hệ thống trên hai khía cạnh: cơ sở dữ liệu và giao diện người dùng:
- Thiết kế cơ sở dữ liệu: Lược đồ dữ liệu được xây dựng dưới dạng các tài liệu BSON trong MongoDB gồm 7 collections (
user, products, vouchers, orders, address, shippings, shippers). Tác giả mô tả chi tiết kiểu dữ liệu, các trường thuộc tính và mối liên kết logic giữa các collection.
- Thiết kế giao diện người dùng: Trình bày hệ thống sơ đồ màn hình và bản mẫu thiết kế (mockup/giao diện thực tế) trên cả Website và App di động, bao gồm:
- Phân hệ khách hàng: Màn hình Đăng nhập, Đăng ký, Quên mật khẩu, Trang chủ (Home) trên Web và App, Thông tin tài khoản, Chi tiết sản phẩm, Giỏ hàng (Your Cart), Đặt hàng và thanh toán (Checkout trên Web và App), Chi tiết đơn hàng (Detail Order), Tìm kiếm/Lọc sản phẩm và Đánh giá sản phẩm.
- Phân hệ nhân viên giao hàng: Giao diện Trang chủ Shipper và Giao diện Quản lý danh sách đơn hàng cần đi giao.
- Phân hệ quản trị viên: Giao diện Dashboard tổng quan, Thêm mới sản phẩm, Quản lý sản phẩm, Thêm hình ảnh sản phẩm, Quản lý đơn hàng, Quản lý tài khoản người dùng, Quản lý đánh giá, Quản lý và Thêm mới voucher, Quản lý và Thêm mới đơn vị vận chuyển, Thêm mới Shipper.
Chương 4: Cài đặt và kiểm thử
Chương 4 mô tả quá trình hiện thực hóa thiết kế thành phần mềm thực tế và đánh giá chất lượng sản phẩm:
- Cài đặt phần mềm: Trình bày cấu trúc thư mục dự án của Backend, Frontend và hai ứng dụng di động Flutter (
Store_app và Shipping_app); cấu hình các biến môi trường trong file .env; cài đặt các gói thư viện cần thiết và khởi chạy thành công các phân hệ.
- Kiểm thử phần mềm: Đặt ra mục tiêu, tiêu chí đánh giá và xây dựng kịch bản kiểm thử chức năng hoàn chỉnh. Tác giả thực hiện và ghi nhận kết quả cho 41 trường hợp kiểm thử (Test Cases), bao gồm:
- Kiểm thử xác thực: Đăng nhập/đăng ký với các điều kiện biên (bỏ trống trường email, email không tồn tại, sai mật khẩu, mật khẩu xác nhận không khớp, nhập đúng thông tin, xác thực mã OTP gửi về hộp thư điện tử).
- Kiểm thử tài khoản: Thay đổi email hợp lệ/không hợp lệ, cập nhật họ tên, đổi mật khẩu cũ/mới, khôi phục mật khẩu bằng OTP.
- Kiểm thử luồng mua sắm: Thêm/xóa sản phẩm trong giỏ hàng, thêm/sửa/xóa địa chỉ nhận hàng, áp dụng mã voucher giảm giá, đặt hàng thanh toán bằng tiền mặt (COD), đặt hàng thanh toán bằng thẻ (CARD), hủy đơn hàng COD khi chưa xác nhận, xem chi tiết đơn hàng, gửi đánh giá và nhận xét sản phẩm sau khi mua.
- Kiểm thử nghiệp vụ giao hàng: Cập nhật giao hàng thành công của Shipper, chức năng thanh toán nợ thu hộ của Shipper.
- Kiểm thử quản trị: Cập nhật trạng thái người dùng, thêm/sửa/xóa sản phẩm, tải ảnh sản phẩm lên Cloudinary, thay đổi trạng thái đơn hàng, chỉnh sửa danh mục, thêm/xóa voucher khuyến mãi, quản lý đơn vị vận chuyển và gán Shipper cho đơn vị vận chuyển.
Kết quả và đóng góp
Về kết quả thực hiện, đề tài đã hoàn thành các mục tiêu đề ra theo kế hoạch:
- Xây dựng hoàn chỉnh hệ thống bán hàng điện tử đa nền tảng gồm ứng dụng Web (ReactJS) và hai ứng dụng di động độc lập (Flutter) kết nối đồng bộ tới hệ thống máy chủ dịch vụ (NodeJS, ExpressJS) và cơ sở dữ liệu (MongoDB).
- Hiện thực hóa đầy đủ 3 nhóm chức năng nghiệp vụ tương ứng với 3 tác nhân: Khách hàng (duyệt sản phẩm, tìm kiếm, đặt hàng, đánh giá), Nhân viên giao hàng (nhận đơn, điều hướng, xác nhận đơn hàng, đối soát công nợ), và Quản trị viên (quản lý toàn diện dữ liệu danh mục, đơn hàng, tài khoản, voucher và vận chuyển).
- Tích hợp thành công hai phương thức thanh toán phổ biến: Thanh toán khi nhận hàng (COD) và Thanh toán trực tuyến qua thẻ (CARD).
- Thiết lập quy trình bảo mật với cơ chế xác thực JWT, mã hóa thông tin mật khẩu trong cơ sở dữ liệu và xác nhận hành động nhạy cảm qua mã OTP gửi về Email.
- Thực hiện nghiệm thu chức năng qua 41 ca kiểm thử thực tế, chứng minh tính ổn định và tính đúng đắn của các quy trình nghiệp vụ đã thiết kế.
Về đóng góp so với các hệ thống khảo sát thực tế:
- Khắc phục các hạn chế đã chỉ ra ở hệ thống Bách Hóa Xanh: Cho phép người dùng xem chi tiết các đánh giá, bình luận của khách hàng khác trước khi quyết định mua; không chèn nội dung quảng cáo làm ảnh hưởng đến trải nghiệm mua sắm; tách biệt rõ ràng quy trình giữa giỏ hàng và màn hình thanh toán.
- Khắc phục hạn chế của hệ thống Di Động Việt: Bổ sung đầy đủ chức năng tìm kiếm sản phẩm, đặt hàng, thanh toán trực tiếp và đánh giá sản phẩm ngay trên ứng dụng di động.
- Điểm mới trong mô hình triển khai của đề tài là việc xây dựng một ứng dụng di động riêng biệt dành cho Shipper (
Shipping_app), giúp khép kín chu trình bán lẻ từ khâu đặt hàng, xử lý kho, điều phối giao vận đến đối soát tiền thu hộ COD giữa người giao hàng và ban quản trị.
Hạn chế và hướng nghiên cứu tiếp
Về mặt hạn chế, tác giả tự đánh giá các điểm còn tồn tại do giới hạn về mặt thời gian và kinh nghiệm triển khai:
- Thời gian nghiên cứu và thực hiện đề tài tương đối ngắn (khoảng 3 tháng, từ tháng 3 đến tháng 6 năm 2024).
- Kiến thức và kinh nghiệm thực tiễn của nhóm sinh viên trong việc quản lý, xây dựng và tối ưu một dự án phần mềm quy mô lớn còn có những giới hạn nhất định.
- Về mặt kỹ thuật, hệ thống vẫn chịu ảnh hưởng bởi các nhược điểm nội tại của công nghệ lựa chọn, như hiện tượng MongoDB có độ trễ trong việc cập nhật thay đổi hoàn toàn xuống đĩa cứng (nguy cơ ảnh hưởng dữ liệu nếu phát sinh sự cố đột ngột), kích thước lưu trữ cơ sở dữ liệu lớn do lặp lại các trường khóa (keys) trong collections, và ngôn ngữ Dart trên Flutter chưa có độ bao phủ thư viện rộng như các nền tảng gốc.
Về hướng phát triển trong tương lai, văn bản định hướng:
- Tiếp tục tối ưu hóa hiệu năng của toàn bộ hệ thống Backend và Frontend.
- Nâng cấp và hoàn thiện sâu hơn cơ chế thanh toán trực tuyến nhằm tích hợp thêm nhiều cổng thanh toán điện tử phổ biến.
- Cải tiến giao diện người dùng, bổ sung các tính năng nâng cao nhằm gia tăng trải nghiệm và mở rộng quy mô vận hành của hệ thống.
Giá trị tham khảo
Báo cáo khóa luận tốt nghiệp này có giá trị tham khảo thiết thực cho nhiều đối tượng:
- Sinh viên ngành Công nghệ Thông tin và Kỹ thuật Phần mềm: Cung cấp một tài liệu tham khảo hoàn chỉnh về quy trình xây dựng đồ án tốt nghiệp chuẩn mực, từ khâu khảo sát hiện trạng, lập kế hoạch tiến độ, thiết kế lược đồ cơ sở dữ liệu NoSQL, mô hình hóa Use Case đến việc xây dựng bảng đặc tả kiểm thử (Test Cases) chi tiết với 41 kịch bản cụ thể.
- Lập trình viên phát triển ứng dụng Full-stack: Là tài liệu tham khảo hữu ích về cách kết hợp kiến trúc MERN Stack (MongoDB, Express, React, NodeJS) với nền tảng di động Flutter, cách tổ chức thư mục mã nguồn và phương pháp phân tách quyền hạn người dùng bằng JWT.
- Người nghiên cứu các hệ thống thương mại điện tử: Đáng chú ý ở phần phân tích đối chuẩn thực tế hai hệ thống bán lẻ Bách Hóa Xanh và Di Động Việt, cùng cách thức xây dựng chu trình nghiệp vụ khép kín có tích hợp phân hệ ứng dụng giao vận dành cho Shipper.
Câu hỏi thường gặp
1. Khóa luận này giải quyết bài toán nghiệp vụ cho những đối tượng (tác nhân) nào trong hệ thống?
Hệ thống được thiết kế phục vụ 3 nhóm tác nhân riêng biệt với các phân quyền rõ ràng:
- Khách hàng (User/Buyer): Mua sắm trên Website hoặc ứng dụng di động Store_app (tìm kiếm, giỏ hàng, đặt hàng, áp voucher, đánh giá).
- Nhân viên giao hàng (Shipper): Sử dụng ứng dụng di động Shipping_app (nhận đơn hàng, xem chỉ đường, cập nhật trạng thái giao hàng, đối soát tiền thu hộ COD).
- Quản trị viên (Admin): Sử dụng Website quản trị (quản lý sản phẩm, danh mục, người dùng, đơn hàng, voucher, đơn vị vận chuyển và xem thống kê doanh thu).
2. Cơ sở dữ liệu của hệ thống được tổ chức bằng công nghệ nào và bao gồm những bảng/bộ sưu tập (collections) nào?
Hệ thống sử dụng cơ sở dữ liệu NoSQL MongoDB, dữ liệu được lưu trữ dạng tài liệu JSON/BSON trong 7 collections chính: user (người dùng), products (sản phẩm), vouchers (mã khuyến mãi), orders (đơn hàng), address (địa chỉ giao nhận), shippings (đơn vị vận chuyển), và shippers (thông tin nhân viên giao hàng).
3. Ứng dụng di động của đồ án được lập trình bằng nền tảng nào và được phân chia ra sao?
Ứng dụng di động được xây dựng bằng framework Flutter (ngôn ngữ Dart) của Google, hỗ trợ chạy trên cả Android và iOS. Nhóm tác giả chia thành 2 ứng dụng độc lập: Store_app dành cho khách hàng mua sắm và Shipping_app dành cho nhân viên giao hàng tiếp nhận và xử lý đơn.
4. Hệ thống áp dụng những giải pháp kỹ thuật nào để bảo mật và xác thực thông tin người dùng?
Hệ thống sử dụng tiêu chuẩn JSON Web Token (JWT) đặt trong header của HTTP request để xác thực và phân quyền cho các API; mã hóa mật khẩu người dùng trước khi lưu trữ vào MongoDB; và áp dụng cơ chế gửi mã OTP qua hộp thư điện tử (Email) để xác nhận khi đăng ký tài khoản hoặc khôi phục mật khẩu.
5. Nhóm tác giả đã tiến hành kiểm thử phần mềm như thế nào để đánh giá tính đúng đắn của hệ thống?
Tác giả đã lập kế hoạch kiểm thử chức năng chi tiết và thực thi tổng cộng 41 trường hợp kiểm thử (Test Cases), bao quát từ các thao tác đăng nhập/đăng ký với dữ liệu biên, đổi mật khẩu, xác thực OTP, thêm giỏ hàng, hủy đơn hàng, thanh toán COD/CARD, đánh giá sản phẩm đến các nghiệp vụ quản trị và xác nhận giao hàng của Shipper.
Kết luận
Khóa luận tốt nghiệp của sinh viên Hồ Xuân Hiếu và Đỗ Ngọc Duy Hưng đã hoàn thành việc thiết kế và xây dựng một hệ thống bán hàng điện tử toàn diện cho ngành hàng thiết bị điện tử, kết hợp giữa nền tảng MERN Stack và framework Flutter. Đề tài giải quyết tốt bài toán liên kết nghiệp vụ giữa khách hàng, quản trị viên và nhân viên giao hàng, đồng thời khắc phục được một số nhược điểm thực tế ghi nhận từ các hệ thống thương mại điện tử đã khảo sát. Kết quả nghiên cứu được kiểm chứng thông qua 41 ca kiểm thử chức năng, cung cấp một tài liệu tham khảo có giá trị học thuật và ứng dụng thực tiễn cao cho sinh viên ngành Công nghệ phần mềm.