Giới thiệu dự án

Thương mại điện tử (E-Commerce) ngành thời trang đang chứng kiến sự tăng trưởng vượt bậc với tỷ lệ thâm nhập thị trường dự kiến đạt trên 25% tổng doanh số bán lẻ toàn cầu. Tuy nhiên, các doanh nghiệp bán lẻ thời trang vừa và nhỏ (SMEs) đang đối mặt với bài toán nan giải: tỷ lệ thoát trang (bounce rate) lên tới 68% do tình trạng quá tải thông tin (choice overload) và chi phí tồn kho chiếm 20-30% tổng chi phí vận hành do dự báo nhu cầu thiếu chính xác.

Đồ án tốt nghiệp "Shop quần áo online tích hợp gợi ý sản phẩm và dự báo doanh số" do sinh viên Nguyễn Trí Đức và Trương Kim Điền thực hiện dưới sự hướng dẫn của ThS. Trần Anh Dũng (Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin - ĐHQG-HCM) tập trung giải quyết triệt để hai điểm nghẽn cốt lõi: tối ưu hóa trải nghiệm cá nhân hóa nhằm thúc đẩy tỷ lệ chuyển đổi (CR) và tự động hóa dự báo nhu cầu hàng tồn kho.

+-----------------------------------------------------------------------+
|                           MỤC TIÊU DỰ ÁN                              |
+-----------------------------------------------------------------------+
| 1. Xây dựng nền tảng E-commerce chuẩn Microservices trên .NET Core    |
| 2. Phát triển Recommendation Engine bằng Matrix Factorization         |
| 3. Xây dựng module dự báo doanh số & tồn kho qua thuật toán SSA       |
| 4. Triển khai kiến trúc phân tán đảm bảo xử lý đồng thời > 1,000 CCU  |
+-----------------------------------------------------------------------+

Giải pháp tiếp cận của đề tài là tích hợp học máy trực tiếp vào hệ sinh thái .NET thông qua thư viện ML.NET, kết hợp kiến trúc dịch vụ vi mô (Microservices) giao tiếp qua Message Bus, loại bỏ độ trễ khi phải gọi sang các runtime Python độc lập.

Phạm vi và giới hạn của đề tài:

  • Môi trường hoạt động: Ứng dụng Web tương thích đa trình duyệt trên Desktop.
  • Phạm vi chức năng: Bán hàng trực tuyến, giỏ hàng, thanh toán, quản trị kho, gợi ý cá nhân hóa dựa trên độ tuổi/lịch sử tương tác, và dự báo chuỗi thời gian doanh số theo ngày/tháng.
  • Giới hạn: Mô hình gợi ý tập trung vào Collaborative Filtering trên dữ liệu độ tuổi và hành vi mua; chưa tích hợp xử lý ảnh chuyên sâu cho thị giác máy tính (AR try-on).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát các giải pháp E-commerce hiện nay trên thị trường cho thấy sự phân hóa rõ rệt:

Giải pháp Ưu điểm Nhược điểm Khả năng tùy biến AI
WooCommerce / Shopify Triển khai nhanh, giao diện đa dạng Kiến trúc Monolithic, chi phí plugin cao Kém, phụ thuộc bên thứ 3
Hệ thống Monolith tự code Kiểm soát toàn bộ mã nguồn Khó mở rộng tải, nghẽn cổ chai DB Trung bình, coupling cao
Đề xuất của đồ án Độc lập mở rộng, tích hợp Native AI Độ phức tạp triển khai ban đầu Cao, tối ưu sâu trên .NET

Mô hình phân loại yêu cầu người dùng (MoSCoW):

  • Must have: Đăng ký/đăng nhập (bảo mật MD5/BCrypt), quản lý danh mục/sản phẩm, giỏ hàng, đặt hàng, gợi ý sản phẩm tương tự.
  • Should have: Dự báo doanh số theo sản phẩm qua SSA, phân quyền Role-based Access Control (RBAC), quản lý khuyến mãi/voucher.
  • Could have: Thống kê biểu đồ tương tác thời gian thực, lưu trữ ảnh CDN qua Supabase Storage.
  • Won't have (giai đoạn này): Thanh toán đa cổng quốc tế (Stripe/PayPal), phòng thử đồ thực tế ảo (AR).

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc Microservices hướng sự kiện (Event-Driven Architecture), đảm bảo tính sẵn sàng cao và khả năng cô lập lỗi:

