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

Sự tăng trưởng liên tục của thị trường thương mại điện tử đã thúc đẩy người tiêu dùng dịch chuyển mạnh mẽ sang phương thức mua sắm trực tuyến nhằm tiết kiệm thời gian và tiếp cận hàng hóa thuận tiện. Trước bối cảnh cạnh tranh giữa các nền tảng bán hàng qua mạng, yêu cầu cá nhân hóa trải nghiệm khách hàng và tối ưu hóa khả năng tìm kiếm sản phẩm tương đồng trở thành bài toán kỹ thuật trọng tâm. Đồ án "Xây dựng website bán hàng và áp dụng thuật toán Hamming distance để gợi ý sản phẩm" do sinh viên Nguyễn Đức Phúc thực hiện dưới sự hướng dẫn của ThS. Nguyễn Thị Thanh Trúc tại Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh (tháng 12/2023), tập trung giải quyết bài toán trên trong phạm vi một hệ thống thương mại điện tử chuyên ngành mỹ phẩm.

Văn bản xác định rõ các mục tiêu và nhiệm vụ nghiên cứu cụ thể bao gồm:

  1. Trình bày các vấn đề lý thuyết và kỹ thuật liên quan đến ngôn ngữ lập trình PHP, hệ quản trị cơ sở dữ liệu MySQL và mô hình kiến trúc MVC.
  2. Tìm hiểu nguyên lý và vận dụng thuật toán khoảng cách Hamming (Hamming Distance) để xây dựng tính năng gợi ý, hỗ trợ khách hàng lựa chọn sản phẩm phù hợp với nhu cầu.
  3. Khảo sát thực trạng quản lý bán hàng tại các cửa hàng kinh doanh thương mại hiện nay.
  4. Phân tích và thiết kế hệ thống chương trình bao gồm cấu trúc giao diện, ca sử dụng và các chức năng đáp ứng người dùng.
  5. Triển khai cài đặt phần mềm hoàn chỉnh phục vụ vận hành thực tế.

Đối tượng nghiên cứu của đề tài là quy trình quản lý bán lẻ sản phẩm mỹ phẩm trực tuyến và cơ chế đo lường mức độ tương đồng giữa các chuỗi đặc trưng nhị phân. Phạm vi nghiên cứu về mặt công nghệ giới hạn trong ngôn ngữ PHP kết hợp Framework Laravel, hệ quản trị cơ sở dữ liệu MySQL; về mặt nghiệp vụ tập trung vào quy trình vận hành của ba nhóm đối tượng (quản trị viên, nhân viên bán hàng, khách hàng) theo kết quả khảo sát thực tế tại thời điểm hoàn thành báo cáo (tháng 12/2023).

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

Cơ sở lý thuyết của đồ án được cấu thành từ hai trụ cột: lý thuyết tính toán khoảng cách dữ liệu nhị phân và công nghệ phát triển ứng dụng web trên nền tảng PHP.

Về phương pháp tính toán khoảng cách, tác giả sử dụng thuật toán Hamming Distance do Richard Hamming phát triển vào thập niên 1940 tại Bell Labs (công bố năm 1950 cùng mã Hamming) trên hệ thống máy tính cơ điện Bell Model V. Về mặt bản chất toán học, khoảng cách Hamming đo lường số lượng vị trí khác biệt giữa hai chuỗi nhị phân có cùng chiều dài, được xác định thông qua phép toán XOR ($\oplus$) trên từng bit tương ứng và đếm số lượng bit 1 thu được. Trong đồ án, thuật toán được cụ thể hóa trong môi trường PHP bằng hàm tích hợp sẵn thuộc thư viện GMP:

gmp_hamdist(GMP|int|string $num1, GMP|int|string $num2): int

