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

Trong quá trình thực hiện các dự án xây dựng website bán hàng trước đây, nhóm tác giả nhận thấy một hạn chế kỹ thuật phổ biến: cơ cấu danh mục và phân loại sản phẩm thường bị lập trình cố định (hard-coded), dẫn đến sự khó khăn và thiếu linh hoạt khi cần mở rộng hoặc cập nhật các chủng loại hàng hóa mới. Xuất phát từ hạn chế thực tiễn đó, đồ án tốt nghiệp "Xây dựng website bán hàng trực tuyến" được thực hiện nhằm giải quyết triệt để bài toán quản lý danh mục sản phẩm động, đồng thời đáp ứng nhu cầu giao dịch trực tuyến ngày càng gia tăng đối với các mặt hàng thiết bị công nghệ.

Căn cứ theo văn bản đồ án, mục tiêu và nhiệm vụ nghiên cứu được xác định bao gồm bốn nội dung:

  1. Xây dựng một website bán hàng trực tuyến hoàn chỉnh phục vụ hoạt động mua bán thiết bị công nghệ.
  2. Vận dụng các kiến thức chuyên ngành Công nghệ thông tin đã tích lũy trong chương trình đào tạo vào một dự án phần mềm thực tế.
  3. Tìm hiểu và nắm bắt quy trình làm việc chuẩn hóa để tạo ra một sản phẩm công nghệ hoàn chỉnh.
  4. Nghiên cứu, làm chủ công nghệ phát triển web MERN stack và ứng dụng thử nghiệm mô hình học sâu vào hệ thống.

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

  • Đối tượng phục vụ: Nhóm khách hàng có nhu cầu tìm kiếm, tham khảo và mua sắm các thiết bị, sản phẩm công nghệ trên môi trường mạng; cùng với đội ngũ quản trị viên và nhân viên bán hàng cần công cụ quản lý vận hành cửa hàng trực tuyến.
  • Phạm vi thời gian: Đề tài được giao ngày 14/02/2022 và hoàn thành nộp báo cáo vào ngày 20/06/2022.
  • Phạm vi không gian thực hiện: Đồ án tốt nghiệp đại học ngành Công nghệ thông tin, thực hiện tại Khoa Đào tạo Chất lượng cao, 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 TS. Trần Nhật Quang.

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

Khung lý thuyết và công nghệ nền tảng

Tác giả hệ thống hóa các kiến thức nền tảng trong lập trình web và hệ quản trị cơ sở dữ liệu phi quan hệ:

  • Ngôn ngữ đánh dấu và kịch bản: HTML/HTML5 (chuẩn của tổ chức W3C và RFC, hỗ trợ DOM, API đa phương tiện), CSS (Cascading Style Sheets, cấu trúc phân tầng và tính kế thừa kiểu hiển thị) và JavaScript (chuẩn ECMAScript, kịch bản hướng đối tượng dựa trên nguyên mẫu prototype phục vụ tương tác phía máy khách).
  • CSS Framework: Bootstrap với hệ thống lưới (Grid System) 12 cột, chiều rộng mặc định 940px, hỗ trợ thiết kế giao diện đáp ứng (Responsive Web Design) tương thích đa thiết bị.
  • Cơ sở dữ liệu phi quan hệ (NoSQL): Tìm hiểu lịch sử hình thành thuật ngữ NoSQL (bắt đầu từ năm 1998 và được Eric Evans của Rackspace định nghĩa lại năm 2009 với hai đặc tính cốt lõi: phân tán và phi quan hệ). Đồ án phân loại 4 nhóm CSDL NoSQL chính: Key-Value, Document, Column-Family và Graph Database.
  • Hệ quản trị cơ sở dữ liệu MongoDB: CSDL hướng tài liệu (Document Store) lưu trữ dữ liệu dưới định dạng JSON/BSON. Các tập hợp (collections) thay thế cho bảng (table) và tài liệu (documents) thay thế cho hàng (row). Văn bản phân tích rõ các đặc tính kỹ thuật của MongoDB: trường _id được tự động đánh chỉ mục; dữ liệu được đệm (cached) trên RAM và thực hiện ghi xuống đĩa cứng sau chu kỳ 60 giây; dung lượng giới hạn của mỗi bản ghi (document) là dưới 16MB; không hỗ trợ các ràng buộc ACID chặt chẽ như CSDL quan hệ truyền thống và không hỗ trợ các phép kết nối (JOIN) phức tạp.
