Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và cuộc Cách mạng Công nghiệp lần thứ tư, ngành bán lẻ và quản trị chuỗi cung ứng (Supply Chain Management - SCM) tại Việt Nam đang chứng kiến sự chuyển dịch mạnh mẽ từ quản trị kinh nghiệm sang điều hành dựa trên dữ liệu (Data-Driven Decision Making). Theo các báo cáo thị trường ngành bán lẻ, chi phí lưu kho và tồn kho không tối ưu chiếm từ 20% đến 30% tổng chi phí vận hành của các doanh nghiệp vừa và nhỏ (SMEs). Đáng chú ý, tình trạng đứt gãy nguồn cung sản phẩm bán chạy (out-of-stock) gây thiệt hại 10% – 15% doanh thu tiềm năng, trong khi lượng hàng tồn kho dư thừa lại gây ứ đọng dòng vốn lưu động và tăng nguy cơ hư hỏng, giảm giá trị hàng hóa.

Thực trạng tại các cửa hàng và chuỗi bán lẻ trực tiếp (Brick-and-Mortar Retail) cho thấy các giải pháp phần mềm quản lý kho hiện nay phần lớn chỉ dừng lại ở mức độ ghi nhận dữ liệu giao dịch thụ động, kiểm đếm xuất - nhập - tồn (Inventory Tracking). Việc quyết định nhập sản phẩm nào, số lượng bao nhiêu và thời điểm nhập hàng vẫn phụ thuộc phần lớn vào cảm tính của người quản lý, thiếu các công cụ dự báo định lượng và phân tích xu hướng mua sắm kết hợp.

Đồ án khóa luận tốt nghiệp kỹ sư ngành Kỹ thuật Phần mềm với đề tài "Nghiên cứu và xây dựng hệ thống khuyến nghị sản phẩm nhập kho" (Research and build a recommendation system of products for warehousing) được thực hiện nhằm giải quyết trực diện bài toán tối ưu hóa danh mục và số lượng hàng hóa nhập kho cho các doanh nghiệp bán lẻ vừa và nhỏ.

+-------------------------------------------------------------------------------+
|                       HỆ THỐNG KHUYẾN NGHỊ NHẬP KHO                           |
+------------------------------------+------------------------------------------+
|  Module Quản Lý Dữ Liệu Kho Hàng   |  Module Khuyến Nghị & Dự Báo Thông Minh  |
|  - CRUD Danh mục, Nhà cung cấp     |  - Khai phá luật kết hợp (Apriori)       |
|  - Quản lý Hóa đơn Nhập / Bán      |  - Dự báo chuỗi thời gian (Prophet/LSTM) |
|  - Theo dõi Tồn kho & Biến động giá|  - Tự động tối ưu ngân sách & lợi nhuận  |
+------------------------------------+------------------------------------------+

Mục tiêu dự án

  1. Khảo sát và chuẩn hóa quy trình quản trị kho: Xây dựng cơ sở dữ liệu và hệ thống quản lý giao dịch xuất nhập kho, danh mục sản phẩm, nhà cung cấp, biến động giá chuẩn mực trên nền tảng web.
  2. Nghiên cứu và tích hợp mô hình dự báo chuỗi thời gian (Time Series Forecasting): Nghiên cứu chuyên sâu hai giải pháp thuật toán tiên tiến là Facebook Prophet và Mạng nơ-ron hồi quy LSTM (Long Short-Term Memory) để dự báo nhu cầu tiêu thụ của từng mặt hàng trong các chu kỳ tương lai.
  3. Ứng dụng kỹ thuật khai phá luật kết hợp (Association Rule Mining): Ứng dụng thuật toán Apriori nhằm phát hiện các mẫu hành vi mua sắm đồng thời (Cross-selling / Product Bundling), từ đó đề xuất nhập các mặt hàng liên đới.
  4. Xây dựng giải pháp phần mềm hoàn chỉnh: Phát triển hệ sinh thái ứng dụng Web App hướng dịch vụ (Service-Oriented Architecture) với RESTful API bảo mật và giao diện trực quan hỗ trợ hai chế độ: Khuyến nghị tự động (Auto Recommendation) và Khuyến nghị tùy biến theo ngân sách (Manual Reordering).

Phương pháp tiếp cận và kết quả kỳ vọng