Hàm nhận vào hai giá trị thuộc kiểu đối tượng GMP, số nguyên hoặc chuỗi số nguyên, sau đó trả về một số nguyên không âm thể hiện khoảng cách nhị phân giữa hai tham số. Cơ chế này được vận dụng để so khớp các đặc tính sản phẩm (được vector hóa thành chuỗi bit) với nhu cầu của khách hàng, từ đó trích xuất các sản phẩm có khoảng cách Hamming nhỏ nhất (độ tương đồng cao nhất) để đề xuất.

Về nền tảng phần mềm, đề tài áp dụng mô hình kiến trúc Model-View-Controller (MVC) để phân tách hệ thống thành ba thành phần độc lập:

  • Model: Chứa toàn bộ nghiệp vụ logic, các phương thức xử lý dữ liệu và tương tác trực tiếp với cơ sở dữ liệu.
  • View: Tiếp nhận và hiển thị giao diện đồ họa (GUI), phản hồi thao tác trực tiếp của người dùng.
  • Controller: Điều hướng luồng yêu cầu (HTTP request) từ giao diện, kích hoạt các phương thức tương ứng tại Model và trả kết quả về View.

Khung phát triển ứng dụng được lựa chọn là Laravel Framework (do Taylor Otwell phát triển). Hệ thống tận dụng các thành phần cốt lõi của Laravel gồm: bộ định tuyến (Routing), bộ điều khiển tài nguyên (Restful Controllers), công cụ thao tác dữ liệu (Database Query Builder), cơ chế đệm dữ liệu (Caching), công cụ giao diện dòng lệnh (Artisan CLI), và cơ chế mã hóa mật khẩu an toàn bằng thuật toán BCrypt. Hệ quản trị cơ sở dữ liệu quan hệ được triển khai là MySQL dạng server-based.

Phương pháp nghiên cứu thực tế bao gồm phương pháp khảo sát nghiệp vụ bán lẻ thực tế, phương pháp phân tích thiết kế hướng đối tượng qua hệ thống biểu đồ UML (Use Case, Biểu đồ hoạt động, Biểu đồ tuần tự) và phương pháp kiểm nghiệm chức năng trực tiếp trên phần mềm. Nguồn dữ liệu phục vụ vận hành là tập dữ liệu danh mục hàng hóa, đơn hàng và thuộc tính của các mặt hàng mỹ phẩm.

Thiết kế và triển khai

Hệ thống được thiết kế hướng tới việc phân quyền chặt chẽ giữa ba nhóm tác nhân với phạm vi trách nhiệm riêng biệt:

Tác nhân Phân quyền và trách nhiệm trên hệ thống
KHACHHANG Đăng ký tài khoản, đăng nhập, tìm kiếm sản phẩm, xem chi tiết sản phẩm và bài viết, thêm/sửa/xóa sản phẩm trong giỏ hàng, đặt hàng, xem chi tiết đơn hàng, gửi đánh giá sản phẩm sau khi mua, nhận gợi ý sản phẩm tự động.
NHANVIEN Đăng nhập hệ thống, cập nhật thông tin cá nhân, thực hiện nghiệp vụ quản lý danh mục sản phẩm, quản lý sản phẩm, quản lý đơn hàng và theo dõi cập nhật kho hàng.
QUANLY Quản trị toàn quyền hệ thống: quản lý người dùng, tài khoản hệ thống, danh mục, sản phẩm, kho hàng, đơn hàng, khách hàng và quản lý bài viết tin tức/khuyến mãi.

