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

Trong bối cảnh nền kinh tế toàn cầu, thương mại điện tử đã trở thành một phương thức kinh doanh giữ vai trò quan trọng, cho phép các doanh nghiệp tiếp cận khách hàng trên diện rộng mà không bị giới hạn bởi ranh giới địa lý, qua đó thúc đẩy doanh số và mở rộng quy mô hoạt động. Để đáp ứng nhu cầu này, việc phát triển các nền tảng bán hàng trực tuyến tích hợp hệ thống quản lý điểm bán hàng (POS - Point of Sale) trở thành một yêu cầu thực tế cấp thiết.

Theo khảo sát của nhóm tác giả, nhiều hệ thống tương tự đã được nghiên cứu và triển khai trước đó nhưng vẫn bộc lộ những khiếm khuyết kỹ thuật nhất định:

  • Đề tài "Xây dựng website bán cây cảnh" sử dụng hệ quản trị cơ sở dữ liệu quan hệ PostgreSQL nhưng chưa tích hợp các cơ chế xác thực và phân quyền người dùng.
  • Đề tài "Xây dựng website quản lý số điện thoại cho công ty viễn thông" đã ứng dụng cơ sở dữ liệu NoSQL nhưng cơ chế xác thực còn ở mức cơ bản, chưa áp dụng các giải pháp giảm thiểu việc truy vấn cơ sở dữ liệu liên tục, đồng thời không thực hiện mã hóa mật khẩu trước khi lưu trữ.

Nhằm khắc phục những hạn chế về an toàn thông tin và tối ưu hóa xử lý dữ liệu, đề tài "Xây dựng website thương mại điện tử và hệ thống bán hàng POS" được thực hiện bởi hai sinh viên Huỳnh Quốc Trọng và Lê Văn Thành, dưới sự hướng dẫn của ThS. Đặng Phước Hải Trang tại Bộ môn Kỹ thuật Máy tính – Viễn thông, Khoa Điện - Điện tử, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (hoàn thành vào tháng 6/2024).

Đề tài xác định các mục tiêu và nhiệm vụ nghiên cứu cụ thể như sau:

  1. Xây dựng một website thương mại điện tử hoàn chỉnh với các chức năng phía người dùng: đăng nhập, đăng ký tài khoản mới, xem chi tiết sản phẩm, giỏ hàng, đặt mua hàng trực tuyến, xem lịch sử đơn hàng và cập nhật thông tin cá nhân.
  2. Xây dựng hệ thống bán hàng POS phục vụ công tác quản lý cửa hàng: theo dõi danh sách đơn hàng, thống kê số lượng mặt hàng, thực hiện các thao tác thêm, cập nhật, xóa sản phẩm và phân loại hàng hóa.
  3. Đảm bảo an toàn thông tin người dùng thông qua việc áp dụng thuật toán mã hóa mật khẩu và kỹ thuật xác thực, phân quyền truy cập dựa trên mã thông báo (token).
  4. Tích hợp các dịch vụ phụ trợ gồm gửi email thông báo xác nhận và hóa đơn điện tử tự động, cùng hệ thống lưu trữ hình ảnh trên đám mây.

Đối tượng nghiên cứu của đồ án là quy trình giao dịch thương mại điện tử và quy trình quản lý điểm bán lẻ đối với các mặt hàng công nghệ (máy tính xách tay, máy tính bảng, điện thoại thông minh). Phạm vi nghiên cứu về mặt không gian và thời gian được xác định trong khuôn khổ đồ án tốt nghiệp ngành Công nghệ Kỹ thuật Máy tính tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh năm 2024. Phạm vi hiển thị của hệ thống giới hạn trên màn hình laptop và màn hình điện thoại iPhone; các giải pháp bảo mật dừng lại ở cấp độ cơ bản thông qua thuật toán băm và xác thực phân quyền người dùng.

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

