Giới thiệu dự án

Thương mại điện tử ngành thời trang và giày dép (Footwear E-commerce) tại Việt Nam đang chứng kiến tốc độ tăng trưởng kép hàng năm (CAGR) đạt mức 15.2% trong giai đoạn 2021–2025. Nhu cầu sở hữu các sản phẩm giày thể thao (sneakers), phiên bản giới hạn (limited editions) và giày thời trang gia tăng đột biến, đòi hỏi các nền tảng bán lẻ trực tuyến phải đáp ứng khả năng tương tác tức thì, cung cấp dữ liệu biến thể phức tạp (kích thước, màu sắc, tình trạng tồn kho) và cá nhân hóa trải nghiệm khách hàng.

Tuy nhiên, các hệ thống bán lẻ trực tuyến truyền thống đối mặt với nhiều điểm nghẽn kỹ thuật:

  • Kiến trúc nguyên khối (Monolithic) gây nghẽn cổ chai khi tải lượng truy cập lớn, thời gian phản hồi trang (TTFB) cao vượt quá 2.5 giây.
  • Quản lý dữ liệu quan hệ giữa sản phẩm, size giày và hình ảnh chi tiết thường xuyên xảy ra tình trạng bất đồng bộ tồn kho (race conditions).
  • Thiếu các công cụ tự động hóa chăm sóc khách hàng và gợi ý thông minh, dẫn đến tỷ lệ rời bỏ giỏ hàng (cart abandonment rate) lên đến 68.8%.
  • Tích hợp thanh toán quốc tế và quản lý dòng tiền trực tuyến còn nhiều rào cản kỹ thuật.

Đề tài "Xây dựng website bán giày với ReactJS và Spring Boot" do nhóm sinh viên Hoàng Quốc Việt và Nguyễn Đặng Khánh Văn (Khoa Đào tạo Chất lượng cao – Trường Đại học Sư phạm Kỹ thuật TP.HCM) thực hiện dưới sự hướng dẫn của ThS. Lê Thị Minh Châu, nhằm giải quyết triệt để các hạn chế trên thông qua việc phân tách hoàn toàn tầng Frontend (SPA) và Backend (RESTful APIs), kết hợp trí tuệ nhân tạo.

                  KIẾN TRÚC TỔNG THỂ HỆ THỐNG
+----------------------------------------------------------------+
|                   Client Layer (Single Page App)              |
|        ReactJS 18 + Redux State Management + Bootstrap 5       |
+-------------------------------+--------------------------------+
                                | RESTful HTTPS / JSON
+-------------------------------v--------------------------------+
|                    Application Layer (Spring Boot 2.7)         |
|  [Spring Security + JWT]   [Spring Data JPA]   [Hibernate ORM] |
+---------------+-------------------------------+----------------+
                |                               |
+---------------v----------------+  +-----------v----------------+
|        AI & Serverless         |  |      Data Persistence      |
|  - Scikit-Learn (Cosine Sim)   |  |   PostgreSQL Database      |
|  - Amazon Lex + AWS Lambda     |  |   (ACID Transactions)      |
+--------------------------------+  +----------------------------+

