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

Đồ án được thực hiện trong bối cảnh thương mại điện tử phát triển mạnh sau đại dịch COVID-19, khi các đợt giãn cách xã hội kéo dài đã thúc đẩy người dân hình thành thói quen mua sắm trực tuyến. Các thương hiệu thời trang và cửa hàng quần áo ngày càng chuyển dịch từ hình thức kinh doanh trực tiếp sang trực tuyến, kéo theo nhu cầu về các ứng dụng thương mại điện tử chuyên biệt tăng đáng kể. Bài toán đặt ra không chỉ dừng lại ở việc đáp ứng nghiệp vụ bán hàng cơ bản, mà còn phải tối ưu khả năng tiếp cận sản phẩm đến khách hàng và hỗ trợ quản trị doanh nghiệp hiệu quả.

Nhóm tác giả — sinh viên Nguyễn Trí Đức (MSSV: 20520453) và Trương Kim Điền (MSSV: 20520442), Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM — xác định ba mục tiêu chính của đồ án:

  1. Xây dựng hệ thống gợi ý sản phẩm: gợi ý sản phẩm tương tự dựa trên người dùng có sở thích giống nhau; gợi ý sản phẩm cá nhân hoá; sử dụng thuật toán Collaborative Filtering.
  2. Xây dựng hệ thống dự báo doanh số: dự báo doanh số tương lai từ dữ liệu lịch sử; gợi ý số lượng tồn kho cần thiết; sử dụng mô hình tự hồi quy (Autoregressive Model – AR).
  3. Xây dựng ứng dụng Web: cung cấp giao diện mua hàng, quản lý và xác thực người dùng; hỗ trợ thống kê và biểu đồ trực quan cho công tác quản trị.

Đối tượng nghiên cứu gồm hai nhóm: (1) khách hàng có nhu cầu mua sắm quần áo trực tuyến; (2) quản trị viên phía doanh nghiệp thực hiện các nghiệp vụ quản lý kinh doanh.

Phạm vi nghiên cứu:

  • Phạm vi môi trường: Website chạy trên máy tính cá nhân.
  • Phạm vi chức năng: giao diện mua hàng, hệ thống gợi ý sản phẩm tương tự dựa trên hành vi xem và mua, hệ thống dự báo doanh số theo từng sản phẩm, quản lý đơn hàng và hàng tồn kho, xác thực người dùng và phân quyền.
  • Thời gian thực hiện: từ ngày 11/9/2023 đến khi kết thúc Đồ án 2, triển khai theo 8 sprint (mỗi sprint kéo dài 2 tuần).

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

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

Lớp Công nghệ / Thư viện
Front-end HTML, CSS, ReactJS, TypeScript
Back-end ASP.NET (.NET), NServiceBus
Kiến trúc hệ thống Microservices Architecture
Liên kết dịch vụ RESTful API (client ↔ API Gateway), NServiceBus (API Gateway ↔ services)
Cơ sở dữ liệu PostgreSQL, SQL
ORM Entity Framework Core
Machine Learning ML.NET (Microsoft)
Lưu trữ ảnh Supabase storage
Quản lý package NPM (Node Package Manager)
Quản lý source code GitHub

Hệ thống gợi ý sản phẩm sử dụng thuật toán Matrix Factorization — một biến thể của Collaborative Filtering — dựa trên kỹ thuật phân rã ma trận: phân rã ma trận lớn X thành hai ma trận nhỏ W và H sao cho X ≈ WH^T. Model được triển khai trên thư viện ML.NET của Microsoft, với ba đặc trưng (feature) là UserId, ProductId, Age và nhãn (label) là purchase.

Hệ thống dự báo doanh số sử dụng thuật toán Singular Spectrum Analysis (SSA) — phương pháp phân tích chuỗi thời gian bằng cách phân tách chuỗi thành các thành phần đại diện cho xu hướng, tính thời vụ và nhiễu, sau đó tái tạo để dự báo giá trị tương lai. Dữ liệu đầu vào gồm các trường Date, Year, TotalSold; đầu ra gồm ForecastedSales, LowerBoundSales, UpperBoundSales.