Đề tài áp dụng các lý thuyết kiến trúc phần mềm, mật mã học ứng dụng và công nghệ phát triển web hiện đại:

  • Kiến trúc Model-View-Controller (MVC): Phân chia hệ thống thành ba khối chức năng độc lập:
    • Model: Đảm nhận tương tác và thao tác trực tiếp với cơ sở dữ liệu.
    • View: Hiển thị dữ liệu và tiếp nhận các thao tác giao diện người dùng.
    • Controller: Điều phối yêu cầu từ máy khách (URL request hoặc sự kiện), giao tiếp với Model để xử lý dữ liệu và phản hồi kết quả về View.
  • Kỹ thuật mật mã và thuật toán Bcrypt: Để bảo vệ mật khẩu trước các hình thức tấn công vét cạn (brute-force attacks) và bảng cầu vồng (rainbow table attacks), thuật toán Bcrypt kết hợp ba kỹ thuật:
    • Hashing: Băm một chiều biến đổi chuỗi mật khẩu thành chuỗi ký tự cố định không thể giải mã ngược.
    • Salting: Bổ sung một chuỗi dữ liệu ngẫu nhiên vào mật khẩu trước khi băm, đảm bảo hai mật khẩu giống nhau của hai tài khoản khác nhau sẽ cho ra chuỗi băm hoàn toàn khác biệt.
    • Stretching: Lặp lại quá trình băm hàng nghìn lần nhằm kéo dài thời gian xử lý của thuật toán, làm tăng độ phức tạp tính toán đối với các cuộc tấn công dò quét.
  • Kỹ thuật xác thực JSON Web Token (JWT): Token gồm ba phần phân tách bằng dấu chấm:
    • Header: Định nghĩa thuật toán băm (sử dụng HS256) và kiểu token (JWT).
    • Payload: Chứa các khai báo (claims) dưới dạng cặp khóa - giá trị (Key - Value) chỉ định quyền truy cập của tác nhân, được mã hóa dưới dạng chuỗi Base64Url.
    • Signature: Chữ ký xác thực tính toàn vẹn, được tạo ra bằng cách kết hợp Header, Payload và một khóa bí mật (secret key) của máy chủ.
  • Cơ sở dữ liệu phi quan hệ (NoSQL) và MongoDB: Sử dụng cơ sở dữ liệu hướng tài liệu với định dạng JSON, quản lý dữ liệu linh hoạt theo các tập hợp (collections), đồng thời áp dụng kỹ thuật đánh chỉ mục (indexing) để gia tăng tốc độ truy vấn và hiệu suất hệ thống.
  • Thư viện ReactJS và cơ chế React Context: Khai thác mô hình giao diện dựa trên thành phần (component-based) với cơ chế ràng buộc dữ liệu một chiều (one-way data binding). Kỹ thuật Context được triển khai thông qua cặp thành phần Provider (cung cấp giá trị toàn cục) và Consumer hoặc Hook useContext (tiếp nhận dữ liệu tại các thành phần con), giúp loại bỏ hiện tượng truyền dữ liệu qua nhiều tầng trung gian không cần thiết (prop drilling).
  • Hệ thống điểm bán hàng (POS): Vận dụng mô hình quản lý kho hàng, thống kê số lượng tồn, ghi nhận doanh thu và xử lý hóa đơn bán lẻ trực tiếp lẫn trực tuyến.

Phương pháp nghiên cứu được nhóm tác giả sử dụng gồm:

  • Phương pháp tổng hợp tài liệu lý thuyết: Khảo sát các tài liệu về lập trình web hiện đại, kiến trúc ứng dụng phân tầng, các chuẩn bảo mật mạng và tài liệu kỹ thuật của các thư viện liên quan.
  • Phương pháp thử nghiệm thực tế: Cài đặt, xây dựng mã nguồn trên môi trường thực tế; kiểm thử chức năng giao diện, kiểm tra các luồng xử lý API và kiểm định khả năng phân quyền truy cập người dùng.