Mục tiêu dự án

  1. Xây dựng kiến trúc Single Page Application (SPA) hiệu năng cao, giảm thời gian chuyển trang xuống dưới 200ms.
  2. Thiết kế hệ thống cơ sở dữ liệu quan hệ chuẩn hóa trên PostgreSQL để xử lý chính xác cấu trúc dữ liệu đa biến thể (Product, Size, Image, LineItem).
  3. Tích hợp thuật toán học máy Content-Based Filtering dựa trên mô hình không gian vector (Vector Space Model) để cá nhân hóa đề xuất sản phẩm.
  4. Triển khai Chatbot thông minh xử lý ngôn ngữ tự nhiên (NLU) không máy chủ (Serverless) sử dụng Amazon Lex và AWS Lambda.
  5. Hiện thực hóa cổng thanh toán trực tuyến PayPal REST SDK và hệ thống theo dõi doanh thu đa chiều theo ngày/tháng/năm.

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

  • Phạm vi: Ứng dụng web thương mại điện tử chuyên biệt ngành giày, phân quyền 3 tác tử: Khách hàng (User), Quản trị viên (Admin), Kiểm duyệt viên (Moderator).
  • Giới hạn: Tập trung vào môi trường Web Responsive; hệ thống tính phí vận chuyển và thời gian giao hàng tích hợp theo thuật toán nội bộ mô phỏng dữ liệu địa chỉ; cơ chế thanh toán sandbox PayPal phục vụ kiểm thử giao dịch tài chính.

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 thương mại điện tử giày dép hàng đầu (KingShoes, Xshop, Nike VN) chỉ ra các ưu nhược điểm kỹ thuật then chốt:

Tiêu chí kỹ thuật KingShoes.vn GiayXshop.vn Nike.com/vn Hệ thống đề xuất
Kiến trúc Web Server-Side Rendering Monolithic PHP Microservices / React Decoupled SPA (React + Spring)
Quản lý Size & Biến thể Cơ bản, dễ lỗi tồn kho Chọn size đơn lẻ Real-time theo SKU Dynamic Multi-Size Matrix
Gợi ý sản phẩm (AI) Theo danh mục tĩnh Sản phẩm bán chạy AI phức tạp Content-based (Cosine Similarity)
Hỗ trợ tự động (Bot) Live chat bên thứ ba Không tích hợp Trợ lý ảo toàn diện Amazon Lex + AWS Lambda NLU
Thanh toán trực tuyến COD, Chuyển khoản COD, Chuyển khoản Thẻ quốc tế, PayPal PayPal REST API + COD
Phân tích dòng tiền Thủ công qua ERP Thủ công Real-time Dashboard Biểu đồ doanh thu đa chiều

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

  • Must Have: Đăng ký/đăng nhập xác thực bằng JWT; danh mục sản phẩm lọc theo khoảng giá, size, thương hiệu; giỏ hàng hỗ trợ nhiều size cho cùng một mẫu giày; thanh toán PayPal & COD; quản lý đơn hàng cho Admin/Moderator.
  • Should Have: Thuật toán gợi ý sản phẩm tương tự bằng Cosine Similarity; Chatbot NLU tra cứu sản phẩm; gửi email hóa đơn tự động qua JavaMail; áp dụng mã giảm giá (Voucher).
  • Could Have: Biểu đồ trực quan hóa doanh thu theo ngày, tháng, năm; quản lý dòng tiền chi tiết từ các giao dịch PayPal.
  • Won't Have (Giai đoạn này): Ứng dụng di động Native (iOS/Android); thử giày thực tế ảo tăng cường (AR Footwear Fitting).

Thiết kế hệ thống

Hệ thống tuân thủ mô hình phân tầng chặt chẽ (Layered Architecture), đảm bảo tính module hóa và dễ bảo trì:

[UI: React Components] <---> [Redux Store / Actions / Reducers]
                                    | (Axios HTTP Client)
[Spring Controller Layer] <-------- API Endpoints (@RestController)
            |
[Spring Service Layer]   <-------- Nghiệp vụ & Giao dịch (@Service)
            |
[Spring Data JPA Repository] <---- Hibernate ORM
            |
[PostgreSQL Database]     <---- Bảng dữ liệu quan hệ

Công nghệ và phiên bản sử dụng

  • Frontend: ReactJS (v18.2.0), Redux Toolkit (v1.9.5), React Router DOM (v6.11.0), Axios (v1.4.0), Bootstrap (v5.3.0).
  • Backend: Java JDK 17, Spring Boot (v2.7.12), Spring Security (v5.7.8), Hibernate Core (v5.6.15), JavaMail API (v1.6.2).
  • Cơ sở dữ liệu: PostgreSQL (v15.2).
  • Trí tuệ nhân tạo & Serverless: Python 3.9, Scikit-Learn (v1.2.2), Amazon Lex V2, AWS Lambda.
  • Tích hợp thanh toán: PayPal Checkout Java SDK (v2.0.0).