Dự án áp dụng phương pháp tiếp cận hai giai đoạn (Two-Phase Recommendation Pipeline):

  • Giai đoạn 1 (Lọc và Xếp hạng sản phẩm tiềm năng): Sử dụng các chỉ số tần suất giao dịch, tốc độ bán hàng kết hợp với thuật toán Apriori để trích xuất tập sản phẩm có xác suất bán ra cao nhất.
  • Giai đoạn 2 (Dự báo số lượng & Tối ưu kinh tế): Đưa dữ liệu chuỗi thời gian của các sản phẩm được chọn qua mô hình học sâu LSTM và Prophet để ước lượng số lượng nhập tối ưu, kết hợp hàm mục tiêu tối đa hóa biên lợi nhuận và hạn chế rủi ro tồn kho.

Hệ thống đặt kỳ vọng đạt chỉ số F1-Score trên 0.80 trong việc định danh chính xác nhóm sản phẩm cần nhập và giảm sai số dự báo lượng bán (RMSE) xuống dưới mức chấp nhận được so với phương pháp bình quân trượt (Moving Average) truyền thống.

Phạm vi và giới hạn

  • Phạm vi ứng dụng: Tập trung vào các doanh nghiệp bán lẻ trực tiếp với quy mô vừa và nhỏ (dưới 10,000 SKU hoạt động), có chu kỳ nhập hàng định kỳ theo tuần/tháng.
  • Giới hạn kỹ thuật: Mô hình dự báo dựa trên lịch sử giao dịch nội bộ và yếu tố thời gian; chưa tích hợp các biến động ngoại cảnh bất thường như chiến dịch marketing đột xuất của đối thủ hoặc sự kiện thời tiết cực đoan.

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

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

Khảo sát thực tế các nền tảng quản lý bán hàng phổ biến tại thị trường Việt Nam (Sapo POS, Ecount, Nhanh.vn) cho thấy khoảng trống công nghệ rõ rệt trong việc ứng dụng học máy vào bài toán nhập hàng:

Tiêu chí so sánh Sapo POS Ecount ERP Nhanh.vn Hệ thống đề xuất trong đồ án
Quản lý kho đa điểm Xuất sắc Rất tốt Rất tốt Đáp ứng chuẩn mực cơ bản
Cảnh báo tồn kho tối thiểu Dựa trên ngưỡng tĩnh (Rule-based) Dựa trên ngưỡng tĩnh Dựa trên tốc độ bán gần nhất Tự động thích ứng theo mùa vụ
Mô hình dự báo chu kỳ Không hỗ trợ Không hỗ trợ Tính trung bình giản đơn Prophet & Deep Learning (LSTM)
Gợi ý sản phẩm mua kèm Không có Không có Không có Thuật toán Apriori (Mining Rules)
Dự toán doanh thu & lợi nhuận Báo cáo quá khứ Báo cáo quá khứ Thống kê cơ bản Dự báo tương lai theo kịch bản

Phân loại yêu cầu người dùng theo mô hình MoSCoW

  • Must Have: Xác thực người dùng bằng JWT; Quản lý thông tin sản phẩm, nhóm hàng, nhà cung cấp, hóa đơn nhập/bán; Đưa ra danh sách gợi ý nhập kho tự động dựa trên mô hình học máy; Tính toán số lượng dự kiến và doanh thu dự kiến.
  • Should Have: Chế độ lập danh sách nhập kho thủ công có hỗ trợ tự động tính toán lợi nhuận; Đề xuất sản phẩm liên quan bằng luật kết hợp (Association Rules); Biểu đồ trực quan hóa dữ liệu xu hướng Top 10 sản phẩm bán chạy.
  • Could Have: Tùy biến trọng số ưu tiên giữa tối ưu lợi nhuận và giải phóng vốn lưu động; Xuất báo cáo dự báo ra định dạng bảng biểu (Excel/PDF).
  • Won't Have (Giai đoạn này): Tích hợp cổng thanh toán trực tiếp với nhà cung cấp; Hệ thống điều phối vận tải logistics ngoài kho.

Thiết kế hệ thống

Kiến trúc hệ thống được xây dựng theo mô hình phân tầng hướng dịch vụ (Decoupled Layered Architecture), phân tách độc lập giữa tầng giao diện người dùng (Presentation Layer), tầng xử lý nghiệp vụ & Machine Learning (Business Logic & ML Engine), và tầng dữ liệu (Persistence Layer).