+-------------------------------------------------------------+
|               Client Layer (ReactJS + TypeScript)           |
+-------------------------------------------------------------+
                              | RESTful API (HTTPS)
                              v
+-------------------------------------------------------------+
|                 API Gateway (Ocelot / Reverse Proxy)        |
+-------------------------------------------------------------+
         |                        |                       |
         v (NServiceBus)          v (NServiceBus)         v (REST/gRPC)
+------------------+     +------------------+    +------------------+
|  Product Service |     |   Order Service  |    |  ML & Analytics  |
| (ASP.NET Core 8) |     | (ASP.NET Core 8) |    | (ML.NET Engine)  |
+------------------+     +------------------+    +------------------+
         |                        |                       |
         +------------------------+-----------------------+
                                  |
                                  v
                    +---------------------------+
                    | PostgreSQL + Supabase S3  |
                    +---------------------------+

Technology Stack & Versions:

  • Frontend: ReactJS 18.2, TypeScript 5.0, Redux Toolkit, Node.js 18 LTS, NPM 9.x.
  • Backend: .NET 8 / ASP.NET Core Web API, C# 12.
  • Giao tiếp phân tán: NServiceBus 8.0 cho kiến trúc Publish/Subscribe.
  • ORM & Database: Entity Framework Core 8.0, PostgreSQL 15.3.
  • Machine Learning Engine: ML.NET 3.0 (Tích hợp Matrix Factorization và Time-Series SSA).
  • Lưu trữ tĩnh (Asset Storage): Supabase Storage API.

Thiết kế API Endpoints chuẩn RESTful:

  • GET /api/v1/products/{id}/recommendations - Trả về danh sách sản phẩm gợi ý dựa trên User ID và Age Group.
  • POST /api/v1/orders/checkout - Khởi tạo luồng thanh toán và phát sinh sự kiện OrderCreated qua NServiceBus.
  • GET /api/v1/analytics/forecast?productId={id}&horizon=30 - Dự báo doanh số sản phẩm trong 30 ngày tới.

Methodology

Quy trình phát triển phần mềm tuân thủ phương pháp Agile/Scrum qua 8 Sprint (mỗi Sprint 2 tuần, tổng thời gian 16 tuần):

+---------------------------------------------------------------------------------+
| SPRINT TIMELINE (16 TUẦN)                                                       |
| [S1-S2: Đặc tả & CSDL] -> [S3-S4: Backend Core & UI] ->                         |
| [S5-S6: Tích hợp ML/SSA] -> [S7-S8: Testing & Deployment]                       |
+---------------------------------------------------------------------------------+
  • Quản lý rủi ro: Phân tán CSDL đòi hỏi giải quyết bài toán tính nhất quán cuối cùng (Eventual Consistency) bằng cách sử dụng Saga Pattern trên NServiceBus để xử lý bồi hoàn đơn hàng khi có lỗi service.

Implementation và kết quả

Development Process & Core Algorithms

1. Hệ thống gợi ý sản phẩm (Matrix Factorization)

Thuật toán phân rã ma trận tiện ích người dùng - sản phẩm $Y \approx W \times H^T$, trong đó $W \in \mathbb{R}^{|U| \times K}$ biểu diễn không gian ẩn của người dùng (kết hợp độ tuổi) và $H \in \mathbb{R}^{|I| \times K}$ biểu thị đặc trưng sản phẩm.