Quy trình hoạt động chính của hệ thống bao gồm:

  • Xác thực và phân quyền: Xử lý đăng nhập thông qua kiểm tra đối chiếu tên tài khoản và chuỗi mật khẩu đã băm (BCrypt) trong bảng cơ sở dữ liệu MySQL. Tùy thuộc vào trường dữ liệu vai trò, hệ thống điều hướng người dùng tới giao diện quản trị hoặc giao diện mua sắm.
  • Xử lý giao dịch đặt hàng: Khi khách hàng kích hoạt thanh toán giỏ hàng, hệ thống kiểm tra tình trạng tồn kho của từng mặt hàng. Nếu thỏa mãn điều kiện số lượng, hệ thống tạo bản ghi đơn hàng mới, cập nhật bảng chi tiết giao dịch, đồng thời trừ số lượng tồn kho tương ứng.
  • Xử lý gợi ý sản phẩm bằng Hamming Distance: Hệ thống trích xuất chuỗi bit đại diện cho tập thuộc tính của sản phẩm hiện tại mà khách hàng đang xem hoặc quan tâm, sau đó dùng hàm gmp_hamdist so sánh lần lượt với chuỗi bit của các sản phẩm còn lại trong cơ sở dữ liệu. Danh sách các sản phẩm có khoảng cách bit ngắn nhất sẽ được lọc và hiển thị tại khối giao diện gợi ý.

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

Chương 1: Giới thiệu đề tài

Chương mở đầu phân tích bối cảnh phát triển của thương mại điện tử và nhu cầu ứng dụng các giải pháp toán học, tin học vào việc gợi ý sản phẩm nhằm nâng cao trải nghiệm mua sắm cá nhân hóa. Tác giả xác định rõ đề tài tập trung vào việc xây dựng website kinh doanh mặt hàng mỹ phẩm, kết hợp thuật toán Hamming Distance. Chương này xác lập 5 mục tiêu nghiên cứu cụ thể, chỉ rõ giới hạn kỹ thuật trong hệ sinh thái PHP/Laravel/MySQL, đồng thời vạch ra các kết quả dự kiến về phân quyền hệ thống cho nhóm quản trị viên, nhân viên và khách hàng.

Chương 2: Kiến thức nền tảng

Chương 2 trình bày chi tiết về lịch sử phát triển, bản chất toán học và các trường hợp sử dụng của thuật toán khoảng cách Hamming. Nội dung làm rõ bối cảnh Richard Hamming phát minh giải thuật vào thập niên 1940 khi làm việc với máy Bell Model V dùng thẻ đục lỗ nhằm giải quyết bài toán phát hiện và sửa lỗi truyền tín hiệu. Tác giả phân tích công thức tính khoảng cách $d(x, y)$ dựa trên phép toán XOR và trọng số Hamming, cách xác định khoảng cách tối thiểu ($d_{min}$), điều kiện phát hiện tối đa $S$ lỗi ($d_{min} \ge S + 1$) và điều kiện sửa lỗi dựa trên khái niệm hình học về lãnh thổ hình tròn bán kính $t$.

Bên cạnh đó, chương khảo sát cách triển khai hàm gmp_hamdist trong PHP và các ứng dụng tiềm năng của chuỗi bit trong Laravel (quản lý phân quyền, xử lý thuộc tính nhị phân, cấu hình hệ thống, tìm kiếm tương đồng). Phần còn lại của chương phân tích kiến trúc MVC, ưu điểm của ngôn ngữ PHP, hệ quản trị MySQL và các tính năng nổi trội của Framework Laravel (tính mô-đun, xác thực, bộ nhớ đệm Caching, công cụ Database Query Builder và giao diện dòng lệnh Artisan).

Chương 3: Phân tích và thiết kế hệ thống

Chương 3 tập trung vào kỹ thuật phân tích yêu cầu và mô hình hóa hệ thống bằng ngôn ngữ UML. Chương này cung cấp hệ thống đặc tả Use Case chi tiết kèm theo điều kiện kích hoạt, dữ liệu đầu vào, luồng sự kiện chính, luồng rẽ nhánh (A1) và dữ liệu đầu ra cho các phân hệ:

  • Phân hệ người dùng: Đăng ký, đăng nhập, đăng xuất, xem chi tiết sản phẩm, xem chi tiết bài viết, thêm/cập nhật/xóa sản phẩm giỏ hàng, đặt hàng, xem đơn hàng, đánh giá sản phẩm.
  • Phân hệ quản trị: Quản lý danh mục, quản lý sản phẩm, quản lý đơn hàng, quản lý bài viết, quản lý khách hàng, quản lý tài khoản, quản lý kho hàng.