Nguồn dữ liệu và công cụ phần mềm phục vụ nghiên cứu gồm: môi trường phát triển tích hợp JetBrains IntelliJ IDEA, Visual Studio Code (VS Code), phần mềm quản trị trực quan MongoDB Compass, dịch vụ gửi thư điện tử NodeMailer và dịch vụ lưu trữ đa phương tiện Cloudinary.

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế và triển khai theo mô hình phân tầng gồm bốn khối thành phần chính:

  • Khối Giao diện (Frontend): Tiếp nhận thao tác từ người dùng, gửi yêu cầu thông qua giao thức HTTP và hiển thị kết quả xử lý.
  • Khối Trung gian (Middleware): Kiểm tra, giải mã token đính kèm trong các yêu cầu gửi đến từ máy khách; từ chối xử lý nếu token không hợp lệ hoặc không có quyền truy cập, chuyển tiếp yêu cầu hợp lệ sang khối xử lý nghiệp vụ.
  • Khối Xử lý nghiệp vụ (Backend): Tiếp nhận các yêu cầu hợp lệ từ Middleware, thực thi các thuật toán logic, tương tác với khối cơ sở dữ liệu và gửi dữ liệu phản hồi về máy khách.
  • Khối Cơ sở dữ liệu (Database): Lưu trữ dữ liệu hệ thống, thực hiện truy xuất dữ liệu theo các lệnh từ Backend.

Hệ sinh thái công nghệ được sử dụng bao gồm: ExpressJS (khung làm việc nền NodeJS) cho tầng Backend; ReactJS cùng các thư viện bổ trợ như Axios (gọi API), React-hook-form và Yup (xử lý và xác thực biểu mẫu dữ liệu), React-router-dom (điều hướng định tuyến) cho tầng Frontend; MongoDB làm hệ quản trị cơ sở dữ liệu.

Cơ sở dữ liệu được tổ chức thành 6 cấu trúc bảng lưu trữ chính như sau:

STT Tên bảng / Collection Các trường dữ liệu chính Kiểu dữ liệu Ràng buộc Null Mục đích lưu trữ
1 Bảng 3.1: Sản phẩm id, title, description, productImgId, createdAt, price, quantity, categoryId string, date, number Không cho phép rỗng Lưu trữ thông tin chi tiết, đơn giá, tồn kho và danh mục của sản phẩm.
2 Bảng 3.2: Khách hàng id, name, email, password, role, createdAt string, date Không cho phép rỗng Quản lý định danh tài khoản, thông tin cá nhân, quyền truy cập và mật khẩu đã băm.
3 Bảng 3.3: Đơn hàng id, userId, orderDetailId, totalPrice, createdAt string, int, date Không cho phép rỗng Ghi nhận tổng giá trị giao dịch, mã người mua và liên kết chi tiết đơn.
4 Bảng 3.4: Loại hàng hóa id, name, createdAt string, date Không cho phép rỗng Quản lý danh mục các chủng loại sản phẩm kinh doanh của cửa hàng.
5 Bảng 3.5: Ảnh sản phẩm id, productId, thumnail, banner, photos, createdAt string, date Không cho phép rỗng Lưu đường dẫn hình ảnh đại diện (thumbnail), ảnh bìa (banner) và ảnh chi tiết.
6 Bảng 3.6: Chi tiết đơn hàng id, productId, orderId, quantity, createdAt string, int, date Không cho phép rỗng Lưu danh sách sản phẩm và số lượng tương ứng cho từng đơn hàng cụ thể.

Hệ thống phân định quyền hạn theo ba nhóm tác nhân:

  • Khách hàng vãng lai: Đăng ký tài khoản mới, tra cứu danh mục, tìm kiếm theo từ khóa và xem chi tiết các mặt hàng laptop, tablet, smartphone.
  • Khách hàng (đã đăng nhập): Được cấp token quyền người dùng thông thường, thực hiện thêm hàng vào giỏ, đặt hàng, cập nhật thông tin cá nhân, thay đổi mật khẩu và theo dõi lịch sử giao dịch.
  • Quản trị viên (Admin): Sở hữu token có quyền quản trị, được phép truy cập giao diện POS, thực hiện các thao tác CRUD (tạo, đọc, cập nhật, xóa) đối với sản phẩm và danh mục, quản lý đơn hàng và theo dõi báo cáo thống kê.