// Cấu hình Pipeline huấn luyện Matrix Factorization trên ML.NET
var options = new MatrixFactorizationTrainer.Options
{
    MatrixColumnIndexColumnName = nameof(ProductRating.UserIdEncoded),
    MatrixRowIndexColumnName = nameof(ProductRating.ProductIdEncoded),
    LabelColumnName = nameof(ProductRating.Purchase),
    NumberOfIterations = 20,
    ApproximationRank = 100, // Chiều không gian ẩn K
    LearningRate = 0.1f
};

var pipeline = mlContext.Transforms.Conversion
    .MapValueToKey("UserIdEncoded", nameof(ProductRating.UserId))
    .Append(mlContext.Transforms.Conversion.MapValueToKey("ProductIdEncoded", nameof(ProductRating.ProductId)))
    .Append(mlContext.Recommendation().Trainers.MatrixFactorization(options));

ITransformer model = pipeline.Fit(trainingDataView);

Độ phức tạp tính toán: $\mathcal{O}(I \cdot K \cdot |R|)$ với $I$ là số vòng lặp (iterations), $K$ là số chiều ẩn, $|R|$ là số lượng bản ghi tương tác.

2. Hệ thống dự báo doanh số (Singular Spectrum Analysis - SSA)

Mô hình SSA phân rã chuỗi thời gian $X = (x_1, \ldots, x_N)$ thành tổng các thành phần trực giao: Xu hướng (Trend), Chu kỳ (Seasonality), và Nhiễu (Noise).

// Pipeline dự báo chuỗi thời gian bán hàng với SSA
var forecastingPipeline = mlContext.Forecasting.ForecastBySsa(
    outputColumnName: nameof(SalesPrediction.ForecastedSales),
    inputColumnName: nameof(SalesData.TotalSold),
    windowSize: 7,            // Chu kỳ phân tích 7 ngày
    seriesLength: 30,          // Độ dài chuỗi dữ liệu đầu vào
    trainSize: 90,             // Tập dữ liệu huấn luyện
    horizon: 7,                // Dự báo trước 7 ngày
    confidenceLevel: 0.95f,    // Độ tin cậy 95%
    confidenceLowerBoundColumn: nameof(SalesPrediction.LowerBoundSales),
    confidenceUpperBoundColumn: nameof(SalesPrediction.UpperBoundSales));

var forecaster = forecastingPipeline.Fit(salesDataView);

Testing và validation

Hệ thống trải qua kiểm thử tự động với xUnit và k6 load testing:

+----------------------------------------------------------------------+
| KẾT QUẢ KIỂM THỬ TẢI & CHẤT LƯỢNG                                   |
+----------------------------------------------------------------------+
| - Code Coverage (Unit/Integration Tests): 84.5%                      |
| - Stress Test: 1,200 Virtual Users (VU) duy trì trong 10 phút        |
| - Tỷ lệ lỗi (Error Rate): < 0.05%                                    |
| - P95 Latency: 142ms (API thường) | 280ms (ML Inference API)        |
+----------------------------------------------------------------------+

Đánh giá độ chính xác mô hình học máy:

Mô hình Thuật toán Chỉ số đánh giá chính Kết quả thực nghiệm
Recommendation Engine Matrix Factorization RMSE (Root Mean Squared Error) 1.12 - 1.45
$R^2$ (Coefficient of Determination) 0.31 - 0.34
Sales Forecasting Singular Spectrum Analysis MAE (Mean Absolute Error) 520 - 680 units
RMSE 710 - 795 units

Đổi mới và đóng góp

  1. Kiến trúc tích hợp Native In-Process ML: Loại bỏ hoàn toàn chi phí truyền thông liên tiến trình (IPC) và chuyển đổi JSON bằng cách nhúng trực tiếp PredictionEnginePool của ML.NET vào ASP.NET Core DI Container, giúp giảm độ trễ suy luận AI xuống dưới 15ms.
  2. Cơ chế gợi ý đa thuộc tính kết hợp độ tuổi: Cải tiến Collaborative Filtering thuần túy bằng việc nhúng thuộc tính nhân khẩu học (Demographics - Age Group), giảm thiểu ảnh hưởng của vấn đề khởi động lạnh (Cold-Start Problem) đối với người dùng mới.
  3. So sánh với các giải pháp hiện hành:
+-------------------------------------------------------------------------------+
| SO SÁNH HIỆU SUẤT KIẾN TRÚC                                                   |
+-----------------------------------+--------------------+----------------------+
| Tiêu chí                          | Kiến trúc Đồ án    | Monolith Django/PHP  |
+-----------------------------------+--------------------+----------------------+
| Thời gian phản hồi P99            | 185ms              | 520ms                |
| Mức độ chiếm dụng bộ nhớ (RAM)   | 1.2 GB (Toàn cụm)  | 3.4 GB               |
| Khả năng chịu lỗi khi chết 1 Node | Các node khác chạy | Sập toàn bộ hệ thống |
+-----------------------------------+--------------------+----------------------+

Hiệu quả cải thiện: Tốc độ xử lý truy vấn nhanh hơn 64%, tiết kiệm 60% tài nguyên phần cứng so với kiến trúc truyền thống cùng quy mô.


Ứng dụng thực tế và triển khai

Kịch bản vận hành thực tế

  • Phía khách hàng: Khách hàng 22 tuổi truy cập xem sản phẩm "Áo khoác Bomber". Hệ thống tự động kích hoạt pipeline gợi ý, trả về 6 sản phẩm đi kèm (quần Jean ống rộng, giày Sneaker) phù hợp với nhóm tuổi 18-25, nâng cao chỉ số Cross-selling.
  • Phía quản trị: Vào ngày 01 hàng tháng, hệ thống tự động quét dữ liệu bán lẻ lịch sử, chạy mô hình SSA và thông báo số lượng tồn kho đề xuất cho 30 ngày tiếp theo, giảm 35% nguy cơ đứt gãy nguồn cung.
+-----------------------------------------------------------------------------+
| KẾ HOẠCH TRIỂN KHAI HẠ TẦNG (DEPLOYMENT SPECIFICATIONS)                     |
+-----------------------------------------------------------------------------+
| - Containerization: Docker & Docker Compose đa dịch vụ                      |
| - Web Server: Kestrel Reverse Proxy qua Nginx SSL Termination               |
| - Minimum Specs: 2 vCPU, 4GB RAM, 50GB SSD Cloud Server                     |
| - CI/CD Pipeline: GitHub Actions tự động build, test và deploy              |
+-----------------------------------------------------------------------------+

Phân tích Chi phí - Lợi ích (ROI Analysis):

  • Chi phí hạ tầng cloud ước tính: $40 - $60/tháng.
  • Giá trị mang lại: Tăng 18% giá trị đơn hàng trung bình (AOV) nhờ gợi ý chính xác; cắt giảm 25% chi phí lưu kho thừa. Thời gian hoàn vốn đầu tư (ROI) ước tính trong vòng 6 đến 8 tháng.

Hạn chế và hướng phát triển

  • Hạn chế kỹ thuật:
    • Thuật toán Matrix Factorization vẫn cần tập dữ liệu tương tác ban đầu đủ lớn để đạt độ chính xác tối ưu.
    • Thuật toán SSA chỉ phản ánh biến động chuỗi thời gian dựa trên lịch sử nội tại, chưa tính đến các yếu tố nhiễu ngoại sinh đột biến (khuyến mãi đối thủ, khủng hoảng kinh tế, thời tiết cực đoan).
  • Hướng phát triển:
    • Tích hợp Large Language Model (LLM) Agent đóng vai trò chuyên gia tư vấn thời trang ảo (AI Stylist Chatbot) dựa trên chiều cao, cân nặng và form dáng người mặc.
    • Nâng cấp module thị giác máy tính với công nghệ Virtual Try-On (AR) cho phép thử trang phục qua Camera thời gian thực.
    • Chuyển đổi mô hình dữ liệu sang Event Sourcing hoàn chỉnh với Apache Kafka khi quy mô mở rộng trên 100,000 người dùng hoạt động hàng ngày (DAU).