Toàn bộ các luồng thao tác được chuẩn hóa bằng hệ thống Biểu đồ hoạt động (Activity Diagrams) và Biểu đồ tuần tự (Sequence Diagrams) từ Hình 3.15 đến Hình 3.39, làm cơ sở dữ liệu hóa các thực thể thành cấu trúc bảng quan hệ trong MySQL.

Nhóm chức năng Tác nhân thao tác Hành vi nghiệp vụ chính
Quản lý danh mục Quản lý, Nhân viên Hiển thị danh sách, thêm danh mục, sửa thông tin, kiểm tra ràng buộc khóa ngoại trước khi xóa danh mục.
Quản lý sản phẩm Quản lý, Nhân viên Xem danh sách, thêm mới thuộc tính sản phẩm, cập nhật giá/thông tin, xóa sản phẩm, tìm kiếm sản phẩm.
Quản lý đơn hàng Quản lý, Nhân viên Tạo đơn, tìm kiếm đơn hàng, xem chi tiết giao dịch, cập nhật trạng thái đơn hàng (chờ xử lý, đang giao, hoàn thành).
Quản lý kho hàng Quản lý, Nhân viên Thêm thông tin kho, chỉnh sửa kho hàng, xóa kho sau khi đối chiếu ràng buộc dữ liệu tồn kho.
Quản lý bài viết Quản lý Biên tập bài viết tin tức, bài viết quảng cáo, chương trình ưu đãi, tìm kiếm và xóa bài viết.
Quản trị người dùng Quản lý Quản lý danh sách khách hàng, cập nhật thông tin tài khoản, phân quyền đăng nhập cho nhân viên.
Mua sắm & Đánh giá Khách hàng Thao tác giỏ hàng, tạo giao dịch đặt mua, tra cứu đơn hàng cá nhân, gửi đánh giá phản hồi về chất lượng sản phẩm.

Chương 4: Giao diện phần mềm

Chương 4 tài liệu hóa toàn bộ kết quả hiện thực hóa giao diện người dùng (Front-end) và giao diện điều hành (Back-end).

  • Phần quản trị gồm các màn hình: Đăng nhập quản trị, quản lý danh mục sản phẩm, danh sách sản phẩm, biểu mẫu thêm sản phẩm, biểu mẫu cập nhật sản phẩm, quản lý đơn hàng, quản lý khách hàng và quản lý bài viết.
  • Phần người dùng gồm các màn hình: Đăng nhập, đăng ký tài khoản, trang chủ bán mỹ phẩm, trang xem chi tiết sản phẩm (tích hợp khối hiển thị gợi ý sản phẩm theo khoảng cách Hamming), giỏ hàng, biểu mẫu thanh toán đặt hàng, trang chi tiết trạng thái đơn hàng và giao diện gửi đánh giá sản phẩm.

Chương 5: Kết luận

Chương tổng kết đánh giá mức độ hoàn thành so với các mục tiêu đề ra ban đầu, tổng hợp các kết quả thực nghiệm về mặt tính năng phần mềm, chỉ ra các mặt hạn chế còn tồn tại trong giải thuật và kiến trúc hệ thống, đồng thời vạch ra định hướng nâng cấp mã nguồn trong tương lai.

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