Quy trình bảo mật vận hành theo chu trình khép kín: Mật khẩu người dùng được băm qua Bcrypt trước khi ghi vào cơ sở dữ liệu. Khi đăng nhập thành công, máy chủ cấp một Access Token JWT chứa thông tin quyền hạn (role). Trong mỗi lượt truy vấn tiếp theo, máy khách đính kèm token này. Khối Middleware sẽ bóc tách chữ ký, kiểm tra tính hợp lệ và đối chiếu quyền hạn để cho phép hoặc ngăn chặn truy cập vào tài nguyên. Khi người dùng thực hiện thao tác đăng xuất, cookie chứa token trên trình duyệt sẽ bị xóa hoàn toàn để chấm dứt phiên làm việc.

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

Chương 1: Tổng quan

Chương 1 trình bày bối cảnh phát triển của thương mại điện tử, phân tích nhu cầu ứng dụng công nghệ thông tin trong vận hành điểm bán lẻ. Tác giả tiến hành đối chiếu với hai đề tài trước đó tại trường để chỉ rõ các vấn đề tồn đọng về mã hóa dữ liệu người dùng và kiểm soát phiên làm việc. Từ đó, chương nêu bật 6 mục tiêu cốt lõi của đề tài, định vị công nghệ sử dụng (ExpressJS, ReactJS, MongoDB, Cloudinary, NodeMailer), chỉ rõ giới hạn tương thích màn hình và xác lập phương pháp nghiên cứu.

Chương 2: Cơ sở lý thuyết

Chương này đi sâu vào các nền tảng lý thuyết và công cụ kỹ thuật:

  • Giới thiệu ba phần mềm hỗ trợ chính: JetBrains IntelliJ IDEA, Visual Studio Code và MongoDB Compass.
  • Phân tích nguyên lý phân tách trách nhiệm trong kiến trúc MVC và luồng điều phối thông điệp giữa ba khối Model - View - Controller.
  • Làm rõ cơ chế hoạt động của thuật toán băm Bcrypt thông qua việc kết hợp băm mật khẩu, thêm muối (salting) chống tấn công bảng cầu vồng và lặp chu kỳ băm (stretching) chống tấn công dò mật khẩu.
  • Phân tích cấu trúc ba phần của JSON Web Token (Header thuật toán HS256, Payload chứa claims và Signature bảo vệ bằng khóa bí mật) cùng quy trình xác thực ủy quyền.
  • Trình bày đặc điểm của cơ sở dữ liệu NoSQL MongoDB, cấu trúc lưu trữ JSON, kỹ thuật đánh chỉ mục.
  • Tổng quan về hệ thống điểm bán hàng (POS) trong việc quản lý doanh thu, xử lý đơn lẻ và kiểm soát tồn kho.
  • Phân tích thư viện ReactJS, cơ chế luồng dữ liệu một chiều (one-way binding), quản lý trạng thái bằng Context (Provider, Consumer, hook useContext) và các thư viện điều hướng, kiểm thực biểu mẫu (Axios, React-hook-form, Yup, React-router-dom).

Chương 3: Thiết kế và thực hiện