Đối tượng hưởng lợi

+-----------------------------------------------------------------------------------+
| GIÁ TRỊ MANG LẠI CHO CÁC NHÓM ĐỐI TƯỢNG                                           |
+-------------------+---------------------------------------------------------------+
| Sinh viên CNTT    | Mã nguồn mẫu chuẩn Microservices, bài toán kết hợp ML.NET     |
| Lập trình viên    | Kiến trúc Clean Architecture, NServiceBus, Async EDA patterns |
| Chủ doanh nghiệp  | Giải pháp e-commerce hoàn chỉnh, tối ưu tồn kho và doanh số   |
| Nhà nghiên cứu    | Dữ liệu thực nghiệm về SSA và Matrix Factorization trong C#   |
+-------------------+---------------------------------------------------------------+

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

1. Yêu cầu hệ thống tối thiểu để triển khai ứng dụng là gì?

Hệ thống yêu cầu máy chủ Linux (Ubuntu 22.04 LTS) hoặc Windows Server có tối thiểu 2 vCPU, 4GB RAM, Docker Engine 24.x, .NET Runtime 8.0 và PostgreSQL 15+.

2. Mô hình gợi ý xử lý bài toán Cold-Start (người dùng hoàn toàn mới) như thế nào?

Đối với người dùng chưa có lịch sử mua sắm, hệ thống sử dụng thuộc tính độ tuổi (Age Group) thu thập khi đăng ký kết hợp với danh sách sản phẩm thịnh hành (Top Trending) trong cùng phân khúc nhân khẩu học để hiển thị danh mục gợi ý ban đầu.

3. Tại sao chọn ML.NET thay vì xây dựng Microservice AI bằng Python (FastAPI/Flask)?

ML.NET cho phép chạy trực tiếp mô hình máy học trong cùng quy trình quản lý bộ nhớ của .NET runtime, giảm thiểu chi phí serialize/deserialize dữ liệu qua HTTP giữa các ngôn ngữ, tiết kiệm tài nguyên máy chủ và đơn giản hóa quy trình CI/CD.

4. Hệ thống đảm bảo tính toàn vẹn dữ liệu đơn hàng giữa các microservices ra sao?

Dự án áp dụng cơ chế Outbox Pattern kết hợp Message Broker (NServiceBus) nhằm đảm bảo thông điệp tạo đơn và trừ tồn kho luôn được gửi đi một cách tin cậy (At-least-once delivery) mà không cần dùng khóa phân tán 2-Phase Commit (2PC) gây giảm hiệu năng.

5. Khả năng chịu tải và mở rộng (Scalability) của hệ thống đạt mức nào?

Nhờ thiết kế Stateless Services cho tầng API và tính phân tán của kiến trúc Microservices, hệ thống có thể mở rộng ngang (Horizontal Pod Autoscaling) không giới hạn trên môi trường Kubernetes để phục vụ hàng chục nghìn người dùng đồng thời.


Kết luận

Đồ án tốt nghiệp "Shop quần áo online tích hợp gợi ý sản phẩm và dự báo doanh số" đã chứng minh tính khả thi và hiệu quả vượt trội khi áp dụng các kỹ thuật công nghệ phần mềm tiên tiến vào lĩnh vực bán lẻ trực tuyến. Bằng sự kết hợp chặt chẽ giữa kiến trúc Microservices phân tán, thuật toán gợi ý Matrix Factorization và thuật toán dự báo chuỗi thời gian Singular Spectrum Analysis trên nền tảng .NET hiện đại, đề tài không chỉ giải quyết trọn vẹn bài toán vận hành thương mại điện tử mà còn cung cấp cơ sở thực nghiệm giá trị cho việc triển khai AI nhúng trong doanh nghiệp. Đây là tài liệu tham khảo chất lượng cao cho cộng đồng kỹ sư phần mềm, các nhà nghiên cứu ứng dụng và các doanh nghiệp đang tìm kiếm giải pháp chuyển đổi số toàn diện.