Đồ án ghi nhận các kết quả kỹ thuật và đóng góp thực tiễn cụ thể:

  • Hoàn thành xây dựng website bán mỹ phẩm trực tuyến hoàn chỉnh với đầy đủ các nghiệp vụ thương mại điện tử, bao gồm quản lý kho, xử lý đơn hàng, giỏ hàng, thanh toán và đánh giá phản hồi.
  • Thiết kế hệ thống phân quyền 3 cấp độ (Khách hàng, Nhân viên, Quản trị viên), phân tách rõ ràng trách nhiệm vận hành nghiệp vụ kho và kiểm duyệt nội dung.
  • Ứng dụng thành công thuật toán khoảng cách Hamming vào chức năng gợi ý sản phẩm thông qua hàm gmp_hamdist trong PHP. Hệ thống có khả năng so sánh vector nhị phân đại diện cho thuộc tính sản phẩm, từ đó đưa ra danh sách đề xuất dựa trên mức độ tương đồng bit thay vì chỉ tìm kiếm theo từ khóa văn bản thuần túy.
  • Đóng góp tài liệu phân tích thiết kế hệ thống chi tiết với 12 biểu đồ Use Case nghiệp vụ, 14 biểu đồ hoạt động và 10 biểu đồ tuần tự, cung cấp tài liệu mô hình hóa hoàn chỉnh cho các dự án phát triển phần mềm bán hàng trên nền tảng Laravel.

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

Dựa trên phạm vi và nội dung trình bày trong văn bản, đồ án bộc lộ một số giới hạn kỹ thuật:

  • Cơ chế so khớp đặc trưng nhị phân: Thuật toán khoảng cách Hamming chỉ áp dụng đối với các chuỗi nhị phân có cùng độ dài. Khi thuộc tính sản phẩm có sự biến thiên lớn, phức tạp hoặc không thể biểu diễn thuần túy bằng dạng nhị phân (0 và 1), thuật toán bộc lộ sự hạn chế so với các độ đo phức tạp hơn (như khoảng cách Levenshtein được văn bản nhắc tới đối với chuỗi ký tự biến thiên độ dài) hoặc các giải thuật học máy chuyên sâu.
  • Phạm vi khảo sát nghiệp vụ: Hệ thống mới tập trung giải quyết các nghiệp vụ bán hàng mỹ phẩm ở quy mô cửa hàng vừa và nhỏ theo khảo sát ban đầu, chưa tích hợp các cổng thanh toán trực tuyến của bên thứ ba hoặc các cơ chế đồng bộ kho hàng đa chi nhánh tự động.
  • Hướng phát triển: Báo cáo chỉ ra định hướng nâng cấp hệ thống gợi ý bằng việc nghiên cứu bổ sung các giải thuật khoảng cách nâng cao, tối ưu hóa cấu trúc cơ sở dữ liệu để giảm độ trễ khi tính toán khoảng cách trên tập dữ liệu hàng nghìn sản phẩm, đồng thời hoàn thiện thêm các tiện ích tương tác khách hàng trên nền tảng di động.

Giá trị tham khảo

Báo cáo đồ án là tài liệu tham khảo hữu ích cho các nhóm đối tượng cụ thể:

  • Sinh viên ngành Công nghệ phần mềm và Công nghệ thông tin: Có thể khai thác trực tiếp phương pháp phân tích yêu cầu, xây dựng tài liệu UML (Use Case, Biểu đồ hoạt động, Biểu đồ tuần tự) và mô hình hóa cơ sở dữ liệu quan hệ cho một ứng dụng thương mại điện tử hoàn chỉnh.
  • Lập trình viên web nền tảng PHP/Laravel: Tham khảo cấu trúc tổ chức mã nguồn theo mô hình MVC, kỹ thuật phân quyền nhiều tác nhân (Multi-auth) và cách tích hợp các hàm thư viện toán học nâng cao như GMP (gmp_hamdist) vào bài toán xử lý nghiệp vụ web.
  • Người nghiên cứu hệ thống gợi ý (Recommender Systems): Cung cấp ca nghiên cứu thực tế về việc chuyển đổi bài toán gợi ý sản phẩm tương đồng về bài toán so sánh khoảng cách bit nhị phân, là tiền đề thực nghiệm cho các giải pháp lọc cộng tác hoặc lọc dựa trên nội dung ở mức cơ bản.

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