+--------------------+------------------------------------------+------------------------------------------+
| Tiêu chí           | Cơ sở dữ liệu quan hệ (RDBMS)            | Cơ sở dữ liệu phi quan hệ (NoSQL)        |
+--------------------+------------------------------------------+------------------------------------------+
| Cấu trúc dữ liệu   | Có cấu trúc, tổ chức chặt chẽ theo bảng   | Phi cấu trúc, linh hoạt, đa dạng dạng thức|
| Ngôn ngữ truy vấn  | Sử dụng ngôn ngữ SQL chuẩn               | Không dùng SQL chuẩn, truy vấn hướng đối tượng|
| Khai báo Schema    | Bắt buộc định nghĩa lược đồ tĩnh         | Không yêu cầu định nghĩa schema cứng      |
| Khả năng mở rộng   | Mở rộng theo chiều dọc (Scale-up)        | Mở rộng theo chiều ngang (Scale-out)     |
| Ưu tiên thiết kế   | Ràng buộc toàn vẹn dữ liệu (ACID)        | Hiệu năng cao, tính sẵn sàng, mở rộng    |
+--------------------+------------------------------------------+------------------------------------------+

Phương pháp nghiên cứu và khảo sát thực tế

Đồ án sử dụng phương pháp khảo sát đối chuẩn (benchmarking) thông qua việc phân tích chức năng của 4 hệ thống thương mại điện tử lớn tại thị trường Việt Nam:

  1. Tiki: Thành lập tháng 03/2010, hệ sinh thái gồm Tiki Trading, Tikinow Smart Logistics; khảo sát luồng tìm kiếm gợi ý, quảng cáo, danh mục, dịch vụ TikiNOW, và trang chi tiết sản phẩm.
  2. Điện máy XANH: Chuỗi bán lẻ thành lập tháng 12/2010 (đăng ký TMĐT với Bộ Công Thương tháng 11/2011, hệ thống hơn 2021 siêu thị tại 63 tỉnh thành); khảo sát giải pháp tra cứu đơn hàng bằng số điện thoại không cần tạo tài khoản, bộ lọc chi tiết cho sản phẩm điện tử, hệ thống hỏi đáp và khung chat tư vấn.
  3. Shopee: Thành lập năm 2015 tại Singapore bởi Tập đoàn SEA (ra mắt tại Việt Nam ngày 08/08/2016); nghiên cứu cơ chế trò chuyện trực tiếp giữa người mua và người bán, cơ chế phân phát mã giảm giá và trang hồ sơ cửa hàng.
  4. FPT Shop: Thành lập năm 2012 trực thuộc FPT Retail (đạt chứng chỉ ISO 9001:2000); khảo sát tính năng đối chiếu và so sánh chi tiết thông số kỹ thuật giữa các dòng máy, chuyên mục tin tức công nghệ và hiển thị hệ thống cửa hàng.

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình phân tách rõ ràng giữa máy khách (Front-end), máy chủ ứng dụng (Back-end) và máy chủ dịch vụ thông minh (Server phụ).