Chương 3 trình bày các phương án kỹ thuật chi tiết:

  • Xây dựng sơ đồ khối toàn hệ thống gồm 4 thành phần (Frontend, Middleware, Backend, Database) và lưu đồ giải thuật vận hành tổng thể.
  • Thiết kế chi tiết cơ sở dữ liệu NoSQL với 6 bảng chức năng từ Bảng 3.1 đến Bảng 3.6, thiết lập liên kết quan hệ thực thể giữa sản phẩm, đơn hàng, khách hàng và danh mục.
  • Thiết kế giao diện Frontend bao gồm các phân hệ: đăng nhập, đăng ký, trang chủ, xem sản phẩm theo danh mục (laptop, tablet, smartphone), giỏ hàng, chi tiết sản phẩm, quản lý tài khoản và giao diện POS dành cho quản trị.
  • Thiết kế giải thuật Backend cho các API: đăng ký thành viên (kiểm tra tính hợp lệ và băm mật khẩu), đăng nhập (cấp token), cập nhật thông tin cá nhân và đổi mật khẩu, đăng xuất (hủy cookie token), các thao tác CRUD sản phẩm và loại hàng, lưu trạng thái giỏ hàng tạm thời ở phía máy khách, xử lý lưu đơn hàng và xuất hóa đơn điện tử gửi về email người dùng khi hoàn tất thanh toán.

Chương 4: Kết quả thực hiện

Chương 4 kiểm định kết quả xây dựng hệ thống thông qua hình ảnh giao diện và nhật ký hoạt động:

  • Trình bày sơ đồ thực thể dữ liệu thực tế đã ánh xạ vào MongoDB.
  • Minh chứng hoạt động của các giao diện Frontend: form đăng nhập, form đăng ký, giao diện phân loại sản phẩm (Laptop, Tablet, Smartphone), cửa sổ thông tin liên hệ cửa hàng, giao diện quản lý giỏ hàng cho phép điều chỉnh số lượng và xóa sản phẩm, giao diện chi tiết thông số kỹ thuật, trang quản lý thông tin tài khoản và trang hiển thị danh sách đơn hàng đã mua.
  • Hiển thị giao diện hệ thống POS với các bảng thống kê mặt hàng, form thêm mới và cập nhật thông tin hàng hóa, biểu mẫu chỉnh sửa danh mục và bảng thống kê các giao dịch đã thực hiện.
  • Minh chứng kết quả kiểm thử Backend: thông báo đăng ký tài khoản thành công kèm email xác nhận, giao diện đăng nhập thành công, tính năng tìm kiếm sản phẩm, giao diện đặt mua thành công và hóa đơn điện tử gửi trực tiếp vào hộp thư email người mua.
  • Kiểm tra tính an toàn thông tin: kiểm định phân quyền truy cập qua token (tài khoản vai trò Admin truy cập thành công vào giao diện quản trị POS; tài khoản vai trò User bị chặn khi truy cập tài nguyên của quản trị viên); minh chứng mật khẩu tài khoản lưu trong cơ sở dữ liệu MongoDB đã được băm hoàn toàn thông qua Bcrypt.

Chương 5: Kết luận và hướng phát triển

Chương 5 tổng kết lại toàn bộ khối lượng công việc đã hoàn thành so với mục tiêu đặt ra ban đầu, chỉ rõ các mặt hạn chế còn tồn tại và vạch ra định hướng hoàn thiện hệ thống trong giai đoạn tiếp theo.

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

Đồ án đã xây dựng thành công một giải pháp phần mềm hoàn chỉnh kết hợp giữa website thương mại điện tử bán lẻ thiết bị số và hệ thống quản lý điểm bán hàng POS với các kết quả cụ thể:

  • Xây dựng hoàn thiện hệ thống giao diện người dùng: Cung cấp các giao diện tương tác phục vụ việc duyệt sản phẩm theo ba danh mục chính (laptop, tablet, smartphone), quản lý giỏ hàng động, đặt hàng và cập nhật thông tin cá nhân.
  • Triển khai hệ thống POS: Cho phép người quản trị theo dõi số lượng tồn kho, kiểm soát danh sách các mặt hàng đang kinh doanh, thêm/sửa/xóa sản phẩm và danh mục sản phẩm, cũng như giám sát toàn bộ đơn hàng phát sinh.
  • Thực hiện cơ chế bảo mật và phân quyền: Toàn bộ mật khẩu người dùng được băm qua Bcrypt trước khi lưu vào MongoDB, ngăn chặn lộ lọt thông tin dạng văn bản thuần. Hệ thống sử dụng token JWT tích hợp vào Middleware để phân tách chặt chẽ quyền truy cập giữa người dùng thông thường và quản trị viên, ghi nhận việc chặn truy cập trái phép vào tài nguyên của quản trị viên khi đăng nhập bằng quyền User.
  • Tích hợp các dịch vụ bên thứ ba: Hệ thống đã kết nối thành công với dịch vụ NodeMailer để gửi thông báo đăng ký tài khoản và phát hành hóa đơn điện tử tự động về email của khách hàng sau khi thanh toán; đồng thời sử dụng dịch vụ Cloudinary để quản lý và tối ưu hóa hệ thống ảnh sản phẩm (ảnh thumbnail, ảnh banner và ảnh mô tả chi tiết).