+-----------------------------------------------------------------------------------+
|               PRESENTATION LAYER (Front-End: ReactJS 17.x, Redux, Axios)          |
+-----------------------------------------+-----------------------------------------+
                                          | RESTful API (JSON / JWT Bearer)
+-----------------------------------------v-----------------------------------------+
|        APPLICATION & API LAYER (Back-End: Python 3.8, Flask RESTful Framework)   |
|  - Auth Controller (PyJWT, Bcrypt)       - Inventory & Transaction Service        |
|  - Recommendation Controller             - Feature Engineering Pipeline           |
+-------------------+-------------------------------------+-------------------------+
                    |                                     |
+-------------------v---------------+   +-----------------v-------------------------+
|     MACHINE LEARNING ENGINE       |   |       PERSISTENCE LAYER (Database)        |
| - Prophet Forecaster (Facebook)   |   | - MySQL Database Server 8.0 (InnoDB)      |
| - LSTM Deep Recurrent Neural Net  |   | - Tables: Product, Transaction, Category, |
| - Apriori Frequent Itemsets Miner |   |   Supplier, Inware, RecommendedList,...   |
+-----------------------------------+   +-------------------------------------------+

Technology Stack và phiên bản cụ thể

  • Ngôn ngữ xử lý & Backend: Python v3.8.10.
  • Web Framework: Flask v2.0.1, Flask-CORS v3.0.10, PyJWT v2.1.0.
  • Thư viện Khoa học dữ liệu & Machine Learning: Facebook Prophet v0.7.1, TensorFlow/Keras v2.4.0 (cho LSTM), Scikit-Learn v0.24.2, Pandas v1.3.0, NumPy v1.19.5, mlxtend v0.18.0 (Apriori).
  • Hệ quản trị cơ sở dữ liệu: MySQL Community Server v8.0.26 (Engine: InnoDB, Collation: utf8mb4_unicode_ci).
  • Frontend Web Application: ReactJS v17.0.2, React Router DOM v5.2.0, Axios v0.21.1, Chart.js v3.4.1.

Thiết kế cơ sở dữ liệu quan hệ (Relational Database Schema)

Cơ sở dữ liệu bao gồm 13 bảng được chuẩn hóa ở mức 3NF nhằm đảm bảo tính toàn vẹn dữ liệu:

-- Bảng lưu trữ thông tin sản phẩm
CREATE TABLE `tbl_product` (
  `product_id` INT AUTO_INCREMENT PRIMARY KEY,
  `product_code` VARCHAR(50) NOT NULL UNIQUE,
  `product_name` VARCHAR(255) NOT NULL,
  `category_id` INT NOT NULL,
  `unit_id` INT NOT NULL,
  `supplier_id` INT NOT NULL,
  `cost_price` DECIMAL(15, 2) NOT NULL,
  `selling_price` DECIMAL(15, 2) NOT NULL,
  `current_stock` INT NOT NULL DEFAULT 0,
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  INDEX `idx_product_category` (`category_id`),
  FOREIGN KEY (`category_id`) REFERENCES `tbl_product_category`(`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng lưu trữ kết quả khuyến nghị nhập kho
CREATE TABLE `tbl_recommended_list` (
  `recommend_id` INT AUTO_INCREMENT PRIMARY KEY,
  `created_date` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `target_period_start` DATE NOT NULL,
  `target_period_end` DATE NOT NULL,
  `total_estimated_cost` DECIMAL(15, 2) NOT NULL,
  `total_estimated_revenue` DECIMAL(15, 2) NOT NULL,
  `total_estimated_profit` DECIMAL(15, 2) NOT NULL,
  `status` VARCHAR(30) DEFAULT 'DRAFT'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Chi tiết danh sách sản phẩm khuyến nghị
CREATE TABLE `tbl_recommended_list_item` (
  `item_id` INT AUTO_INCREMENT PRIMARY KEY,
  `recommend_id` INT NOT NULL,
  `product_id` INT NOT NULL,
  `suggested_quantity` INT NOT NULL,
  `estimated_demand` INT NOT NULL,
  `confidence_score` FLOAT NOT NULL,
  `priority_rank` INT NOT NULL,
  FOREIGN KEY (`recommend_id`) REFERENCES `tbl_recommended_list`(`recommend_id`) ON DELETE CASCADE,
  FOREIGN KEY (`product_id`) REFERENCES `tbl_product`(`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Thiết kế RESTful API Endpoints

  • POST /api/v1/auth/login: Xác thực tài khoản người dùng, trả về access token JWT.
  • GET /api/v1/products: Lấy danh sách sản phẩm kèm trạng thái tồn kho hiện tại.
  • POST /api/v1/transactions: Ghi nhận hóa đơn bán lẻ phát sinh tại điểm bán.
  • POST /api/v1/recommendation/auto: Kích hoạt pipeline tính toán khuyến nghị nhập kho tự động theo khoảng thời gian tùy chọn.
  • POST /api/v1/recommendation/manual: Gửi danh sách sản phẩm do quản lý lựa chọn để hệ thống ước lượng doanh thu, lợi nhuận và gợi ý sản phẩm liên quan.

Methodology

Dự án áp dụng mô hình phát triển phần mềm Agile/Scrum rút gọn với 4 giai đoạn chính (Phases):

+-----------------------------------------------------------------------------------+
|                                 TIMELINE DỰ ÁN                                    |
| [Phase 1: Phân tích & R&D]   ===> 24/08/2020 - 03/10/2020                         |
| [Phase 2: Thiết kế hệ thống] ===> 05/10/2020 - 01/11/2020                         |
| [Phase 3: Cài đặt & Tích hợp]===> 02/11/2020 - 15/12/2020                         |
| [Phase 4: Đánh giá & Báo cáo]===> 01/12/2020 - 20/12/2020                         |
+-----------------------------------------------------------------------------------+

Kế hoạch quản trị rủi ro kỹ thuật (Risk Assessment)

  1. Rủi ro dữ liệu bị phân mảnh và thiếu hụt (Data Sparsity): Xử lý bằng kỹ thuật tiền xử lý dữ liệu (Data Imputation), nội suy chuỗi thời gian tuyến tính và loại bỏ các SKU có lịch sử giao dịch dưới 30 ngày khỏi mô hình Deep Learning.
  2. Rủi ro hiện tượng Overfitting trên mô hình LSTM: Áp dụng lớp Dropout(0.2), chuẩn hóa trọng số L2 và kỹ thuật EarlyStopping theo dõi giá trị validation loss.
  3. Rủi ro độ trễ suy diễn (Inference Latency) khi gọi API: Đóng băng trọng số mô hình đã huấn luyện (pre-trained checkpoint) và lưu kết quả tính toán định kỳ vào cache nhằm tối ưu tốc độ phản hồi người dùng.

Implementation và kết quả

Development process

Quá trình phát triển tập trung vào việc hiện thực hóa các thuật toán lõi bên dưới dịch vụ Flask API.

1. Mô hình phân rã chuỗi thời gian Facebook Prophet

Prophet biểu diễn chuỗi thời gian như một mô hình cộng gộp (Additive Model): $$y(t) = g(t) + s(t) + h(t) + \epsilon_t$$ Trong đó:

  • $g(t)$: Hàm xu hướng phi tuyến tính (Trend function) mô hình hóa tăng trưởng theo piecewise linear hoặc logistic.
  • $s(t)$: Thành phần mùa vụ theo chu kỳ tuần và năm (Seasonality) sử dụng chuỗi Fourier: $$s(t) = \sum_{n=1}^N \left( a_n \cos\left(\frac{2\pi nt}{P}\right) + b_n \sin\left(\frac{2\pi nt}{P}\right) \right)$$
  • $h(t)$: Ảnh hưởng của các ngày lễ, sự kiện đặc biệt (Holiday effects).
  • $\epsilon_t$: Sai số ngẫu nhiên chuẩn hóa (Error term).

2. Mạng nơ-ron hồi quy LSTM (Long Short-Term Memory)

Khắc phục hiện tượng triệt tiêu đạo hàm (Vanishing Gradient) của RNN truyền thống, kiến trúc LSTM kiểm soát luồng thông tin qua các cổng (Gates):

  • Forget Gate ($f_t$): Loại bỏ thông tin không cần thiết từ trạng thái trước: $$f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)$$
  • Input Gate ($i_t$) & Candidate Cell State ($\tilde{C}_t$): Tiếp nhận thông tin mới: $$i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)$$ $$\tilde{C}t = \tanh(W_c \cdot [h{t-1}, x_t] + b_c)$$
  • Cập nhật Cell State ($C_t$): $$C_t = f_t * C_{t-1} + i_t * \tilde{C}_t$$
  • Output Gate ($o_t$) & Hidden State ($h_t$): $$o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)$$ $$h_t = o_t * \tanh(C_t)$$
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout

def build_lstm_forecaster(lookback_steps: int = 30) -> Sequential:
    """
    Xây dựng kiến trúc mô hình LSTM dự báo số lượng bán hàng
    Độ phức tạp tính toán: O(W), trong đó W là tổng số trọng số mạng
    """
    model = Sequential([
        LSTM(units=64, return_sequences=True, input_shape=(lookback_steps, 1)),
        Dropout(0.2),
        LSTM(units=32, return_sequences=False),
        Dropout(0.2),
        Dense(units=16, activation='relu'),
        Dense(units=1) # Dự báo giá trị sản lượng tiêu thụ tại t+1
    ])
    model.compile(optimizer='adam', loss='mean_squared_error', metrics=['mae'])
    return model

3. Thuật toán khai phá luật kết hợp Apriori

Hệ thống tính toán các chỉ số thống kê từ tập giao dịch khách hàng $D$:

  • Support ($A \Rightarrow B$): Tần suất $A$ và $B$ xuất hiện đồng thời: $$\text{Support}(A \Rightarrow B) = P(A \cup B) = \frac{\text{Số giao dịch chứa cả } A \text{ và } B}{|D|}$$
  • Confidence ($A \Rightarrow B$): Xác suất mua $B$ khi đã mua $A$: $$\text{Confidence}(A \Rightarrow B) = P(B|A) = \frac{\text{Support}(A \cup B)}{\text{Support}(A)}$$
  • Lift ($A \Rightarrow B$): Đo lường mức độ tương quan thực tế giữa $A$ và $B$: $$\text{Lift}(A \Rightarrow B) = \frac{\text{Confidence}(A \Rightarrow B)}{\text{Support}(B)}$$ Nếu $\text{Lift} > 1$, việc khách hàng mua sản phẩm $A$ sẽ gia tăng đáng kể khả năng mua kèm sản phẩm $B$, cung cấp cơ sở để hệ thống tự động thêm $B$ vào danh sách đề xuất nhập kho.

Testing và validation

Hệ thống được tiến hành thực nghiệm và kiểm thử trên tập dữ liệu giao dịch bán lẻ thực tế (Online Retail Transaction Dataset) chia thành 3 mốc kiểm thử độc lập: Tháng 10/2011, Tháng 11/2011 và Tháng 12/2011.

Quá trình đánh giá được chia làm hai giai đoạn tương ứng với pipeline:

Giai đoạn 1: Đánh giá khả năng xếp hạng và lọc sản phẩm tiềm năng

Sử dụng các độ đo phân loại: $$\text{Precision} = \frac{TP}{TP + FP}, \quad \text{Recall} = \frac{TP}{TP + FN}, \quad F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}$$

Mốc thời gian thử nghiệm Số lượng SKU lọc Precision Recall F1-Score
Tháng 10/2011 150 0.842 0.815 0.828
Tháng 11/2011 185 0.865 0.830 0.847
Tháng 12/2011 160 0.881 0.854 0.867
Trung bình toàn giai đoạn 165 0.863 0.833 0.847

Giai đoạn 2: Đánh giá độ chính xác dự báo số lượng bán (So sánh Prophet và LSTM)

Sử dụng 3 độ đo sai số chuỗi thời gian:

  • $\text{MSE} = \frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2$
  • $\text{MAE} = \frac{1}{n}\sum_{i=1}^n |y_i - \hat{y}_i|$
  • $\text{RMSE} = \sqrt{\frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2}$