Thiết kế cơ sở dữ liệu quan hệ

Cơ sở dữ liệu được chuẩn hóa ở mức 3NF, bao gồm các bảng chính:

  • accounts: Chứa thông tin đăng nhập, phân quyền (ROLE_USER, ROLE_MODERATOR, ROLE_ADMIN), trạng thái kích hoạt.
  • users: Lưu trữ thông tin định danh, họ tên, email, số điện thoại, địa chỉ nhận hàng.
  • products: Lưu tên sản phẩm, giá gốc, tỷ lệ giảm giá, mô tả văn bản, trạng thái hiển thị.
  • product_infors: Mở rộng chi tiết kỹ thuật (chất liệu, công nghệ đế, xuất xứ).
  • size: Liên kết khóa ngoại với products, lưu trữ kích cỡ (38, 39, 40, 41, 42, 43) và số lượng tồn kho khả dụng tương ứng.
  • images: Lưu trữ danh sách URL hình ảnh phân giải cao theo từng sản phẩm.
  • line_items: Chi tiết các mặt hàng trong giỏ hàng hiện hành của người dùng.
  • line_item_orders: Snapshots của mặt hàng tại thời điểm đặt đơn (cố định giá và size).
  • wish_lists: Danh sách sản phẩm yêu thích được lưu lại theo tài khoản.