Đóng góp của đề tài thể hiện qua việc khắc phục được các hạn chế bảo mật của các nghiên cứu trước đó tại cùng cơ sở đào tạo, đặc biệt là việc giải quyết vấn đề lưu trữ mật khẩu không an toàn và bổ sung cơ chế kiểm soát phiên truy cập, phân quyền dựa trên JWT cho hệ thống thương mại điện tử kết hợp POS.

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

Từ các kết quả thực nghiệm, văn bản đồ án chỉ rõ hai hạn chế kỹ thuật chính:

  • Độ tương thích giao diện (Responsive Design): Giao diện hệ thống hiện chỉ tương thích tối ưu trên hai định dạng kích thước màn hình là màn hình laptop và màn hình điện thoại iPhone; chưa hỗ trợ tốt trên các kích thước màn hình khác như máy tính bảng hoặc các thiết bị di động có độ phân giải khác nhau.
  • Mức độ bảo mật: Hệ thống mới chỉ áp dụng các giải pháp bảo mật ở mức cơ bản gồm mã hóa mật khẩu một chiều và xác thực, phân quyền người dùng qua token; chưa triển khai các kỹ thuật bảo mật nâng cao mà khung làm việc (framework) hỗ trợ.

Các hướng phát triển tiếp theo được đề xuất bao gồm:

  • Mở rộng khả năng tương thích của giao diện trên nhiều thiết bị và kích thước màn hình khác nhau nhằm cải thiện trải nghiệm người dùng.
  • Nghiên cứu và áp dụng các kỹ thuật bảo mật chuyên sâu của framework nhằm gia cố độ an toàn cho toàn bộ hệ thống.
  • Bổ sung và hoàn thiện các chức năng nâng cao cho phân hệ POS nhằm tối ưu hóa hơn nữa quy trình quản lý bán hàng của doanh nghiệp.

Giá trị tham khảo

Đồ án là tài liệu kỹ thuật có giá trị tham khảo đối với:

  • Sinh viên các ngành Công nghệ Kỹ thuật Máy tính, Công nghệ Thông tin và Kỹ thuật Phần mềm đang tìm kiếm tài liệu thực tế về việc thiết kế, xây dựng ứng dụng web phân tầng sử dụng ngăn xếp công nghệ MERN (MongoDB, ExpressJS, ReactJS, NodeJS).
  • Người học và lập trình viên cần tìm hiểu phương pháp triển khai hệ thống xác thực, phân quyền người dùng thông qua JSON Web Token kết hợp lớp Middleware bảo vệ.
  • Các nhóm nghiên cứu xây dựng mô hình điểm bán hàng POS tích hợp thương mại điện tử, có nhu cầu tham khảo cấu trúc cơ sở dữ liệu NoSQL (với 6 bảng dữ liệu đã được chuẩn hóa) và giải pháp tích hợp các dịch vụ bên thứ ba như gửi email hóa đơn tự động và quản lý kho ảnh trên đám mây.

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