Quy trình ML.NET gồm 7 bước: (1) nạp và chia dữ liệu vào IDataView; (2) định nghĩa pipeline và chọn thuật toán tạo IEstimator; (3) huấn luyện qua Fit() tạo ITransformer; (4) đánh giá mô hình; (5) lưu mô hình dưới dạng file .zip; (6) tải lại mô hình qua Load(); (7) dự đoán qua CreatePredictionEngine().Predict().

Phương pháp thực hiện

Nhóm áp dụng tổ hợp các phương pháp: phân tích nhu cầu người dùng, khảo sát ứng dụng thương mại điện tử tương tự trên thị trường, và nghiên cứu tài liệu kỹ thuật về Recommendation System, Autoregressive Model và các công nghệ Web liên quan. Dự án được quản lý theo phương thức Agile/Sprint với 8 sprint trong 16 tuần, thực hiện theo nhóm 2 thành viên (kết hợp online và offline).


Thiết kế và triển khai

Kiến trúc hệ thống

Đồ án áp dụng Microservices Architecture, trong đó ứng dụng được chia thành nhiều service nhỏ, độc lập, có thể phát triển và triển khai riêng biệt. Hệ thống gồm bốn thành phần chính:

STT Thành phần Chức năng
1 Giao diện người dùng Cung cấp giao diện nhập/xuất dữ liệu; thông báo lỗi cho người dùng
2 API Gateway Tiếp nhận yêu cầu, kiểm tra ràng buộc, điều hướng đến service phù hợp
3 Microservices Xử lý và phản hồi yêu cầu từ API Gateway
4 Cơ sở dữ liệu Lưu trữ toàn bộ dữ liệu liên quan đến hoạt động cửa hàng

Giao tiếp giữa client và API Gateway thực hiện qua RESTful API; giao tiếp giữa API Gateway và các service nội bộ thực hiện qua NServiceBus.

Thiết kế cơ sở dữ liệu và lớp đối tượng

Hệ thống sử dụng PostgreSQL làm RDBMS chính và Entity Framework Core làm ORM, cho phép thực hiện CRUD qua LINQ trong C# mà không cần viết SQL thuần. Cơ sở dữ liệu được thiết kế dưới dạng sơ đồ ERD với các bảng quan hệ phản ánh nghiệp vụ: sản phẩm, đơn hàng, hóa đơn, khách hàng, tồn kho, voucher, giảm giá, nhãn và bộ sưu tập.

Thiết kế giao diện người dùng

Hệ thống có hai giao diện tách biệt:

Giao diện khách hàng gồm các màn hình chính: Trang chủ, Danh sách sản phẩm, Chi tiết sản phẩm (tích hợp gợi ý sản phẩm tương tự), Giỏ hàng, Thanh toán, Thông tin cá nhân, Danh sách đơn hàng, Chi tiết đơn hàng, Chính sách đổi trả, Đăng nhập, Đăng ký, Quên mật khẩu.

Giao diện quản trị gồm các màn hình: Thống kê, Đơn hàng (đang chờ / đã hoàn thành / đã huỷ), Tình trạng đơn hàng, Hóa đơn (đã thanh toán / chưa thanh toán), Nhãn, Bộ sưu tập, Sản phẩm (xem / tạo / chỉnh sửa), Giảm giá, Voucher, Khách hàng, Lịch sử nhập hàng, Nhập hàng, Chính sách (đang phát triển).

Đặc tả Use-Case

Hệ thống xác định ba tác nhân: Khách hàng (có hoặc không có tài khoản), Quản lý (tài khoản nội bộ), và Recommender System (hệ thống gợi ý tự động). Tổng cộng 38 use case (UC001–UC038) bao phủ toàn bộ luồng nghiệp vụ từ đăng ký/đăng nhập, mua hàng, đến quản lý sản phẩm và nhập kho.

Kiểm thử

Môi trường kiểm thử được ghi nhận trong chương cài đặt cùng bảng kết quả kiểm thử (Bảng 8.1). Giai đoạn kiểm thử thực hiện trong Sprint 6 và Sprint 7 (từ 20/11/2023 đến 17/12/2023), bao gồm tổng kiểm thử toàn bộ ứng dụng trước khi triển khai.


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

Chương 1 — Lý do chọn đề tài và tổng quan đề tài