-- Đoạn mã DDL định nghĩa cấu trúc quan hệ cốt lõi giữa Product và Size
CREATE TABLE products (
    id BIGSERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    price DOUBLE PRECISION NOT NULL,
    discount DOUBLE PRECISION DEFAULT 0.0,
    description TEXT,
    created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE size (
    id BIGSERIAL PRIMARY KEY,
    product_id BIGINT REFERENCES products(id) ON DELETE CASCADE,
    size_number INT NOT NULL,
    quantity INT NOT NULL CHECK (quantity >= 0),
    CONSTRAINT uk_product_size UNIQUE (product_id, size_number)
);

Thiết kế API Endpoints chuẩn RESTful

Phương thức Endpoint URI Phân quyền Chức năng nghiệp vụ
POST /api/v1/auth/signin Public Xác thực thông tin, cấp phát JWT Token
GET /api/v1/products Public Lấy danh sách sản phẩm phân trang & lọc
GET /api/v1/products/{id}/recommendations Public Lấy 5 sản phẩm tương đồng từ AI Engine
POST /api/v1/cart/items ROLE_USER Thêm biến thể sản phẩm + size vào giỏ hàng
POST /api/v1/orders/paypal-create ROLE_USER Khởi tạo giao dịch thanh toán qua PayPal API
GET /api/v1/admin/analytics/revenue ROLE_ADMIN Thống kê doanh thu theo mốc thời gian

Methodology

Dự án áp dụng mô hình phát triển Agile Scrum tinh gọn trong thời gian 14 tuần (20/02/2023 – 29/05/2023), chia thành 5 giai đoạn:

Sprint Thời gian Mục tiêu & Sản phẩm bàn giao (Deliverables)
Sprint 1 Tuần 1 - 3 Khảo sát nghiệp vụ, phân tích Use Case, thiết kế schema PostgreSQL và thiết lập Base Project (Spring Boot + ReactJS).
Sprint 2 Tuần 4 - 6 Xây dựng hệ thống xác thực JWT, phát triển giao diện người dùng (Trang chủ, Chi tiết sản phẩm, Bộ lọc tìm kiếm).
Sprint 3 Tuần 7 - 9 Hiện thực hóa quy trình đặt hàng, quản lý giỏ hàng đa size, tích hợp cổng thanh toán PayPal Sandbox và gửi mail hóa đơn.
Sprint 4 Tuần 10 - 12 Tích hợp thuật toán gợi ý Cosine Similarity và xây dựng Chatbot NLU với Amazon Lex/Lambda; hoàn thiện Dashboard Admin.
Sprint 5 Tuần 13 - 14 Thực thi kiểm thử hộp trắng (White-box testing), kiểm thử hộp đen (Black-box testing), tối ưu hóa truy vấn và đóng gói sản phẩm.

Implementation và kết quả

Development Process

1. Thuật toán gợi ý sản phẩm dựa trên nội dung (Content-Based Recommendation)

Hệ thống sử dụng kỹ thuật trích xuất đặc trưng văn bản CountVectorizer để chuyển đổi các thuộc tính mô tả sản phẩm (thương hiệu, chất liệu, phân loại, kiểu dáng) thành ma trận tần số từ (Bag of Words), sau đó tính toán độ tương đồng giữa các vector thông qua hàm Cosine Similarity:

$$\text{Cosine Similarity}(A, B) = \frac{\mathbf{A} \cdot \mathbf{B}}{|\mathbf{A}|2 |\mathbf{B}|2} = \frac{\sum{i=1}^{n} A_i B_i}{\sqrt{\sum{i=1}^{n} A_i^2} \sqrt{\sum_{i=1}^{n} B_i^2}}$$

# Implementation module gợi ý sản phẩm sử dụng Python & Scikit-Learn
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import pandas as pd

def build_recommendation_engine(products_df):
    # Tiền xử lý dữ liệu: Loại bỏ stop words và chuyển về chữ thường
    vectorizer = CountVectorizer(stop_words='english', lowercase=True)
    
    # Kết hợp các trường đặc trưng văn bản của sản phẩm
    products_df['metadata'] = products_df['brand'] + " " + \
                              products_df['category'] + " " + \
                              products_df['description']
    
    # Tạo ma trận tần số từ
    count_matrix = vectorizer.fit_transform(products_df['metadata'])
    
    # Tính toán ma trận độ tương đồng Cosine
    cosine_sim_matrix = cosine_similarity(count_matrix, count_matrix)
    return cosine_sim_matrix

def get_similar_shoes(product_id, products_df, cosine_sim_matrix, top_n=5):
    idx = products_df.index[products_df['id'] == product_id].tolist()[0]
    similarity_scores = list(enumerate(cosine_sim_matrix[idx]))
    
    # Sắp xếp điểm tương đồng giảm dần (loại bỏ chính sản phẩm hiện tại)
    sorted_scores = sorted(similarity_scores, key=lambda x: x[1], reverse=True)[1:top_n+1]
    
    recommended_indices = [score[0] for score in sorted_scores]
    return products_df.iloc[recommended_indices][['id', 'name', 'price']]

2. Xây dựng Serverless Chatbot với Amazon Lex và AWS Lambda

Chatbot hiểu ý định người dùng (Intent) thông qua các phát ngôn mẫu (Utterances) và trích xuất các thực thể (Slots: ShoeBrand, ShoeSize, TargetGender). Luồng sự kiện được chuyển tiếp tới hàm Lambda viết bằng Python để truy vấn cơ sở dữ liệu và trả lời theo thời gian thực.

# AWS Lambda Handler xử lý sự kiện fulfillment từ Amazon Lex
import json

def lambda_handler(event, context):
    intent_name = event['sessionState']['intent']['name']
    slots = event['sessionState']['intent']['slots']
    
    if intent_name == "FindShoesIntent":
        brand = slots['ShoeBrand']['value']['interpretedValue'] if slots['ShoeBrand'] else "Tất cả"
        size = slots['ShoeSize']['value']['interpretedValue'] if slots['ShoeSize'] else None
        
        response_text = f"Hệ thống đang tìm kiếm các mẫu giày {brand} size {size} phù hợp nhất cho bạn..."
        
        return {
            "sessionState": {
                "dialogAction": {
                    "type": "Close"
                },
                "intent": {
                    "name": intent_name,
                    "state": "Fulfilled"
                }
            },
            "messages": [
                {
                    "contentType": "PlainText",
                    "content": response_text
                }
            ]
        }

3. Quản lý trạng thái giỏ hàng với Redux

Kiến trúc Redux đảm bảo luồng dữ liệu một chiều (Unidirectional Data Flow) cho phép người dùng thêm nhiều biến thể kích cỡ cho cùng một ID sản phẩm mà không làm sai lệch cây trạng thái toàn cục.

// Redux Slice quản lý giỏ hàng sản phẩm đa size
import { createSlice } from '@reduxjs/toolkit';

const cartSlice = createSlice({
  name: 'cart',
  initialState: { items: [], totalAmount: 0 },
  reducers: {
    addToCart(state, action) {
      const { id, size, price, quantity, name, image } = action.payload;
      // Khóa duy nhất xác định dòng sản phẩm: ID kết hợp với Size
      const existingItem = state.items.find(
        (item) => item.id === id && item.size === size
      );
      
      if (existingItem) {
        existingItem.quantity += quantity;
      } else {
        state.items.push({ id, size, price, quantity, name, image });
      }
      state.totalAmount = state.items.reduce(
        (total, item) => total + item.price * item.quantity, 0
      );
    }
  }
});

export const { addToCart } = cartSlice.actions;
export default cartSlice.reducer;

Testing và validation

Kiểm thử hộp trắng (White-Box Testing)

Nhóm áp dụng phương pháp phân tích đồ thị dòng điều khiển (Control Flow Graph - CFG) và kiểm thử dòng dữ liệu (Data Flow Graph) trên các hàm nghiệp vụ phức tạp.

Ví dụ: Đánh giá hàm addToCart(productId, size, quantity) với độ phức tạp chu trình (Cyclomatic Complexity):

$$V(G) = E - N + 2P = 14 - 11 + 2(1) = 5$$

Tất cả 5 đường dẫn độc lập (Basis Paths) đều được bao phủ thông qua các bộ Unit Test viết bằng JUnit 5 và Mockito, đạt mức độ bao phủ mã nguồn (Code Coverage) là 88.4% trên tầng Service.

Kiểm thử hộp đen (Black-Box Testing)

Áp dụng kỹ thuật phân vùng tương đương (Equivalence Partitioning) và phân tích giá trị biên (Boundary Value Analysis) trên 12 modules chính.

Module kiểm thử Số lượng Test Cases Đạt (Passed) Lỗi phát hiện (Defects) Tỷ lệ thành công
Xác thực & Phân quyền 18 18 0 100%
Tìm kiếm, Lọc & Phân trang 24 24 0 100%
Giỏ hàng & Quản lý Size 32 31 1 (Đã fix lỗi nhảy size) 100%
Thanh toán PayPal SDK 15 15 0 100%
AI Recommendation & Chatbot 20 19 1 (Đã tinh chỉnh NLU) 100%
Quản trị & Báo cáo doanh thu 25 25 0 100%

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

Hệ thống đã hoàn thiện 100% các yêu cầu nghiệp vụ đặt ra theo đề cương khóa luận:

+--------------------------------------------------------------------------+
|                       KẾT QUẢ ĐẠT ĐƯỢC CỦA HỆ THỐNG                     |
+--------------------------------------------------------------------------+
| 1. Thời gian phản hồi API trung bình (REST Response):    142ms           |
| 2. Thời gian kết xuất trang Frontend (First Contentful): 0.85s           |
| 3. Độ chính xác nhận diện Intent của Amazon Lex Chatbot: 93.6%           |
| 4. Độ chính xác thuật toán gợi ý tương đồng (Top-5):     86.5%           |
| 5. Tỷ lệ xử lý giao dịch PayPal thành công:              100%            |
| 6. Điểm đánh giá trải nghiệm người dùng (UAT Score):     4.75 / 5.0      |
+--------------------------------------------------------------------------+

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

  1. Kiến trúc tách rời linh hoạt (Decoupled Architecture): Loại bỏ hoàn toàn sự phụ thuộc giao diện khỏi máy chủ ứng dụng, giúp ReactJS tối ưu hóa Virtual DOM Diffing, giảm 65% băng thông tải trang so với mô hình MVC truyền thống.
  2. Cơ chế quản lý biến thể giày đa tầng: Giải quyết bài toán nan giải trong bán lẻ giày dép thông qua việc phân tách thực thể ProductSize độc lập, cho phép kiểm soát tồn kho ở cấp độ kích cỡ chi tiết theo thời gian thực.
  3. Ứng dụng AI thực tiễn vào E-commerce vừa và nhỏ: Tích hợp mô hình gợi ý sản phẩm không gian vector không đòi hỏi hạ tầng máy chủ GPU đắt đỏ, duy trì độ trễ tính toán dưới 50ms cho tập danh mục 10.000 sản phẩm.
  4. Trợ lý ảo Serverless chi phí thấp: Sử dụng Amazon Lex kết hợp AWS Lambda giúp doanh nghiệp xử lý 10.000 truy vấn đàm thoại mỗi tháng với chi phí gần như bằng 0 trong giai đoạn đầu vận hành.

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

Kịch bản ứng dụng

  • Cửa hàng thời trang & Sneaker Store: Triển khai làm cổng bán hàng chính thức, đồng bộ dữ liệu kho hàng, giảm thiểu chi phí nhân sự trực fanpage nhờ Chatbot tự động.
  • Mô hình chuỗi cửa hàng: Mở rộng module phân quyền Moderator để nhân viên từng chi nhánh có thể quản lý trạng thái đơn hàng và cập nhật tồn kho.

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

# 1. Khởi tạo cơ sở dữ liệu PostgreSQL
docker run --name postgres-shoe-db -e POSTGRES_DB=shoestore -e POSTGRES_PASSWORD=securepass -p 5432:5432 -d postgres:15

# 2. Build và chạy Backend Spring Boot
cd backend-spring-boot
./mvnw clean package -DskipTests
java -jar target/shoe-store-backend-0.0.1-SNAPSHOT.jar

# 3. Khởi chạy Frontend ReactJS
cd frontend-react
npm install
npm run build
serve -s build -l 3000

Phân tích hiệu quả kinh tế (Cost-Benefit Analysis & ROI)

  • Chi phí hạ tầng: Ước tính 15–25 USD/tháng khi triển khai trên DigitalOcean Droplet (2 vCPU, 4GB RAM) và AWS Serverless Free Tier.
  • Hiệu quả: Tăng 35% tỷ lệ chuyển đổi (Conversion Rate) nhờ tính năng gợi ý sản phẩm chuẩn xác và giảm 50% thời gian phản hồi thắc mắc của khách hàng thông qua trợ lý ảo. Thời gian thu hồi vốn đầu tư (ROI) ước tính dưới 4 tháng hoạt động.

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

  • Hạn chế kỹ thuật:
    • Thuật toán Content-based mới dựa trên văn bản và danh mục, chưa phân tích đặc trưng hình ảnh trực tiếp (Computer Vision) của mẫu giày.
    • Chatbot hoạt động tối ưu trên ngôn ngữ Tiếng Anh do giới hạn bộ từ vựng chuẩn của Amazon Lex V2 khu vực Châu Á; phần xử lý Tiếng Việt cần qua bước tiền xử lý chuẩn hóa từ đồng nghĩa.
  • Hướng phát triển:
    • Nâng cấp hệ thống gợi ý sang mô hình lai (Hybrid Recommendation) kết hợp Collaborative Filtering khi lượng dữ liệu giao dịch người dùng đủ lớn.
    • Tích hợp công nghệ WebRTC và Web Push Notifications để hỗ trợ thông báo trạng thái đơn hàng theo thời gian thực.
    • Đóng gói toàn bộ hệ thống bằng Docker Compose và thiết lập quy trình tự động hóa CI/CD thông qua GitHub Actions.

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

  • Sinh viên & Học viên CNTT: Nguồn tài liệu tham khảo hoàn chỉnh về cách xây dựng đồ án Fullstack chuẩn doanh nghiệp, nắm vững cách tích hợp ReactJS với Spring Boot.
  • Lập trình viên (Developers): Mẫu thiết kế chuẩn (Design Patterns), cách xử lý state management phức tạp với Redux Toolkit và mô hình tích hợp AWS Lambda Serverless.
  • Chủ doanh nghiệp & Cửa hàng bán lẻ: Một giải pháp phần mềm mã nguồn mở hoàn chỉnh, tiết kiệm hàng chục triệu đồng chi phí mua bản quyền phần mềm quản lý và bán hàng trực tuyến.

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

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

Máy chủ cần tối thiểu 2 vCPU, 4GB RAM, 20GB SSD, cài đặt sẵn Java Runtime Environment (JRE 17+), Node.js (v16+) và hệ quản trị cơ sở dữ liệu PostgreSQL (v14+).

2. Hệ thống xử lý thế nào khi xảy ra xung đột mua cùng lúc một đôi giày cuối cùng trong kho?

Spring Boot sử dụng cơ chế @Transactional với mức cô lập giao dịch (Transaction Isolation Level) kết hợp khóa lạc quan (Optimistic Locking) hoặc kiểm tra số lượng tồn kho quantity >= requested_quantity ngay tại tầng Service trước khi ghi nhận đơn hàng.

3. Làm sao để tích hợp cổng thanh toán PayPal từ môi trường Sandbox sang Production?

Nhập Client ID và Secret Key được cấp từ tài khoản PayPal Business vào tệp cấu hình application.properties, sau đó chuyển đổi môi trường cấu hình mode=live trong PayPal HttpClient Config.

4. Chi phí duy trì dịch vụ Chatbot Amazon Lex và AWS Lambda là bao nhiêu?

AWS cung cấp miễn phí 10.000 yêu cầu văn bản mỗi tháng cho Amazon Lex và 1.000.000 yêu cầu miễn phí vĩnh viễn cho AWS Lambda, giúp hệ thống vận hành hoàn toàn không mất phí trong quy mô cửa hàng vừa và nhỏ.

5. Dữ liệu gợi ý sản phẩm được cập nhật định kỳ như thế nào?

Mỗi khi Admin thêm mới hoặc chỉnh sửa thông tin chi tiết một đôi giày, hệ thống kích hoạt sự kiện cập nhật ma trận đặc trưng CountVectorizer thông qua một REST Hook chạy ngầm, đảm bảo sản phẩm mới có mặt ngay trong danh sách đề xuất.


Kết luận

Đồ án khóa luận tốt nghiệp "Xây dựng website bán giày với ReactJS và Spring Boot" của nhóm sinh viên Hoàng Quốc Việt và Nguyễn Đặng Khánh Văn đã giải quyết xuất sắc bài toán thương mại điện tử chuyên ngành bán lẻ thời trang. Bằng việc kết hợp kiến trúc phân tầng hiện đại, cơ sở dữ liệu quan hệ chuẩn mực, cổng thanh toán quốc tế và các module trí tuệ nhân tạo (Gợi ý sản phẩm, Chatbot NLU Serverless), đề tài đã chứng minh tính ứng dụng thực tiễn cao, đáp ứng đầy đủ các tiêu chuẩn kỹ thuật của một sản phẩm phần mềm thương mại hoàn chỉnh.

Quý độc giả, nhà tuyển dụng và các bạn sinh viên có thể tham khảo kiến trúc này để triển khai, mở rộng cho các hệ thống bán lẻ trực tuyến đòi hỏi tính linh hoạt và hiệu năng cao.