1. Hệ thống sử dụng thuật toán nào để bảo mật mật khẩu người dùng và cơ chế đó hoạt động ra sao?
Hệ thống sử dụng thuật toán Bcrypt. Thuật toán này kết hợp ba kỹ thuật: băm mật khẩu một chiều (hashing), thêm chuỗi dữ liệu ngẫu nhiên (salting) để vô hiệu hóa các cuộc tấn công bằng bảng cầu vồng (rainbow table attacks), và lặp lại quá trình băm hàng nghìn lần (stretching) nhằm kéo dài thời gian xử lý, ngăn chặn hình thức tấn công vét cạn (brute-force attacks). Mật khẩu sau khi băm sẽ được lưu trữ an toàn trong cơ sở dữ liệu MongoDB.

2. Cơ chế phân quyền giữa người dùng thông thường và quản trị viên được thực hiện như thế nào?
Hệ thống sử dụng kỹ thuật JSON Web Token (JWT). Khi đăng nhập thành công, máy chủ trả về cho máy khách một Access Token chứa các khai báo quyền hạn (role) trong phần Payload. Trong mọi yêu cầu gửi đến máy chủ, token này được đính kèm. Khối Middleware sẽ chặn yêu cầu để xác thực tính hợp lệ của token và đối chiếu quyền hạn: tài khoản mang quyền admin được phép truy cập vào các tài nguyên quản trị và hệ thống POS, trong khi tài khoản mang quyền user sẽ bị từ chối truy cập nếu cố tình truy xuất vào các tài nguyên này.

3. Giỏ hàng của người dùng được xử lý như thế nào trước khi tiến hành thanh toán?
Dữ liệu của giỏ hàng được hiển thị và quản lý trực tiếp trên giao diện của phía máy khách, cho phép khách hàng tăng giảm số lượng hoặc xóa sản phẩm. Dữ liệu này chưa được lưu trực tiếp vào cơ sở dữ liệu MongoDB cho đến khi người dùng điền đầy đủ thông tin giao hàng và xác nhận mua hàng thành công.

4. Dịch vụ nào được sử dụng để phát hành hóa đơn điện tử và gửi xác nhận đến người dùng?
Đề tài tích hợp dịch vụ NodeMailer. Dịch vụ này tự động gửi thông báo xác nhận khi người dùng đăng ký tài khoản thành công, đồng thời tạo và gửi hóa đơn điện tử chi tiết về địa chỉ email của khách hàng ngay sau khi đơn hàng được ghi nhận thanh toán hoàn tất trên hệ thống.

5. Cơ sở dữ liệu của đề tài được tổ chức thành những cấu trúc nào?
Cơ sở dữ liệu được xây dựng trên hệ quản trị MongoDB (NoSQL) với 6 cấu trúc bảng/tập hợp dữ liệu chính, bao gồm: Bảng 3.1 lưu thông tin sản phẩm; Bảng 3.2 lưu tài khoản khách hàng; Bảng 3.3 lưu thông tin đơn hàng; Bảng 3.4 lưu thông tin loại hàng hóa; Bảng 3.5 lưu thông tin ảnh sản phẩm (thumbnail, banner, photos); và Bảng 3.6 lưu thông tin chi tiết từng mặt hàng trong đơn hàng.

Kết luận

Đồ án tốt nghiệp "Xây dựng website thương mại điện tử và hệ thống bán hàng POS" của tác giả Huỳnh Quốc Trọng và Lê Văn Thành đã hoàn thành việc xây dựng một hệ thống bán hàng đa chức năng trên nền tảng ExpressJS, ReactJS và MongoDB. Đề tài giải quyết được yêu cầu tích hợp giữa giao diện bán lẻ trực tuyến cho các thiết bị công nghệ với phân hệ POS phục vụ công tác quản lý của cửa hàng. Đồng thời, công trình đã thiết lập được cơ chế an toàn thông tin dựa trên thuật toán mã hóa Bcrypt và kỹ thuật xác thực phân quyền qua JSON Web Token, giải quyết các khiếm khuyết bảo mật từ các công trình tham chiếu trước đó.