Chương này trình bày bối cảnh thị trường thương mại điện tử sau COVID-19, phân tích nhu cầu của doanh nghiệp thời trang khi chuyển sang bán hàng trực tuyến, và lý do nhóm chọn tích hợp hệ thống gợi ý sản phẩm. Chương xác định đầy đủ mục tiêu (khách quan và chủ quan), đối tượng nghiên cứu, phạm vi môi trường và chức năng, cùng phân công công việc giữa hai thành viên: Trương Kim Điền phụ trách back-end và hệ thống gợi ý; Nguyễn Trí Đức phụ trách front-end và quản lý tiến độ.

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

Chương cung cấp nền tảng lý thuyết và kỹ thuật cho toàn bộ đồ án, bao gồm: TypeScript (ngôn ngữ mở rộng của JavaScript do Microsoft phát triển, hỗ trợ kiểu tĩnh và lập trình hướng đối tượng); Node.js (nền tảng phát triển từ năm 2009, sử dụng mô hình non-blocking I/O, Single-Threaded); ReactJS (thư viện JavaScript do Facebook phát triển từ năm 2011, dựa trên component-based approach và Virtual DOM); ASP.NET (nền tảng đa nền tảng, mã nguồn mở của Microsoft); SQL và PostgreSQL (hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở, chuẩn SQL99); Entity Framework Core (ORM của Microsoft, phát triển từ năm 2008, hỗ trợ LINQ và Migration); và ML.NET (thư viện machine learning mã nguồn mở, đa nền tảng của Microsoft, phiên bản ổn định 1.0 tính đến 02/2022).

Chương 3 — Machine Learning: ML.NET

Chương trình bày chi tiết hai mô hình machine learning được triển khai:

Hệ thống gợi ý sản phẩm (Matrix Factorization): Model sử dụng ý tưởng người dùng cùng độ tuổi có xu hướng mua sản phẩm tương tự. Ba feature là UserId, ProductId, Age; label là purchase. Kết quả đánh giá trên bộ dữ liệu tự chuẩn bị:

Chỉ số Giá trị
RootMeanSquaredError (RMSE) 1 đến 2
RSquared khoảng 0.3

Hệ thống dự báo doanh số (SSA): Model tự động lấy dữ liệu đầu mỗi tháng để dự báo số lượng sản phẩm bán ra theo từng ngày. Kết quả đánh giá:

Chỉ số Giá trị
Mean Absolute Error (MAE) 500 đến 700
Root Mean Squared Error (RMSE) 700 đến 800

Chương 4 — Thiết kế hệ thống

Chương mô tả kiến trúc Microservices, bảng chi tiết bốn thành phần hệ thống (Bảng 4.1), và sơ đồ lớp. Luồng xử lý yêu cầu đi từ giao diện người dùng → API Gateway → Microservices → Cơ sở dữ liệu và ngược lại.

Chương 5 — Đặc tả Use-Case

Chương liệt kê đầy đủ ba tác nhân và 38 use case (UC001–UC038). Các use case được đặc tả chi tiết bao gồm: Đăng nhập (UC001), Đăng ký (UC002), Quên mật khẩu (UC003), Đặt mua sản phẩm (UC010–UC011), Quản lý đơn hàng (UC022–UC025), Thêm/cập nhật sản phẩm (UC035–UC037), Nhập sản phẩm (UC038). Mỗi use case được đặc tả theo chuẩn với ID, mô tả, mức độ ưu tiên, tác nhân, trigger, điều kiện trước/sau, luồng cơ bản và luồng ngoại lệ. Ví dụ: use case Đăng ký (UC002) yêu cầu mật khẩu được hash bằng MD5.

Chương 6 — Thiết kế cơ sở dữ liệu

Chương trình bày danh sách các quan hệ trong CSDL PostgreSQL, phản ánh toàn bộ nghiệp vụ của hệ thống bán hàng và quản lý kho.

Chương 7 — Thiết kế giao diện người dùng

Chương mô tả chi tiết 51 màn hình giao diện (Bảng 7.1), bao gồm sơ đồ liên kết các màn hình và mô tả thành phần từng màn hình qua 32 bảng chi tiết (Bảng 7.1 đến 7.32). Hệ thống phân tách rõ giao diện Navigation Bar trước và sau đăng nhập, Navigation SideBar thu gọn và mở rộng cho phía quản trị.