1. Thuật toán Hamming Distance hoạt động như thế nào trong bài toán gợi ý sản phẩm của đồ án?
Thuật toán so sánh hai chuỗi nhị phân có cùng chiều dài đại diện cho tập thuộc tính của sản phẩm. Bằng cách thực hiện phép toán XOR và đếm số bit khác nhau thông qua hàm gmp_hamdist, hệ thống xác định khoảng cách giữa sản phẩm người dùng đang quan tâm và các sản phẩm khác trong kho. Sản phẩm nào có khoảng cách Hamming càng nhỏ thì độ tương đồng thuộc tính càng cao và được ưu tiên hiển thị gợi ý.

2. Hàm nào trong PHP được tác giả sử dụng trực tiếp để tính khoảng cách Hamming?
Tác giả sử dụng hàm gmp_hamdist(GMP|int|string $num1, GMP|int|string $num2): int thuộc thư viện GNU Multiple Precision (GMP) của PHP. Hàm này nhận hai tham số dạng số nguyên, đối tượng GMP hoặc chuỗi số và trả về khoảng cách Hamming dưới dạng một số nguyên không âm.

3. Hệ thống phân chia bao nhiêu nhóm tác nhân và quyền hạn của từng nhóm ra sao?
Hệ thống phân chia thành 3 nhóm tác nhân: tác nhân KHACHHANG (thực hiện xem hàng, quản lý giỏ hàng, đặt hàng, đánh giá sản phẩm), tác nhân NHANVIEN (quản lý danh mục, sản phẩm, đơn hàng, theo dõi kho) và tác nhân QUANLY (nắm toàn quyền hệ thống, quản lý thêm bài viết, tài khoản đăng nhập và dữ liệu khách hàng).

4. Vì sao tác giả lựa chọn Laravel Framework làm nền tảng phát triển ứng dụng?
Theo văn bản, Laravel là PHP framework mã nguồn mở theo kiến trúc MVC sở hữu nhiều tính năng nổi bật: cấu trúc mô-đun hóa dễ mở rộng, hệ thống xác thực người dùng tích hợp sẵn nhanh chóng, cơ chế định tuyến (Routing) thân thiện SEO, cơ chế lưu bộ nhớ đệm (Caching) tối ưu hiệu năng, Database Query Builder hỗ trợ truy vấn cơ sở dữ liệu phức tạp, công cụ dòng lệnh Artisan và độ bảo mật cao nhờ cơ chế băm mật khẩu bằng BCrypt chống tấn công dữ liệu.

5. Điểm khác biệt giữa khoảng cách Hamming và khoảng cách Levenshtein được đồ án lưu ý là gì?
Văn bản chỉ rõ khoảng cách Hamming chỉ áp dụng hiệu quả để so sánh hai chuỗi dữ liệu nhị phân có độ dài bằng nhau nhằm đếm số bit bị thay thế. Đối với các chuỗi ký tự có độ dài khác nhau hoặc dữ liệu chịu tác động của thao tác chèn/xóa ký tự, phương pháp đo lường như khoảng cách Levenshtein (Levenshtein Distance) mới là công cụ thích hợp và hiệu quả.

Kết luận

Đồ án "Xây dựng website bán hàng và áp dụng thuật toán Hamming distance để gợi ý sản phẩm" của tác giả Nguyễn Đức Phúc đã hoàn thành việc khảo sát, thiết kế và triển khai một hệ thống bán lẻ mỹ phẩm trực tuyến dựa trên kiến trúc MVC với PHP/Laravel và MySQL. Đề tài làm rõ quy trình phân tích hướng đối tượng qua hệ thống biểu đồ UML chuẩn mực và áp dụng thành công phép đo khoảng cách Hamming thông qua hàm gmp_hamdist vào chức năng gợi ý sản phẩm tương đồng. Đây là tài liệu kỹ thuật có giá trị tham khảo tốt cho sinh viên và lập trình viên trong việc kết hợp lý thuyết thuật toán nhị phân vào phát triển ứng dụng thương mại điện tử thực tế.