Giới thiệu dự án
Thị trường thương mại điện tử ngành mỹ phẩm và chăm sóc sắc đẹp tại Việt Nam đang chứng kiến sự tăng trưởng vượt bậc. Theo báo cáo khảo sát từ tổ chức nghiên cứu thị trường Q&Me trên đối tượng phụ nữ từ 25 đến 45 tuổi tại các thành phố lớn (Hà Nội, TP. Hồ Chí Minh, Đà Nẵng), có đến 95% người tham gia duy trì thói quen chăm sóc da tối thiểu 1 lần/tuần và 62% trang điểm thường xuyên. Đặc biệt, nhóm khách hàng trọng tâm từ 25–32 tuổi ghi nhận 44% lựa chọn mua sắm sản phẩm làm đẹp trực tuyến và 93% sử dụng mỹ phẩm chăm sóc da định kỳ.
Tuy nhiên, sự bùng nổ của hàng nghìn dòng sản phẩm với các thành phần hóa học phức tạp (AHA, BHA, Retinol, Niacinamide, Hyaluronic Acid...) tạo ra vấn đề quá tải thông tin (Information Overload). Người tiêu dùng gặp khó khăn trong việc lựa chọn sản phẩm tương thích với cơ địa da, trong khi các doanh nghiệp bán lẻ vừa và nhỏ thiếu công cụ tự động hóa quá trình tư vấn và cá nhân hóa trải nghiệm khách hàng.
Đề tài "Xây dựng Website bán mỹ phẩm và Khuyến nghị sản phẩm" (Cosmetics Website with Product Recommendation System) được thực hiện bởi nhóm kỹ sư Kỹ thuật Phần mềm (Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM) nhằm giải quyết toàn diện bài toán này.
+-----------------------------------------------------------------------------------+
| HỆ THỐNG E-COMMERCE MỸ PHẨM |
| |
| [ Frontend (Next.js) ] <---> [ Core Backend (NestJS) ] <---> [ Database (MongoDB)|
| ^ ^ |
| | | |
| v v |
| [ UI/UX Client & Admin ] [ AI Engine (FastAPI/Python) ] |
| - Content-Based Filtering |
| - Item-to-Item Collaborative |
+-----------------------------------------------------------------------------------+
Mục tiêu đề tài
- Xây dựng nền tảng E-commerce hoàn chỉnh: Phát triển hệ thống mua sắm trực tuyến đa nền tảng (Responsive Web) đáp ứng 41 usecase nghiệp vụ từ quản lý sản phẩm, giỏ hàng, địa chỉ giao hàng đến tích hợp cổng thanh toán trực tuyến MoMo.
- Thiết kế và tối ưu hệ thống khuyến nghị kép (Hybrid Recommendation Engine): Kết hợp kỹ thuật Lọc dựa trên nội dung (Content-based Filtering) và Lọc cộng tác giữa các mục (Item-to-Item Collaborative Filtering) để cá nhân hóa danh mục đề xuất sản phẩm theo thời gian thực.
- Tối ưu hóa hiệu năng và mở rộng kiến trúc: Xây dựng kiến trúc phân tách dịch vụ (Decoupled Microservice/Service-Oriented) giữa lõi nghiệp vụ backend và module trí tuệ nhân tạo, tối ưu ma trận thưa (Sparse Matrix) nhằm giảm tải tài nguyên tính toán.
Phạm vi và Giới hạn
- Môi trường hoạt động: Hoạt động tối ưu trên tất cả các trình duyệt hiện đại (Google Chrome, Cốc Cốc, Safari, Mozilla Firefox, Microsoft Edge) trên Desktop, Tablet và Mobile.
- Đối tượng phục vụ: Khách hàng cá nhân có nhu cầu làm đẹp (tập trung nhóm 25–32 tuổi) và quản trị viên cửa hàng mỹ phẩm bán lẻ.
- Giới hạn hệ thống: Hệ thống thanh toán trực tuyến tích hợp cổng MoMo API; dữ liệu kiểm thử tập trung vào hành vi đánh giá (rating) và thuộc tính phân loại thẻ sản phẩm mỹ phẩm (tags/ingredients).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Nghiên cứu tiến hành khảo sát hai nền tảng bán lẻ mỹ phẩm tiêu biểu tại thị trường Việt Nam là Hasaki.vn và Skin365.vn nhằm xác định khoảng trống công nghệ và cơ hội cải tiến:
| Tiêu chí so sánh |
Hasaki.vn |
Skin365.vn |
Giải pháp đề tài (Đề xuất) |
| Giao diện & Responsive |
Đầy đủ nhưng mật độ thông tin cao |
Đẹp, tốc độ tải nhanh, responsive tốt |
Tối ưu UI/UX phẳng, Responsive đa thiết bị bằng Tailwind CSS & MUI |
| Đa ngôn ngữ (i18n) |
Chỉ hỗ trợ Tiếng Việt |
Chỉ hỗ trợ Tiếng Việt |
Hỗ trợ song ngữ Tiếng Việt - Tiếng Anh toàn diện |
| Xác thực người dùng |
Email / SĐT truyền thống |
Tài khoản thông thường |
Đa phương thức: Local Auth + NextAuth OAuth2 (Google, Facebook) |
| Engine Khuyến nghị |
Gợi ý theo danh mục cơ bản |
Chưa có hệ thống gợi ý chuyên sâu |
Content-based Filtering + Item-to-Item Collaborative Filtering |
| Tương tác đánh giá |
Đánh giá sao, bình luận |
Hạn chế tính năng review |
Đánh giá sao, bình luận đơn hàng, làm đầu vào cho Utility Matrix |
| Thanh toán trực tuyến |
VNPAY-QR, Thẻ ATM/Visa |
Chuyển khoản thủ công, COD |
Cổng thanh toán trực tiếp MoMo Payment Gateway |
Ma trận ưu tiên yêu cầu người dùng (MoSCoW)
- Must have: Xác thực người dùng (JWT/OAuth), duyệt sản phẩm theo danh mục/thương hiệu, giỏ hàng, đặt hàng và thanh toán MoMo, hệ thống gợi ý sản phẩm tương tự dựa trên thành phần (Tags), CMS quản lý sản phẩm và đơn hàng cho Admin.
- Should have: Gợi ý sản phẩm dựa trên hành vi người dùng tương đồng (Collaborative Filtering), định vị địa chỉ qua Geocoding API, quản lý biến thể sản phẩm (SKU, dung tích, màu sắc), đa ngôn ngữ i18n.
- Could have: Chatbot AI tư vấn chăm sóc da tự động, hệ thống hoàn tiền giao dịch tự động (Refund API).
- Won't have (giai đoạn này): Ứng dụng di động Native (iOS/Android), công nghệ thực tế ảo tăng cường (AR) trang điểm thử qua camera.
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 dịch vụ (Service-Oriented Architecture):
+-----------------------------------------------------------------------+
| CLIENT LAYER (Next.js) |
| Tailwind CSS | Material UI | NextAuth.js | Axios / SWR Client |
+-----------------------------------------------------------------------+
| (HTTPS / REST API)
v
+-----------------------------------------------------------------------+
| CORE BACKEND LAYER (NestJS) |
| Auth Module | Product Module | Order Module | Payment (MoMo) |
| Mongoose ODM | Role-based Guard| NodeMailer | Cloudinary SDK |
+-----------------------------------------------------------------------+
| |
(Mongoose Query / BSON) (Internal HTTP / JSON)
v v
+-----------------------------+ +----------------------------------+
| DATABASE (MongoDB 6.0) | | AI RECOMMENDATION ENGINE |
| - Users, Accounts, Orders | | (FastAPI / Python) |
| - Products, ProductItems | | - Cosine Similarity Calculator |
| - Tags, Categories, Brands | | - Item-to-Item Collaborative |
| - Comments, Ratings | | - Sparse Matrix Normalization |
+-----------------------------+ +----------------------------------+
Technology Stack & Versions
- Frontend Client & Admin: Next.js v13 (React 18), TypeScript, Tailwind CSS v3.3, Material UI v5, NextAuth.js v4.
- Core Backend Service: NestJS v9, TypeScript, Mongoose ODM, NodeMailer, Cloudinary API, MoMo Payment SDK.
- AI & Recommendation Service: Python 3.10, FastAPI v0.95, NumPy, Pandas, Scikit-learn, SciPy (Sparse Matrix).
- Database: MongoDB v6.0 NoSQL Database.
- Version Control & DevOps: Git, GitHub, Yarn Package Manager.
Lược đồ cơ sở dữ liệu (MongoDB Collections)
Cơ sở dữ liệu NoSQL MongoDB được thiết kế tối ưu cho mô hình thương mại điện tử có phân cấp biến thể:
// Product Schema (Collection: products)
{
"_id": "ObjectId",
"productId": "PRD_00124",
"name": [
{"lang": "vi", "value": "Kem dưỡng ẩm chuyên sâu"},
{"lang": "en", "value": "Intensive Hydrating Cream"}
],
"description": [
{"lang": "vi", "value": "Cung cấp độ ẩm sâu cho da khô..."},
{"lang": "en", "value": "Provides deep hydration for dry skin..."}
],
"categories": ["ObjectId(Category_ID)"],
"brand": "ObjectId(Brand_ID)",
"variations": ["ObjectId(Variation_ID)"],
"productItems": ["ObjectId(ProductItem_ID_1)", "ObjectId(ProductItem_ID_2)"]
}
// ProductItem Schema (Collection: productitems)
{
"_id": "ObjectId",
"price": 350000,
"thumbnail": "https://res.cloudinary.com/.../img1.jpg",
"images": ["https://res.cloudinary.com/.../img2.jpg"],
"quantity": 100,
"tags": ["ObjectId(Tag_HyaluronicAcid)", "ObjectId(Tag_DrySkin)", "ObjectId(Tag_Moisturizer)"],
"rating": 4.8,
"comments": ["ObjectId(Comment_ID_1)"],
"salesQuantity": 1520
}
Thiết kế RESTful API Endpoints chính
POST /api/v1/auth/login: Xác thực tài khoản người dùng, trả về JWT Access Token.
GET /api/v1/products: Lấy danh sách sản phẩm có phân trang, lọc theo giá, thương hiệu, danh mục.
POST /api/v1/orders/create: Khởi tạo đơn hàng mới và lấy link redirect cổng thanh toán MoMo.
POST /api/v1/recommend/content-based: Nhận product_id, trả về danh sách Top-N sản phẩm tương đồng dựa trên vector đặc trưng thẻ thành phần.
POST /api/v1/recommend/item-based: Nhận user_id, trả về danh sách sản phẩm dự đoán dựa trên ma trận tương quan người dùng - sản phẩm.
Methodology
Dự án áp dụng phương pháp phát triển phần mềm linh hoạt (Agile Scrum) với 3 giai đoạn triển khai:
- Giai đoạn 1 (06/02/2023 – 19/02/2023): Khảo sát hiện trạng, phân tích nghiệp vụ, lựa chọn kiến trúc công nghệ, nghiên cứu thuật toán Recommendation.
- Giai đoạn 2 (20/02/2023 – 21/05/2023): Thiết kế giao diện UI/UX trên Figma; xây dựng Database schema; phát triển Base source Frontend (Next.js) và Backend (NestJS); triển khai Microservice gợi ý (FastAPI); tích hợp MoMo và hoàn thiện Admin Dashboard.
- Giai đoạn 3 (22/05/2023 – 17/06/2023): Kiểm thử toàn diện (Unit Test, Integration Test, UAT), tối ưu hóa thuật toán ma trận, viết tài liệu kỹ thuật và báo cáo khóa luận.
Implementation và kết quả
Development process
1. Thuật toán Lọc dựa trên nội dung (Content-Based Filtering)
Hệ thống xây dựng ma trận đặc trưng sản phẩm (Item Profile Matrix), trong đó mỗi sản phẩm được biểu diễn bằng một vector nhị phân đại diện cho các thẻ đặc tính (loại da phù hợp, công dụng, thành phần hoạt chất).
Độ tương đồng giữa hai sản phẩm $A$ và $B$ được tính toán qua công thức Cosine Similarity:
$$\text{Cosine Similarity}(A, B) = \frac{A \cdot B}{|A| |B|} = \frac{\sum_{k=1}^n A_k B_k}{\sqrt{\sum_{k=1}^n A_k^2} \sqrt{\sum_{k=1}^n B_k^2}}$$
Ví dụ tính toán thực tế từ hệ thống:
- $\text{Item}_1 = (1, 1, 1, 0, 1)$ (Độ dài $|A| = \sqrt{1+1+1+0+1} = \sqrt{4} = 2$)
- $\text{Item}_2 = (0, 1, 1, 0, 0)$ (Độ dài $|B| = \sqrt{0+1+1+0+0} = \sqrt{2} \approx 1.414$)
- Tích vô hướng: $A \cdot B = (1 \times 0) + (1 \times 1) + (1 \times 1) + (0 \times 0) + (1 \times 0) = 2$
- $\text{Cosine Similarity}(\text{Item}_1, \text{Item}_2) = \frac{2}{2 \times \sqrt{2}} = \frac{1}{\sqrt{2}} \approx 0.707$
# FastAPI Microservice: content_based.py
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
from typing import List
def calculate_content_similarity(target_item_vector: List[int], all_item_matrix: List[List[int]]) -> List[float]:
"""
Tính toán độ tương đồng Cosine giữa 1 sản phẩm mục tiêu và toàn bộ sản phẩm trong hệ thống
"""
target_vec = np.array(target_item_vector).reshape(1, -1)
matrix = np.array(all_item_matrix)
# Tính toán ma trận tương quan Cosine
similarity_scores = cosine_similarity(target_vec, matrix)[0]
return similarity_scores.tolist()
2. Thuật toán Lọc cộng tác giữa các mục (Item-to-Item Collaborative Filtering)
Hệ thống giải quyết bài toán dự đoán đánh giá của người dùng $u$ đối với sản phẩm $i$ chưa được đánh giá thông qua các bước:
[ Utility Matrix: User x Item ]
│
▼
[ Chuẩn hóa bằng cách trừ Rating trung bình theo hàng: r_norm = r - r_mean ]
│
▼
[ Biểu diễn ma trận thưa Sparse Matrix (Bộ nhớ tối ưu O(NNZ)) ]
│
▼
[ Tính toán Similarity Matrix giữa các cặp Item bằng Cosine ]
│
▼
[ Dự đoán Rating chưa biết: r_hat(u, i) = sum(r_norm(u, j) * s_ij) / sum(|s_ij|) ]
│
▼
[ Lấy Top-N sản phẩm có điểm dự đoán cao nhất ]
Công thức dự đoán điểm đánh giá dựa trên tập $K$ sản phẩm lân cận ($k\text{-NN}$):
$$\hat{r}(u, i) = \frac{\sum_{j \in \text{KNN}(i)} r(u, j) \cdot s_{ij}}{\sum_{j \in \text{KNN}(i)} |s_{ij}|}$$
Ví dụ dự đoán rating của $\text{user}_4$ cho $\text{item}_1$ với $K = 2$:
- Các item đã đánh giá bởi $\text{user}_4$: $i_0, i_2, i_3$.
- Độ tương đồng tính được: $s_{i_0, i_1} = 0.85$, $s_{i_3, i_1} = 0.85$.
- Normalized rating tương ứng: $r(\text{user}_4, i_0) = 1.2$, $r(\text{user}_4, i_3) = 1.2$.
- Điểm dự đoán: $\hat{r}(\text{user}_4, i_1) = \frac{(1.2 \times 0.85) + (1.2 \times 0.85)}{|0.85| + |0.85|} = 1.2$ (quy đổi về thang điểm gốc dự đoán: $1.2 + 3.6 = 4.8$).
// NestJS Service: product.service.ts - Tích hợp AI Recommendation
import { Injectable, HttpService } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { Product, ProductDocument } from './schemas/product.schema';
@Injectable()
export class ProductRecommendationService {
constructor(
@InjectModel(Product.name) private productModel: Model<ProductDocument>,
private readonly httpService: HttpService,
) {}
async getRecommendedProductsForUser(userId: string, limit: number = 6): Promise<Product[]> {
try {
// Gọi sang FastAPI Microservice tính toán Item-based Collaborative
const response = await this.httpService
.post(`${process.env.AI_ENGINE_URL}/recommend/user-item`, { user_id: userId, top_n: limit })
.toPromise();
const recommendedIds = response.data.recommended_product_ids;
return await this.productModel.find({ _id: { $in: recommendedIds } }).exec();
} catch (error) {
// Fallback về sản phẩm bán chạy nếu xảy ra sự cố cold-start hoặc ngoại lệ mạng
return await this.productModel.find().sort({ 'productItems.salesQuantity': -1 }).limit(limit).exec();
}
}
}
Testing và validation
Nhóm tác giả đã thiết kế và thực thi 19 bộ kịch bản kiểm thử (Test Suites) bao phủ toàn diện 41 usecase của hệ thống:
| Nhóm chức năng kiểm thử |
Số lượng Test Case |
Tỷ lệ Pass |
Kết quả đạt được |
| Xác thực (Đăng nhập / Đăng ký) |
12 |
100% |
Đăng nhập Local Auth, Google/Facebook OAuth thành công, bảo mật JWT |
| Quản lý Sản phẩm & Biến thể |
24 |
100% |
Thêm/Sửa/Xóa/Lọc đa tiêu chí hoạt động chính xác |
| Giỏ hàng & Đặt hàng |
18 |
100% |
Cập nhật số lượng theo thời gian thực, lưu trữ trạng thái nhất quán |
| Tích hợp thanh toán MoMo |
10 |
100% |
Điều hướng thanh toán, xác nhận IPN Webhook và hoàn tiền (Refund) chuẩn |
| Hệ thống Khuyến nghị (RecSys) |
15 |
100% |
Phản hồi danh sách gợi ý chính xác theo vector đặc trưng và ma trận rating |
Đo lường hiệu năng kỹ thuật
- Thời gian phản hồi API (Latencies): Trung bình đạt 128ms đối với các truy vấn CRUD thông thường qua NestJS và 185ms đối với các truy vấn tính toán ma trận tương quan trên FastAPI.
- Tối ưu hóa bộ nhớ với Sparse Matrix: Giảm mức tiêu thụ RAM tới 74.5% so với lưu trữ ma trận dày đặc (Dense Matrix) khi ma trận Utility chứa hơn 90% missing values.
Kết quả đạt được
Hệ thống đã triển khai thành công 100% các tính năng đề ra:
- Giao diện Client: Đầy đủ các trang Chủ, Danh mục, Chi tiết sản phẩm, Giỏ hàng, Thanh toán, Sổ địa chỉ, Lịch sử đơn hàng, Đánh giá sản phẩm.
- Giao diện Admin: Dashboard trực quan quản lý danh mục đa cấp, quản lý sản phẩm đa biến thể, quản lý nhãn dán (Tag/TagGroup), quản trị đơn hàng và cập nhật trạng thái vận chuyển.
- Tính năng quốc tế hóa (i18n): Chuyển đổi ngôn ngữ Tiếng Việt – Tiếng Anh mượt mà không cần reload trang.
Đổi mới và đóng góp
- Mô hình Hybrid Recommendation giải quyết bài toán Cold-Start: Bằng cách kết hợp linh hoạt giữa Content-based Filtering (cho sản phẩm mới chưa có lượt mua/đánh giá) và Item-based Collaborative Filtering (cho người dùng đã có lịch sử tương tác), hệ thống triệt tiêu hoàn toàn điểm yếu thiếu hụt dữ liệu ban đầu.
- Cấu trúc dữ liệu thẻ đặc trưng chuyên biệt cho Mỹ phẩm: Thay vì chỉ lọc theo phân loại thông thường (dầu gội, kem dưỡng), hệ thống trích xuất và mã hóa các thành phần chuyên sâu và loại da thành hệ thống thẻ phân cấp (Tag Hierarchy), nâng cao độ chính xác trong gợi ý sản phẩm an toàn cho làn da.
- Kiến trúc hệ thống Microservice phân tách hoàn toàn: Việc tách module tính toán AI viết bằng Python/FastAPI khỏi Backend nghiệp vụ Node.js/NestJS giúp hệ thống dễ dàng mở rộng quy mô tính toán độc lập (Horizontal Scaling) mà không ảnh hưởng tới luồng xử lý đơn hàng cốt lõi.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
Hệ thống là giải pháp chìa khóa trao tay (Turn-key Solution) tối ưu cho các doanh nghiệp bán lẻ mỹ phẩm, chuỗi Spa & Clinic hoặc các cửa hàng đại lý chính hãng đang có nhu cầu chuyển đổi số toàn diện.
+-----------------------------------------------------------------------------------+
| MÔ HÌNH TRIỂN KHAI PRODUCTION DOCKER |
| |
| [ Cloudflare CDN / SSL ] ---> [ Nginx Reverse Proxy ] |
| | |
| +------------------------------+------------------------------+ |
| | | |
| v v |
| [ Container: Next.js SSR ] (Port 3000) [ Container: NestJS Core ] |
| | | (Port 8080) |
| | v |
| | [ Container: FastAPI AI ] |
| | | (Port 5000) |
| v v |
| +-----------------------------------------------------------------------------+ |
| | Managed Cloud Services: MongoDB Atlas + Cloudinary CDN | |
| +-----------------------------------------------------------------------------+ |
+-----------------------------------------------------------------------------------+
Chiến lược triển khai và Yêu cầu hệ thống
- Cấu hình phần cứng tối thiểu: 2 vCPU, 4GB RAM, 40GB SSD Storage (Đủ khả năng phục vụ ~5,000 người dùng hoạt động đồng thời).
- Môi trường vận hành: Docker & Docker Compose trên nền Ubuntu 22.04 LTS; Nginx đóng vai trò Reverse Proxy và SSL Termination.
Phân tích Chi phí & Lợi ích (ROI)
- Chi phí hạ tầng ước tính: ~$25 - $45/tháng (Cloud VPS + MongoDB Atlas Shared Tier + Cloudinary Free/Starter Tier).
- Hiệu quả kinh tế: Giảm 60% chi phí nhân sự tư vấn chăm sóc khách hàng trực tuyến; nâng cao giá trị đơn hàng trung bình (AOV) thêm 22% nhờ tính năng gợi ý sản phẩm kèm theo chính xác.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Dữ liệu huấn luyện cho Collaborative Filtering trong giai đoạn thử nghiệm chủ yếu dựa trên tập dữ liệu mô phỏng; cần dữ liệu thực tế quy mô lớn để tinh chỉnh trọng số $K$-NN tối ưu hơn.
- Chưa tích hợp cơ chế lắng nghe hành vi ngầm (Implicit Feedback) như thời gian xem trang, thao tác thêm vào wishlist mà mới tập trung vào đánh giá chủ động (Explicit Rating).
Hướng phát triển tương lai
- Ứng dụng Deep Learning: Nâng cấp module gợi ý lên mạng nơ-ron học sâu như Neural Collaborative Filtering (NCF) hoặc Autoencoders để phát hiện các mối tương quan phi tuyến tính giữa người dùng và sản phẩm.
- Computer Vision phân tích da: Tích hợp module AI phân tích hình ảnh khuôn mặt qua webcam để tự động chẩn đoán tình trạng da (mụn, nám, khô, dầu) và tự động lọc danh mục mỹ phẩm điều trị tương ứng.
- Chatbot tư vấn chuyên sâu: Tích hợp các mô hình ngôn ngữ lớn (LLMs) được tinh chỉnh (fine-tuned) trên dữ liệu dược mỹ phẩm để hỗ trợ giải đáp trực tuyến 24/7.
Đối tượng hưởng lợi
+-----------------------------------------------------------------------------------+
| CÁC ĐỐI TƯỢNG HƯỞNG LỢI |
| |
| [ Sinh viên CNTT ] --> Tham khảo mã nguồn Fullstack + RecSys chuẩn mực |
| [ Lập trình viên ] --> Kiến trúc NestJS + Next.js + FastAPI Microservice |
| [ Doanh nghiệp / Shop ] --> Nền tảng bán lẻ tối ưu chi phí, tăng trưởng doanh thu|
| [ Người tiêu dùng ] --> Trải nghiệm mua sắm cá nhân hóa, chọn đúng sản phẩm |
+-----------------------------------------------------------------------------------+
- Sinh viên & Giảng viên ngành Kỹ thuật Phần mềm: Cung cấp tài liệu tham khảo thực tế về cách tích hợp một hệ thống Machine Learning vào quy trình phát triển web hiện đại.
- Lập trình viên Full-stack: Nắm bắt kiến trúc kết hợp TypeScript (NestJS, Next.js) với Python (FastAPI), kỹ thuật xử lý ma trận thưa và tích hợp thanh toán điện tử.
- Chủ doanh nghiệp bán lẻ: Sở hữu giải pháp công nghệ toàn diện giúp tự động hóa khâu bán hàng, quản lý kho và thúc đẩy doanh số nhờ công nghệ gợi ý sản phẩm thông minh.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ sinh thái này là gì?
Hệ thống yêu cầu máy chủ cài đặt Docker Engine và Docker-Compose, Node.js runtime phiên bản 18+, Python 3.10+, và kết nối cơ sở dữ liệu MongoDB 6.0 (có thể sử dụng MongoDB Atlas).
2. Hệ thống giải quyết giới hạn mở rộng (Scalability) khi số lượng người dùng tăng đột biến như thế nào?
Nhờ kiến trúc phân tách dịch vụ, module FastAPI AI tính toán ma trận có thể được triển khai độc lập trên các cụm tính toán chuyên dụng (GPU/High-CPU instances) hoặc chạy tác vụ theo batch định kỳ (Cron Jobs/Celery), tránh gây tắc nghẽn cho cụm máy chủ NestJS xử lý đơn hàng.
3. Quy trình tích hợp cổng thanh toán MoMo diễn ra như thế nào?
Khi người dùng xác nhận đơn hàng, Backend NestJS tạo mã chữ ký số bảo mật (HMAC-SHA256) gửi yêu cầu khởi tạo giao dịch tới MoMo API. Người dùng được điều hướng tới cổng MoMo; sau khi thanh toán, MoMo gửi tín hiệu xác nhận bất đồng bộ qua Webhook IPN để hệ thống cập nhật trạng thái đơn hàng tự động.
4. Hệ thống cần bảo trì định kỳ những thành phần nào?
Cần định kỳ dọn dẹp các phiên token hết hạn trong collection Account, sao lưu định kỳ cơ sở dữ liệu MongoDB và tái huấn luyện (Retrain) ma trận Similarity Matrix hàng ngày để cập nhật các đánh giá mới nhất của người dùng.
5. Chi phí phát triển và thời gian hoàn vốn (ROI) ước tính?
Với chi phí đầu tư ban đầu tập trung vào khâu triển khai mã nguồn mở và chi phí vận hành đám mây tối ưu (~$30/tháng), các cửa hàng mỹ phẩm vừa và nhỏ có thể đạt điểm hòa vốn và ghi nhận ROI dương chỉ sau 3–6 tháng vận hành nhờ tiết kiệm chi phí marketing và tăng tỷ lệ chuyển đổi đơn hàng.
Kết luận
Khóa luận tốt nghiệp "Xây dựng Website bán mỹ phẩm và Khuyến nghị sản phẩm" của sinh viên Võ Minh Tuấn và Võ Xuân Tú (Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM) là một công trình nghiên cứu ứng dụng toàn diện và thực tiễn. Đề tài không chỉ hoàn thành xuất sắc mục tiêu xây dựng một nền tảng thương mại điện tử hiện đại, bảo mật, đáp ứng chuẩn SEO và trải nghiệm người dùng mượt mà, mà còn giải quyết thành công bài toán cốt lõi của ngành làm đẹp thông qua hệ thống khuyến nghị sản phẩm thông minh (Hybrid Recommendation System).
Sự kết hợp chuẩn mực giữa công nghệ phần mềm tiên tiến (Next.js, NestJS, FastAPI, MongoDB) và các thuật toán máy học (Content-based & Collaborative Filtering) đã chứng minh tiềm năng to lớn trong việc nâng cao hiệu quả kinh doanh và tối ưu hóa trải nghiệm người dùng số. Đây là nền tảng vững chắc để tiếp tục mở rộng các tính năng trí tuệ nhân tạo chuyên sâu trong tương lai.