Ngăn xếp công nghệ triển khai

  • Front-end: Thư viện React kết hợp framework Bootstrap để xây dựng giao diện người dùng đơn trang, quản lý trạng thái động và tương thích đa kích thước màn hình.
  • Back-end: Nền tảng Node.js kết hợp framework Express để xây dựng hệ thống máy chủ dịch vụ web và cung cấp hệ thống giao diện lập trình ứng dụng RESTful API kết nối với cơ sở dữ liệu MongoDB.
  • Server phụ: Xây dựng bằng ngôn ngữ Python sử dụng framework FastAPI kết hợp mô hình học sâu Word2vec, phục vụ chức năng gợi ý sản phẩm liên quan và tìm kiếm sản phẩm theo sở thích cá nhân của người dùng.
  • Môi trường phát triển: Sử dụng môi trường tích hợp Visual Studio Code (IDE) để lập trình và cấu trúc các gói mã nguồn.

Phân tích ca sử dụng và phân quyền hệ thống

Hệ thống định nghĩa 4 nhóm tác nhân (Actors) tham gia vào chu trình vận hành với 34 yêu cầu ca sử dụng (Use case) chính:

STT Tên ca sử dụng (Use case) Khách (Guest) Khách hàng (Customer) Nhân viên (Sale) Quản trị (Admin)
1 Đăng ký tài khoản x
2 Đăng nhập hệ thống x x x
3 Đăng xuất hệ thống x x x
4 Quản lý thông tin cá nhân x x
5 Xem danh sách sản phẩm x x x
6 Xem danh sách thể loại x x x
7 Xem sản phẩm theo thể loại x x x
8 Tìm kiếm sản phẩm x x x
9 Xem thông tin chi tiết sản phẩm x x x
10 Bỏ sản phẩm vào giỏ hàng x x
11 Thêm, bớt số lượng trong giỏ hàng x x
12 Trao đổi trực tuyến với nhân viên tư vấn x
13 Tạo hóa đơn từ giỏ hàng (Thanh toán) x
14 Xem danh sách hóa đơn x
15 Xem chi tiết hóa đơn x
16 Hủy hóa đơn đặt hàng x
17 Đóng góp ý kiến về hệ thống x
18 Xem danh sách cuộc trò chuyện x
19 Nhắn tin trả lời khách hàng x
20 Tìm kiếm tài khoản người dùng x
21 Xem danh sách tài khoản x
22 Gửi thông báo tới tài khoản x
23 Liên kết khách hàng với mã giảm giá x
24 Đóng băng tài khoản khách hàng x
25 Thay đổi thông tin, trạng thái sản phẩm x
26 Thêm, bớt ảnh cho sản phẩm x
27 Thêm số lượng sản phẩm và tạo hóa đơn nhập x
28 Liên kết sản phẩm với mã giảm giá x
29 Thêm thể loại sản phẩm mới x
30 Sửa đổi thông tin thể loại x
31 Liên kết thể loại với mã giảm giá x
32 Thêm mới mã giảm giá x
33 Thay đổi thông tin mã giảm giá x
34 Phân phát ngẫu nhiên mã giảm giá x

Đặc tả kỹ thuật của luồng giỏ hàng: Đối với tác nhân "Khách" (Guest), thông tin giỏ hàng được lưu trữ tạm thời tại Cookie hoặc LocalStorage của trình duyệt; đối với tác nhân "Khách hàng" (Customer) đã đăng nhập, giỏ hàng được đồng bộ và lưu trữ trực tiếp trên cơ sở dữ liệu máy chủ.

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

CHƯƠNG 1: TỔNG QUAN

Chương mở đầu trình bày lý do chọn đề tài xuất phát từ việc khắc phục nhược điểm cấu trúc danh mục sản phẩm bị gán cứng ở các dự án cũ. Xác định mục tiêu xây dựng một trang web thương mại điện tử chuyên doanh thiết bị công nghệ, phục vụ người dùng có nhu cầu mua sắm trực tuyến và chủ cửa hàng cần quản lý dòng tiền, số liệu thu chi. Định hình ngăn xếp công nghệ: MERN (React, Node.js, Express, MongoDB) kết hợp hệ thống phụ trợ FastAPI, Python và mô hình Word2vec.

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT

Tập trung làm rõ các công nghệ và lý thuyết lập trình web: HTML5, CSS, ngôn ngữ JavaScript theo chuẩn ECMAScript; khuôn khổ giao diện Bootstrap với hệ thống lưới 12 cột hỗ trợ hiển thị đáp ứng. Trình bày tổng quan về hệ thống cơ sở dữ liệu NoSQL, nêu lịch sử phát triển, phân tích ưu điểm (tính co giãn cao, mô hình dữ liệu đa dạng, không ràng buộc cấu trúc cố định) và so sánh trực tiếp với hệ quản trị cơ sở dữ liệu quan hệ RDBMS. Phân tích chi tiết hệ quản trị MongoDB từ khái niệm Document/Collection, cơ chế tự động đánh chỉ mục qua _id, việc quản lý bộ nhớ đệm RAM đến các nhược điểm về kích thước bản ghi (<16MB) và tính nhất quán dữ liệu.

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

Trình bày kết quả khảo sát thực tế 4 hệ sinh thái thương mại điện tử: Tiki, Điện máy XANH, Shopee, FPT Shop để rút ra các chức năng then chốt (bộ lọc chi tiết, gợi ý sản phẩm, giỏ hàng, kênh trao đổi trực tiếp, phân phối mã giảm giá). Thiết lập bảng yêu cầu chức năng cho 4 nhóm tác nhân (Khách, Khách hàng, Nhân viên tư vấn, Quản trị viên) và các yêu cầu phi chức năng về tính thân thiện, hiệu năng tìm kiếm, độ tương thích nền tảng và tính mở rộng. Xây dựng bảng ma trận 34 ca sử dụng, sơ đồ ca sử dụng tổng quát (Use case diagram chung) và sơ đồ ca sử dụng dành riêng cho Quản trị viên (Use case admin tổng quát).

CHƯƠNG 4: THIẾT KẾ ỨNG DỤNG

Xây dựng mô hình dữ liệu chi tiết cho hệ thống. Thiết kế 15 biểu đồ tuần tự (Sequence Diagram) mô tả các luồng nghiệp vụ chính của Admin (xem/thêm tài khoản, sản phẩm, loại hàng, mã khuyến mãi, xem doanh thu, xem danh sách đơn hàng) và Người dùng (đăng nhập, đăng ký, thay đổi thông tin, tìm kiếm sản phẩm, xem chi tiết, thao tác giỏ hàng, thanh toán đơn hàng). Trình bày bản vẽ thiết kế giao diện màn hình cho từng phân hệ: giao diện trang chủ, trang chi tiết sản phẩm, giỏ hàng, thông tin cá nhân, trang trò chuyện trực tiếp giữa khách hàng và nhân viên bán hàng, cùng các màn hình quản trị của Admin (quản lý sản phẩm, loại hàng, khuyến mãi, quản lý thu chi).

CHƯƠNG 5: CÀI ĐẶT ỨNG DỤNG & KIỂM THỬ

Mô tả tổ chức cấu trúc thư mục dự án Front-end và Back-end trong môi trường phát triển Visual Studio Code. Trình bày quá trình chạy mã nguồn kiểm thử chức năng giao diện và kiểm tra kết nối API giữa các tầng ứng dụng. Tài liệu ghi nhận các bảng kiểm thử và phản hồi về những khó khăn kỹ thuật phát sinh trong quá trình cấu hình, cài đặt công nghệ.

CHƯƠNG 6: KẾT LUẬN