Chương 8 — Cài đặt và kiểm thử

Chương trình bày môi trường cài đặt, kết quả kiểm thử (Bảng 8.1), danh sách tài khoản hệ thống (Bảng 8.2), kết quả đạt được về tổ chức quản lý nhóm và sản phẩm phần mềm, cùng hướng phát triển tiếp theo.


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

Kết quả đạt được:

  • Hệ thống gợi ý sản phẩm hoạt động dựa trên Matrix Factorization, với RMSE trong khoảng 1–2 và RSquared khoảng 0.3 trên bộ dữ liệu tự chuẩn bị.
  • Hệ thống dự báo doanh số theo thuật toán SSA đạt MAE từ 500 đến 700, RMSE từ 700 đến 800.
  • Website tích hợp đầy đủ các chức năng: quản lý sản phẩm, đơn hàng, hóa đơn, tồn kho, voucher, giảm giá, thống kê doanh thu và gợi ý sản phẩm tự động.
  • Hệ thống được thiết kế với 38 use case, 51 màn hình giao diện, phân quyền hai cấp (khách hàng và quản trị viên).

Giải pháp đề xuất: Tích hợp hệ thống gợi ý vào trang chi tiết sản phẩm nhằm tăng tỷ lệ mua hàng; cung cấp màn hình dự báo doanh số tự động theo từng sản phẩm để hỗ trợ quyết định nhập kho; sử dụng kiến trúc Microservices để tăng khả năng bảo trì và mở rộng.

Đóng góp so với trước: Đồ án kết hợp đồng thời hai hệ thống ML (gợi ý và dự báo) vào một ứng dụng thương mại điện tử chuyên ngành thời trang trên nền tảng .NET/ReactJS, ứng dụng ML.NET — thư viện machine learning của Microsoft cho C# — vào bài toán thực tế thay vì các thư viện Python phổ biến.


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

Nhóm tác giả tự nhận các hạn chế sau:

  • Chất lượng dữ liệu huấn luyện: Bộ dữ liệu của hệ thống gợi ý được tự chuẩn bị, chưa phản ánh chính xác hiệu suất thực tế trong môi trường triển khai thực.
  • Độ chính xác dự báo dài hạn: Thuật toán SSA có ưu thế trong dự báo ngắn hạn nhưng độ chính xác giảm khi thời gian dự báo kéo dài; ngoài ra, SSA không xử lý được ảnh hưởng của các yếu tố ngoại sinh.
  • Phạm vi nền tảng: Ứng dụng hiện chỉ hỗ trợ trên Web máy tính cá nhân, chưa tối ưu cho thiết bị di động.
  • Màn hình Chính sách: Ghi nhận là "đang phát triển" tại thời điểm nộp báo cáo.

Hướng phát triển tiếp theo được nhóm xác định:

  • Tích hợp chatbot tư vấn theo chiều cao, cân nặng và sở thích người dùng.
  • Tích hợp chức năng phòng thử đồ ảo sử dụng công nghệ AR.
  • Nâng cấp giao diện, thêm hỗ trợ đa ngôn ngữ (tiếng Anh).
  • Tối ưu tốc độ xử lý và hiệu năng hệ thống.
  • Bổ sung tính năng quản trị nội bộ mở rộng.

Giá trị tham khảo

Đồ án phù hợp để tham khảo cho các đối tượng sau:

  • Sinh viên Công nghệ Phần mềm và Công nghệ Thông tin đang tìm hiểu cách xây dựng hệ thống thương mại điện tử toàn diện trên nền tảng .NET/ReactJS với kiến trúc Microservices.
  • Sinh viên nghiên cứu Machine Learning ứng dụng với C#/.NET muốn tìm hiểu ML.NET, đặc biệt các thuật toán Matrix Factorization và SSA trong ngữ cảnh thực tế.
  • Nhóm làm đồ án xây dựng hệ thống gợi ý (Recommender System) có thể tham khảo cách thiết kế model với ba feature (UserId, ProductId, Age) và tích hợp vào ứng dụng web.
  • Nhóm nghiên cứu dự báo chuỗi thời gian trong bài toán doanh thu bán lẻ có thể tham khảo cách triển khai SSA qua ML.NET.
  • Người học thiết kế hệ thống phần mềm có thể tham khảo phần đặc tả use case (Chương 5) và thiết kế giao diện chi tiết (Chương 7) như mẫu tài liệu kỹ thuật chuẩn.