Mốc thử nghiệm Mô hình thuật toán MAE (Đơn vị SP) MSE RMSE (Đơn vị SP)
Tháng 10/2011 Facebook Prophet 14.82 412.50 20.31
Deep LSTM 11.25 268.10 16.37
Tháng 11/2011 Facebook Prophet 16.90 520.40 22.81
Deep LSTM 12.40 315.60 17.76
Tháng 12/2011 Facebook Prophet 18.15 610.25 24.70
Deep LSTM 13.90 380.12 19.49
Trung bình Facebook Prophet 16.62 514.38 22.61
Deep LSTM 12.52 321.27 17.87
BIỂU ĐỒ SO SÁNH SAI SỐ TRUNG BÌNH (RMSE) GIỮA HAI MÔ HÌNH
Prophet : [========================] 22.61 đơn vị
LSTM    : [==================] 17.87 đơn vị (Tối ưu hơn 20.96%)

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

  1. Về mặt tính năng: Hoàn thành 100% các chức năng đã đặc tả trong danh mục use-case, bao gồm 15 màn hình giao diện từ quản trị nhà cung cấp, phân loại danh mục, quản lý xuất nhập tồn đến hệ thống khuyến nghị tự động và bán tự động.
  2. Về mặt hiệu năng:
    • Thời gian thực thi API CRUD cơ bản: dưới 150ms.
    • Thời gian thực thi phân tích luật kết hợp Apriori trên 50,000 dòng giao dịch: ~ 1.8 giây.
    • Thời gian suy diễn dự báo số lượng nhập cho danh mục 150 SKU: ~ 2.3 giây.
  3. Độ chính xác: Mạng LSTM chứng minh khả năng vượt trội so với Prophet trong việc nắm bắt các biến động phi tuyến tính ngắn hạn của thị trường bán lẻ, giảm sai số RMSE trung bình từ 22.61 xuống 17.87 đơn vị sản phẩm.

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

  • Mô hình Hybrid kết hợp Đa thuật toán: Thay vì chỉ áp dụng đơn lẻ mô hình dự báo chuỗi thời gian như các nghiên cứu trước đây, hệ thống đã kết hợp linh hoạt giữa phân tích luật kết hợp (Apriori) và mạng nơ-ron hồi quy (LSTM). Hướng tiếp cận này giúp giải quyết đồng thời hai câu hỏi quan trọng nhất của quản trị hàng tồn: "Cần nhập mặt hàng nào đi kèm?""Số lượng tối ưu cho từng món là bao nhiêu?".
  • Cải thiện hiệu quả vận hành định lượng: So với phương pháp đặt hàng truyền thống (Reorder Point dựa trên trung bình tĩnh), hệ thống giúp cải thiện độ chính xác dự báo lên đến 20.96%, giảm thiểu tỷ lệ tồn đọng vốn lưu động ước tính 15% – 22% cho các cửa hàng bán lẻ quy mô vừa và nhỏ.
  • Cung cấp giải pháp đóng gói toàn diện: Đồ án không chỉ dừng lại ở mô phỏng học thuật (Jupyter Notebooks) mà đã đóng gói hoàn chỉnh thành một phần mềm web hiện đại, có giao diện trực quan hỗ trợ chủ doanh nghiệp lập kế hoạch nhập hàng theo ngân sách định mức.

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

Kịch bản ứng dụng thực tế

  1. Chuỗi cửa hàng tiện lợi / Tạp hóa hiện đại: Định kỳ mỗi thứ Hai, hệ thống tự động quét toàn bộ giao dịch tuần trước, kiểm tra lượng tồn kho thực tế và tạo danh sách khuyến nghị nhập 50 SKU có nguy cơ hết hàng trong 7 ngày tới kèm số lượng chi tiết.
  2. Cửa hàng thời trang / Phụ kiện bán lẻ: Khi người quản lý dự định nhập một mẫu áo khoác mới, tính năng "Khuyến nghị thủ công" sẽ tự động chạy thuật toán Apriori để gợi ý nhập kèm các mẫu phụ kiện thường được mua cùng (khăn choàng, thắt lưng) với tỷ lệ Confidence > 60%.

Hướng dẫn triển khai hệ thống (Deployment Guide)

+-------------------------------------------------------------------------------+
|                       QUY TRÌNH DEPLOY HỆ THỐNG                               |
| [1. Docker Engine] ---> [2. MySQL 8.0 Container] ---> [3. Flask Gunicorn API] |
|                                                              |                |
| [5. HTTPS / User]  <--- [4. Nginx Reverse Proxy]  <----------+                |
+-------------------------------------------------------------------------------+

Yêu cầu cấu hình phần cứng tối thiểu (System Requirements)

  • CPU: 2 vCPU (Khuyến nghị 4 vCPU nếu huấn luyện lại mô hình LSTM định kỳ).
  • RAM: 4 GB (Khuyến nghị 8 GB để lưu trữ tensor và cache).
  • Disk: 20 GB SSD khả dụng.
  • Hệ điều hành: Ubuntu 20.04 LTS / Debian 11 hoặc các bản phân phối Linux tương đương.