Đánh giá mức độ hoàn thành nhiệm vụ nghiên cứu: hệ thống website được vận hành ổn định, đáp ứng các ca sử dụng đề ra, khắc phục được tình trạng cố định thể loại sản phẩm nhờ cấu trúc dữ liệu NoSQL linh hoạt. Tổng kết quy trình thực hiện đồ án, các kinh nghiệm tích lũy về kỹ năng lập trình hướng thực tế, chỉ ra các mặt hạn chế còn tồn tại và đề xuất các hướng phát triển nâng cấp hệ thống trong tương lai.

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

  • Kết quả phần mềm đạt được: Hoàn thành xây dựng website bán hàng trực tuyến với đầy đủ các phân hệ chức năng cho 4 nhóm tác nhân; triển khai thành công 34 ca sử dụng nghiệp vụ bao gồm: duyệt sản phẩm, phân loại danh mục, giỏ hàng (lưu LocalStorage/Server), đặt hàng và thanh toán, hủy đơn, đánh giá sản phẩm, quản lý kho hàng và tài khoản.
  • Tính năng giao tiếp thời gian thực: Thiết kế và tích hợp thành công mô-đun trao đổi tin nhắn (chat) trực tiếp giữa người mua và nhân viên tư vấn bán hàng, học tập từ mô hình thực tế của Shopee.
  • Giải quyết bài toán nghiệp vụ cốt lõi: Khắc phục được nhược điểm của các hệ thống cũ bằng cách xây dựng hệ thống quản lý danh mục và loại hàng linh hoạt; cho phép Quản trị viên tự do thêm mới, chỉnh sửa, gán ảnh và liên kết thể loại với các mã khuyến mãi mà không cần can thiệp sửa đổi mã nguồn.
  • Ứng dụng công nghệ phụ trợ mới: Thiết kế phân tầng máy chủ phụ (FastAPI, Python) tích hợp thuật toán Word2vec để xử lý dữ liệu và bước đầu hỗ trợ gợi ý sản phẩm cũng như cá nhân hóa chức năng tìm kiếm theo sở thích của người tiêu dùng.

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

Theo nội dung trình bày tại chương 5 và chương 6 của báo cáo, đồ án tồn tại một số hạn chế và định hướng phát triển:

  • Hạn chế kỹ thuật: Nhóm tác giả gặp khó khăn trong quá trình làm quen và phối hợp đồng bộ các công nghệ mới trong ngăn xếp MERN; cơ chế lưu trữ của MongoDB chưa cung cấp các ràng buộc giao dịch (ACID) chặt chẽ, chu kỳ ghi dữ liệu từ RAM xuống ổ đĩa sau 60 giây tiềm ẩn nguy cơ sai lệch dữ liệu nếu phát sinh sự cố phần cứng đột ngột; dung lượng tài liệu bị giới hạn dưới 16MB. Thời gian nghiên cứu và thực hiện đề tài giới hạn trong 4 tháng (từ tháng 02/2022 đến tháng 06/2022) nên một số tính năng nâng cao chưa được tối ưu hóa sâu.
  • Hướng phát triển trong tương lai: Nâng cấp và hoàn thiện thuật toán học sâu cho máy chủ phụ trợ để nâng cao độ chính xác khi gợi ý sản phẩm; nghiên cứu cơ chế đồng bộ và giải quyết triệt để các hạn chế ràng buộc dữ liệu của MongoDB; phát triển thêm ứng dụng di động để mở rộng khả năng tiếp cận của hệ sinh thái bán lẻ.

Giá trị tham khảo

Báo cáo khóa luận có giá trị tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Là tài liệu tham khảo thực tế cho các đồ án chuyên ngành hoặc đồ án tốt nghiệp về xây dựng hệ thống thương mại điện tử trọn gói theo kiến trúc MERN stack (MongoDB, Express, React, Node.js).
  • Người nghiên cứu thiết kế hệ thống: Cung cấp phương pháp khảo sát đối chuẩn có hệ thống thông qua việc phân tích điểm mạnh, điểm yếu của các nền tảng thương mại điện tử lớn tại Việt Nam (Tiki, Điện máy XANH, Shopee, FPT Shop).
  • Phần đáng tham khảo nhất: Bảng đặc tả chi tiết 34 yêu cầu ca sử dụng chia theo 4 nhóm tác nhân (Chương 3) và hệ thống 15 biểu đồ tuần tự (Sequence Diagram) cùng sơ đồ thiết kế giao diện quản trị và bán hàng (Chương 4).

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