Phần có giá trị tham khảo cao nhất là Chương 3 (triển khai ML.NET), Chương 4 (kiến trúc Microservices với NServiceBus), và Chương 5 (đặc tả 38 use case theo chuẩn).


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

1. Hệ thống gợi ý sản phẩm sử dụng thuật toán nào và dựa trên logic gì? Hệ thống sử dụng thuật toán Matrix Factorization — một biến thể của Collaborative Filtering — với ý tưởng rằng người dùng cùng độ tuổi có xu hướng mua những sản phẩm tương tự. Model có ba feature: UserId, ProductId, Age, và label là purchase. Mô hình được triển khai trên thư viện ML.NET của Microsoft, với RMSE đạt trong khoảng 1 đến 2 và RSquared khoảng 0.3 trên bộ dữ liệu tự chuẩn bị.

2. Thuật toán dự báo doanh số hoạt động như thế nào và độ chính xác đạt được ra sao? Hệ thống sử dụng thuật toán Singular Spectrum Analysis (SSA) — phương pháp phân tích chuỗi thời gian. Mô hình tự động lấy dữ liệu mới và dữ liệu cũ vào đầu mỗi tháng để dự báo số lượng sản phẩm bán ra theo từng ngày. Đầu ra gồm ForecastedSales, LowerBoundSales, UpperBoundSales. Kết quả đánh giá cho thấy Mean Absolute Error từ 500 đến 700 và Root Mean Squared Error từ 700 đến 800.

3. Tại sao nhóm chọn kiến trúc Microservices thay vì kiến trúc một khối (Monolithic)? Nhóm chọn Microservices vì kiến trúc này cho phép triển khai và bảo trì từng service độc lập, giảm thiểu rủi ro khi một service gặp lỗi (các service khác vẫn tiếp tục hoạt động), và hỗ trợ nhiều team phát triển song song. Giao tiếp giữa client và API Gateway thực hiện qua RESTful API; giao tiếp nội bộ giữa API Gateway và các service thực hiện qua NServiceBus. Hệ thống gồm bốn thành phần: Giao diện người dùng, API Gateway, Microservices và Cơ sở dữ liệu.

4. Mật khẩu người dùng được bảo mật bằng phương thức nào trong hệ thống? Theo đặc tả use case UC002 (Đăng ký), mật khẩu người dùng được hash bằng MD5 trước khi lưu vào cơ sở dữ liệu — đây là yêu cầu phi chức năng (Non-Functional Requirement) được ghi rõ trong tài liệu đặc tả.

5. Recommender System được mô hình hoá là tác nhân riêng trong hệ thống use case không, và nó tương tác với hệ thống như thế nào? Có. Văn bản xác định Recommender System là tác nhân thứ ba (bên cạnh Khách hàng và Quản lý), được mô tả là hệ thống gợi ý tự động đề xuất sản phẩm tương tự mà người dùng đã xem hoặc đã mua. Đây là tác nhân hệ thống (system actor) hoạt động tự động, không phải người dùng trực tiếp, phân biệt rõ với hai tác nhân người dùng còn lại.


Kết luận

Đồ án "Shop quần áo online tích hợp gợi ý sản phẩm" của nhóm sinh viên Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM trình bày quá trình thiết kế và xây dựng một ứng dụng thương mại điện tử chuyên ngành thời trang trên nền tảng Web, tích hợp đồng thời hệ thống gợi ý sản phẩm (Matrix Factorization qua ML.NET) và hệ thống dự báo doanh số (SSA qua ML.NET). Hệ thống được xây dựng theo kiến trúc Microservices với front-end ReactJS/TypeScript, back-end ASP.NET, cơ sở dữ liệu PostgreSQL và ORM Entity Framework Core, đáp ứng 38 use case và 51 màn hình giao diện phân quyền cho hai nhóm người dùng. Đồ án có giá trị tham khảo thực tiễn cho các dự án phần mềm thương mại điện tử kết hợp machine learning trên nền tảng .NET, đặc biệt trong việc triển khai ML.NET vào bài toán gợi ý và dự báo chuỗi thời gian bằng ngôn ngữ C#.