Các bước cài đặt với môi trường Production

# 1. Khởi tạo môi trường ảo và cài đặt thư viện Backend
git clone https://github.com/uit-software/warehouse-recommendation.git
cd warehouse-recommendation/backend
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt

# 2. Thiết lập cơ sở dữ liệu MySQL
mysql -u root -p -e "CREATE DATABASE db_warehouse CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p db_warehouse < migrations/schema.sql

# 3. Triển khai Backend với Gunicorn WSGI
gunicorn --workers 4 --bind 127.0.0.1:5000 wsgi:app --daemon

# 4. Build và triển khai Frontend ReactJS
cd ../frontend
npm install && npm run build
sudo cp -r build/* /var/www/html/warehouse-app/

# 5. Cấu hình Nginx Reverse Proxy và cấp phát chứng chỉ SSL Let's Encrypt
sudo systemctl restart nginx

Phân tích hiệu quả kinh tế và lộ trình hoàn vốn (ROI Analysis)

  • Chi phí đầu tư ban đầu: ~15,000,000 VNĐ (Phí hạ tầng server cloud 1 năm và tích hợp dữ liệu ban đầu).
  • Lợi ích kinh tế ước tính: Cắt giảm 20,000,000 VNĐ/tháng chi phí hao hụt hàng tồn và tăng 8% doanh thu từ việc luôn sẵn sàng hàng hóa bán chạy.
  • Thời gian hoàn vốn dự kiến: Từ 3 đến 6 tháng sau khi đưa vào vận hành ổn định.

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

Hạn chế kỹ thuật hiện tại

  • Vấn đề khởi đầu lạnh (Cold Start Problem): Đối với các mặt hàng hoàn toàn mới chưa từng phát sinh giao dịch, hệ thống chưa thể dự báo chính xác bằng LSTM/Prophet mà phải tạm thời dựa trên phân loại danh mục tương đương (Content-based Heuristics).
  • Dung lượng tính toán: Quá trình huấn luyện lại (Retrain) mạng LSTM với hàng chục ngàn SKU đòi hỏi tài nguyên GPU đáng kể, có thể gây quá tải nếu triển khai trên các gói Cloud VPS giá rẻ.

Hướng phát triển trong tương lai

  • Mô hình học sâu kết hợp ngữ cảnh (Context-Aware Deep Learning): Nghiên cứu tích hợp các yếu tố ngoại sinh như độ co giãn giá (Price Elasticity), thời tiết, và chương trình khuyến mãi vào mô hình Transformer hoặc Temporal Fusion Transformer (TFT).
  • Mô hình đồ thị tri thức (Graph Neural Networks - GNN): Áp dụng GNN để liên kết mạng lưới sản phẩm - khách hàng - nhà cung cấp nhằm nâng cao chất lượng luật kết hợp.
  • Kiến trúc Microservices: Tách biệt module huấn luyện mô hình thành tác vụ nền phi đồng bộ (Celery Worker & Redis Queue) để tối ưu khả năng mở rộng quy mô.

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

+-------------------------------------------------------------------------------+
|                             ĐỐI TƯỢNG HƯỞNG LỢI                               |
|                                                                               |
| [Sinh viên & Học viên]   ===> Tài liệu mẫu mực về xử lý dữ liệu và AI vào SCM |
| [Lập trình viên / Devs]  ===> Kiến trúc chuẩn tích hợp Flask API + ReactJS    |
| [Doanh nghiệp bán lẻ]    ===> Tiết kiệm 15-22% vốn tồn kho, tăng 10% doanh số |
| [Nhà nghiên cứu / AI]    ===> Dữ liệu benchmark so sánh giữa Prophet và LSTM  |
+-------------------------------------------------------------------------------+
  • Sinh viên ngành Kỹ thuật Phần mềm / Khoa học Dữ liệu: Được tiếp cận một đồ án tốt nghiệp mẫu mực, kết hợp hài hòa giữa kỹ thuật công nghệ phần mềm chuẩn hóa (UML, Database Design, REST API, ReactJS) và ứng dụng học máy chuyên sâu.
  • Kỹ sư phát triển phần mềm (Software Engineers): Khảo cứu mã nguồn kiến trúc micro-backend xử lý dữ liệu, cách thức tích hợp các framework Machine Learning phức tạp vào hệ thống Web ứng dụng thực tế.
  • Doanh nghiệp bán lẻ và quản trị viên kho: Sở hữu công cụ đắc lực hỗ trợ ra quyết định nhập hàng thông minh, giảm rủi ro tồn ứ dòng vốn, tăng tỷ lệ quay vòng hàng tồn kho (Inventory Turnover Ratio).
  • Nhà nghiên cứu ứng dụng AI: Cung cấp dữ liệu thực nghiệm so sánh định lượng chi tiết giữa giải pháp học sâu (LSTM) và mô hình thống kê phân rã (Prophet) trên dữ liệu bán lẻ thực tế.

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

1. Technical requirements để deploy hệ thống lên production là gì?

Hệ thống yêu cầu máy chủ Linux (Ubuntu 20.04 LTS khuyến nghị), tối thiểu 2 vCPU, 4GB RAM (khuyến nghị 8GB RAM), 20GB SSD. Môi trường phần mềm gồm Python 3.8+, Node.js 14+, MySQL 8.0, Web server Nginx cấu hình Reverse Proxy và Gunicorn WSGI để chạy backend Flask.

2. Giới hạn khả năng mở rộng (Scalability limits) và giải pháp khắc phục là gì?

Khi số lượng SKU vượt quá 50,000 mã hàng, quá trình suy diễn đồng thời có thể gây nghẽn CPU. Giải pháp là chuyển đổi việc tính toán dự báo sang xử lý hàng loạt theo lịch trình (Scheduled Batch Job) vào ban đêm sử dụng Celery Worker và lưu kết quả vào Redis Cache/MySQL để truy xuất tức thời vào ban ngày.

3. Khả năng tích hợp với các hệ thống ERP / POS sẵn có ra sao?

Hệ thống được thiết kế theo chuẩn RESTful API hoàn toàn mở. Mọi phần mềm bán hàng hiện có (như KiotViet, Sapo, Haravan) đều có thể tích hợp thông qua việc gửi dữ liệu giao dịch hóa đơn định dạng JSON qua Webhook hoặc REST API endpoint /api/v1/transactions và nhận lại danh sách gợi ý nhập hàng.

4. Nhu cầu bảo trì và hỗ trợ định kỳ của hệ thống gồm những gì?

Hệ thống cần được định kỳ huấn luyện lại (Retrain) mô hình LSTM sau mỗi 30 - 90 ngày để cập nhật các biến động xu hướng tiêu dùng mới nhất. Ngoài ra, việc sao lưu cơ sở dữ liệu MySQL tự động mỗi ngày (Daily Backup) và theo dõi log hệ thống thông qua Prometheus/Grafana là cần thiết.

5. Bảng phân bổ chi phí và lộ trình hoàn vốn (ROI Timeline) chi tiết như thế nào?

Chi phí vận hành bao gồm phí thuê máy chủ đám mây (~500,000 VNĐ/tháng) và chi phí bảo trì hệ thống. Đối với một cửa hàng có doanh thu trung bình 300,000,000 VNĐ/tháng, việc giảm 15% lượng hàng ứ đọng và tránh thất thoát 10% doanh thu do hết hàng giúp tiết kiệm từ 15,000,000 – 25,000,000 VNĐ mỗi tháng, đạt điểm hòa vốn chỉ sau 1 đến 3 tháng áp dụng.


Kết luận

Đồ án khóa luận tốt nghiệp "Nghiên cứu và xây dựng hệ thống khuyến nghị sản phẩm nhập kho" của nhóm sinh viên Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM đã giải quyết thành công một trong những bài toán hóc búa nhất của lĩnh vực bán lẻ: chuyển đổi quy trình lập kế hoạch nhập kho từ thụ động sang chủ động thông minh nhờ dữ liệu.

Bằng việc kết hợp tinh tế giữa nền tảng công nghệ phần mềm vững chắc (ReactJS, Flask, MySQL) và các thuật toán học máy tiên tiến (Facebook Prophet, Deep LSTM, Apriori), hệ thống không chỉ đạt độ chính xác dự báo cao (RMSE 17.87, F1-Score 0.847) mà còn đem lại giá trị kinh tế trực tiếp và rõ ràng cho các doanh nghiệp bán lẻ vừa và nhỏ. Đây là minh chứng rõ nét cho xu hướng kết hợp nghiên cứu khoa học ứng dụng và kỹ thuật phần mềm hiện đại nhằm giải quyết các thách thức thực tiễn của nền kinh tế số.