1. Vấn đề kỹ thuật cụ thể nào ở các dự án trước đây khiến nhóm tác giả quyết định thực hiện đề tài này?
Nhóm tác giả gặp phải tình trạng danh mục các loại sản phẩm bị lập trình cố định (hard-coded) theo từng loại riêng biệt, khiến việc cập nhật hoặc mở rộng các chủng loại mặt hàng mới gặp nhiều khó khăn và đòi hỏi phải chỉnh sửa lại mã nguồn hệ thống.

2. Nhóm tác giả đã tiến hành khảo sát thực tế những nền tảng thương mại điện tử nào để thiết kế chức năng?
Đồ án khảo sát chi tiết 4 nền tảng thương mại điện tử lớn tại Việt Nam: Tiki (thành lập năm 2010), Điện máy XANH (thành lập năm 2010), Shopee (thành lập năm 2015) và FPT Shop (thành lập năm 2012).

3. Server phụ trong kiến trúc hệ thống sử dụng công nghệ gì và đảm nhận vai trò nào?
Server phụ được lập trình bằng ngôn ngữ Python, sử dụng framework FastAPI và mô hình học sâu Word2vec nhằm đảm nhận nhiệm vụ xử lý dữ liệu phục vụ gợi ý sản phẩm kế tiếp và hỗ trợ tìm kiếm sản phẩm theo sở thích cá nhân của người dùng.

4. Cơ chế lưu trữ giỏ hàng của hệ thống có điểm gì khác nhau giữa Khách vãng lai và Khách hàng đã đăng nhập?
Đối với Khách vãng lai (Guest), sản phẩm chọn mua được lưu tạm thời tại Cookie hoặc LocalStorage của trình duyệt; đối với Khách hàng (Customer) đã có tài khoản và đăng nhập, dữ liệu giỏ hàng được đồng bộ và lưu trữ trực tiếp trên cơ sở dữ liệu của máy chủ.

5. Nhóm tác giả đã chỉ ra những nhược điểm kỹ thuật nào của hệ quản trị cơ sở dữ liệu MongoDB?
Báo cáo nêu rõ các nhược điểm của MongoDB gồm: không hỗ trợ giao dịch (transaction) chặt chẽ như mô hình ACID trong RDBMS; không hỗ trợ phép nối bảng (JOIN) dẫn đến nguy cơ trùng lặp dữ liệu; chiếm dụng nhiều bộ nhớ RAM; kích thước mỗi bản ghi bị giới hạn dưới 16MB; và dữ liệu cập nhật lưu trên RAM phải sau 60 giây mới ghi xuống đĩa cứng nên có nguy cơ mất dữ liệu khi gặp sự cố bất ngờ.

Kết luận

Đồ án tốt nghiệp "Xây dựng website bán hàng trực tuyến" của sinh viên Nguyễn Khoa Đảnh và Đỗ Đức Anh đã hoàn thành mục tiêu xây dựng một ứng dụng thương mại điện tử phục vụ ngành hàng công nghệ trên nền tảng MERN stack. Nghiên cứu giải quyết thành công bài toán quản lý danh mục sản phẩm động, tích hợp kênh trao đổi trực tiếp giữa khách hàng với tư vấn viên và bước đầu kết nối máy chủ phụ trợ ứng dụng mô hình Word2vec. Báo cáo cung cấp tư liệu phân tích nghiệp vụ, mô hình hóa 34 ca sử dụng và chuỗi biểu đồ tuần tự có giá trị tham khảo rõ ràng cho sinh viên chuyên ngành Công nghệ thông tin.