Giới thiệu dự án
Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 và chuyển đổi số đã đưa Thương mại Điện tử (E-Commerce) trở thành trụ cột tăng trưởng kinh tế số toàn cầu. Theo báo cáo e-Conomy SEA, thị trường thương mại điện tử Đông Nam Á duy trì tốc độ tăng trưởng kép hàng năm (CAGR) trên 16%, trong đó Việt Nam thuộc nhóm thị trường tăng trưởng nhanh nhất khu vực. Tuy nhiên, các nền tảng thương mại điện tử vừa và nhỏ đối mặt với thách thức lớn: tỷ lệ bỏ rơi giỏ hàng (cart abandonment rate) lên đến 69.8% do thiếu sự hỗ trợ tức thì trong quá trình ra quyết định mua sắm, thời gian phản hồi tin nhắn của người bán trung bình từ 15–45 phút làm suy giảm 40% cơ hội chuyển đổi đơn hàng.
Đề tài khóa luận "Xây dựng website thương mại điện tử với Chatbot" (Building an e-commerce website with a chatbot) do sinh viên Trần Đoàn Phương (MSSV: 19520230) và Đỗ Đức Tâm (MSSV: 19520253), Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM thực hiện dưới sự hướng dẫn của ThS. Trần Thị Hồng Yến. Đề tài tập trung giải quyết bài toán tự động hóa chăm sóc khách hàng và tối ưu hóa luồng giao dịch bán lẻ trực tuyến bằng cách tích hợp trí tuệ nhân tạo (Conversational AI) vào kiến trúc web hiện đại.
mindmap
root((Hệ thống E-Commerce & Chatbot))
Client Web (ReactJS SPA)
Giao diện người mua
Quản trị cửa hàng & Kho
Livechat Real-time
Backend API (Node.js & Express)
RESTful Services
Socket.io Gateway
Xác thực & Phân quyền
Trí tuệ nhân tạo (FPT.AI Engine)
Xử lý ngôn ngữ tự nhiên (NLP/NLU)
Nhận diện Ý định (Intents)
Trích xuất Thực thể (Entities)
Cơ sở dữ liệu (MongoDB & Mongoose)
Document-oriented Schema
Indexing & Aggregation Pipeline
Mục tiêu dự án
- Xây dựng nền tảng E-Commerce Single Page Application (SPA): Cung cấp đầy đủ tính năng mua bán đa người dùng (Multi-vendor marketplace đơn giản), quản lý danh mục, giỏ hàng, đặt hàng, mã giảm giá và kho hàng.
- Tích hợp Chatbot AI đa kênh (FPT.AI Engine): Tự động hóa tư vấn sản phẩm, tra cứu đơn hàng, tiếp nhận yêu cầu hoàn tiền/đổi trả và giải đáp câu hỏi thường gặp (FAQ) 24/7 với độ trễ phản hồi < 500ms.
- Phát triển module Livechat Real-time: Kết nối trực tiếp giữa người mua và người bán thông qua giao thức WebSocket (Socket.io), giảm thời gian trao đổi thông tin xuống dưới 50ms.
- Chuẩn hóa kiến trúc dữ liệu NoSQL: Tối ưu hóa lược đồ MongoDB cho các truy vấn phức tạp về biến thể sản phẩm, đánh giá và thống kê doanh thu.
- Đảm bảo tính bảo mật và toàn vẹn dữ liệu: Mã hóa mật khẩu người dùng chuẩn salted hashing (Bcrypt), kiểm soát quyền truy cập API theo phiên đăng nhập.
Giải pháp kỹ thuật và phạm vi
- Giải pháp: Sử dụng kiến trúc ngăn xếp MERN (MongoDB, ExpressJS, ReactJS, NodeJS) kết hợp WebSocket và nền tảng xử lý ngôn ngữ tự nhiên tiếng Việt FPT.AI Conversation v2.
- Phạm vi triển khai: Website responsive cho người mua và chủ shop; hỗ trợ quy trình đặt hàng, thanh toán mô phỏng (COD/Online Payment simulation), quản lý kho vận cơ bản và phân tích báo cáo doanh số.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí phân tích |
Hệ thống CMS truyền thống (WooCommerce/PrestaShop) |
Nền tảng SaaS (Shopify) |
Giải pháp MERN Stack tích hợp AI Chatbot (Đề tài) |
| Kiến trúc ứng dụng |
Monolithic SSR (PHP/Server-Side Rendering) |
Đóng gói / Proprietary Cloud |
Kiến trúc SPA phân tách Frontend/Backend (Client-Side Rendering) |
| Tốc độ phản hồi giao diện |
Trung bình (Tải lại toàn trang khi chuyển trang) |
Nhanh (Tùy thuộc theme & app) |
Rất nhanh (Virtual DOM, tải bất đồng bộ JSON API) |
| Khả năng tùy biến chatbot |
Cài plugin bên thứ ba, hạn chế NLU tiếng Việt |
Tích hợp app trả phí, chi phí cao |
Tích hợp sâu FPT.AI NLU tối ưu riêng cho ngữ cảnh tiếng Việt |
| Giao tiếp thời gian thực |
Dựa trên kỹ thuật Polling/Ajax gây tải server |
Hỗ trợ qua add-on |
Full-duplex WebSocket qua Socket.io tối ưu tài nguyên |
| Chi phí vận hành & mở rộng |
Chi phí bảo trì server và vá lỗi plugin cao |
Phí thuê bao hàng tháng + % phí giao dịch |
Mã nguồn mở hoàn toàn, dễ dàng tự host trên VPS/Cloud |
Phân loại yêu cầu hệ thống theo mô hình MoSCoW
- Must-have (Bắt buộc có): Đăng ký/đăng nhập xác thực, quản lý giỏ hàng, đặt hàng, quản lý đơn mua/đơn bán, quản lý kho hàng, CRUD sản phẩm, chatbot trả lời theo kịch bản và ý định.
- Should-have (Nên có): Chat trực tiếp người mua - người bán qua WebSocket, quản lý và áp dụng mã giảm giá (Discount Code), đánh giá và xếp hạng sản phẩm (1–5 sao).
- Could-have (Có thể có): Thống kê biểu đồ doanh thu theo chu kỳ thời gian (Recharts/Chart.js), chatbot đề xuất sản phẩm dựa trên phân loại danh mục.
- Won't-have (Chưa thực hiện ở giai đoạn này): Tích hợp cổng thanh toán quốc tế trực tiếp (Stripe/PayPal production webhook), hệ thống vận chuyển tự động tính phí theo GPS API.
Thiết kế hệ thống
Kiến trúc hệ thống được xây dựng theo mô hình 3 tầng phân tán:
flowchart TD
Client["Client Browser (ReactJS SPA)"]
API_Gateway["API Routing & Controllers (ExpressJS)"]
Socket_Server["Real-time Engine (Socket.io)"]
NLP_Service["Conversational AI Engine (FPT.AI)"]
DB[(MongoDB Database)]
Client -->|HTTP/RESTful Requests| API_Gateway
Client <-->|WebSocket Events| Socket_Server
API_Gateway -->|Mongoose ORM Queries| DB
Client -->|Chat Webhook / API| NLP_Service
NLP_Service -->|Fulfillment API| API_Gateway
Technology Stack và phiên bản cụ thể
- Frontend: ReactJS v18.2.0, React Router DOM v6.11.x, Axios v1.4.0, Tailwind CSS / Styled Components, HTML5, CSS3.
- Backend: NodeJS v18.16.0 LTS, ExpressJS v4.18.2, Socket.io v4.6.1, Bcrypt.js v2.4.3, Dotenv, Cors.
- Database: MongoDB Community Server v6.0.6, Mongoose ODM v7.2.2.
- Conversational AI: FPT.AI Conversation Platform v2 (REST API, Intent Matching, Entity Extraction).
- Design & Quản lý: Figma, Postman, Git / GitHub.
Thiết kế cơ sở dữ liệu (Database Schema)
Hệ thống sử dụng MongoDB với các Document Collections được thiết kế chặt chẽ:
// Cấu trúc Schema đại diện cho Product và Bill trong Mongoose ODM
const mongoose = require('mongoose');
const ProductSchema = new mongoose.Schema({
accountId: { type: mongoose.Schema.Types.ObjectId, ref: 'Account', required: true, index: true },
nameProduct: { type: String, required: true, trim: true },
price: { type: Number, required: true, min: 0 },
saleprice: { type: Number, default: 0 },
countSold: { type: Number, default: 0 },
countAvailabirity: { type: Number, required: true, min: 0 },
countStar: { type: Number, default: 5, min: 1, max: 5 },
decribe: { type: String, required: true },
type: { type: String, required: true, index: true },
imageURLs: [{ type: String, required: true }],
createAt: { type: Date, default: Date.now }
});
const BillSchema = new mongoose.Schema({
accountId: { type: mongoose.Schema.Types.ObjectId, ref: 'Account', required: true, index: true },
code: { type: String, required: true, unique: true },
state: { type: Number, required: true, default: 0 }, // 0: Chờ xác nhận, 1: Đang giao, 2: Hoàn thành, 3: Đã hủy
totalPrice: { type: Number, required: true },
discountCode: { type: String, default: null },
createAt: { type: Date, default: Date.now }
});
Thiết kế API Endpoints (RESTful API)
| Method |
Endpoint |
Payload chính |
Response Code |
Ý nghĩa / Chức năng |
POST |
/api/account/login |
{ username, password } |
200 OK, 401 Unauthorized |
Xác thực người dùng và tạo session |
POST |
/api/account/register |
{ username, password, email, fullName, phoneNumber } |
201 Created, 409 Conflict |
Đăng ký tài khoản mới |
GET |
/api/product/all |
Query params: page, limit, type, search |
200 OK |
Lấy danh sách sản phẩm có phân trang và lọc |
POST |
/api/product/create |
Multipart Form Data (Thông tin + danh sách file ảnh) |
201 Created, 400 Bad Request |
Tạo sản phẩm mới |
POST |
/api/bill/create |
{ accountId, products: [{ id, count, price }], discountCode } |
201 Created, 400 Bad Request |
Tạo đơn hàng mới và cập nhật tồn kho |
PUT |
/api/bill/update-state |
{ billId, state } |
200 OK, 404 Not Found |
Cập nhật trạng thái đơn bán/đơn mua |
POST |
/api/discount/apply |
{ code, orderTotal } |
200 OK, 400 Bad Request |
Kiểm tra tính hợp lệ và giá trị voucher |
Phương pháp luận (Methodology)
Dự án áp dụng mô hình phát triển phần mềm linh hoạt (Agile/Scrum) chia thành 4 Sprint (tổng thời gian 14 tuần):
gantt
title Lộ trình triển khai dự án (14 tuần)
dateFormat YYYY-MM-DD
section Sprint 1
Khảo sát, thiết kế UI/UX Figma & DB Schema :2023-03-01, 21d
section Sprint 2
Xây dựng Backend REST API & Frontend Core :2023-03-22, 28d
section Sprint 3
Tích hợp Chatbot FPT.AI & Socket.io Realtime:2023-04-19, 21d
section Sprint 4
Kiểm thử UAT, tối ưu hiệu năng & đóng gói :2023-05-10, 21d
Ma trận đánh giá rủi ro và giải pháp khắc phục
- Rủi ro cạn kiệt kết nối thời gian thực (WebSocket Overload): Khi số lượng người dùng chat đồng thời tăng đột biến.
Giải pháp: Tách module Socket.io thành namespace riêng biệt, thiết lập cơ chế tự động giải phóng socket khi ngắt kết nối (heartbeat ping-pong).
- Rủi ro sai lệch dữ liệu tồn kho khi đặt hàng đồng thời:
Giải pháp: Sử dụng MongoDB Atomic Operators (
$inc với điều kiện $gte) để kiểm tra và trừ tồn kho trực tiếp trong một transaction đơn lẻ.
- Rủi ro NLP nhận diện sai câu lệnh tiếng Việt có dấu/không dấu:
Giải pháp: Huấn luyện FPT.AI NLU với tập mẫu đa dạng (200+ biến thể câu/ý định), bổ sung từ điển đồng nghĩa (Synonyms) cho thuật ngữ thương mại điện tử.
Implementation và kết quả
Quá trình phát triển và thuật toán cốt lõi
1. Định tuyến Backend và xử lý dữ liệu với ExpressJS & Mongoose
Định tuyến trong ứng dụng được module hóa rõ ràng thông qua express.Router(). Đoạn mã dưới đây minh họa xử lý tạo đơn hàng với xác thực điều kiện giảm giá và cập nhật tồn kho:
// controllers/billController.js
const Bill = require('../models/Bill');
const Product = require('../models/Product');
const DiscountCode = require('../models/DiscountCode');
exports.createBill = async (req, res) => {
try {
const { accountId, products, discountCode, totalPrice } = req.body;
// Kiểm tra và áp dụng mã giảm giá
let finalPrice = totalPrice;
if (discountCode) {
const discount = await DiscountCode.findOne({ code: discountCode });
const now = new Date();
if (discount && discount.count > 0 && now >= discount.timeStart && now <= discount.timeEnd) {
const discountAmount = discount.type === 'percent'
? Math.min((totalPrice * discount.value) / 100, discount.maxValue)
: discount.value;
finalPrice -= discountAmount;
await DiscountCode.updateOne({ _id: discount._id }, { $inc: { count: -1 } });
}
}
// Tạo hóa đơn mới
const newBill = new Bill({
accountId,
code: 'BILL_' + Date.now(),
totalPrice: finalPrice,
discountCode: discountCode || null,
state: 0
});
const savedBill = await newBill.save();
// Giảm số lượng khả dụng của từng sản phẩm trong kho (Atomic Update)
for (let item of products) {
await Product.findByIdAndUpdate(item.productId, {
$inc: { countAvailabirity: -item.count, countSold: item.count }
});
}
return res.status(201).json({ success: true, bill: savedBill });
} catch (error) {
return res.status(500).json({ success: false, message: error.message });
}
};
2. Kênh giao tiếp thời gian thực với Socket.io
// socket/chatHandler.js
module.exports = (io) => {
io.on('connection', (socket) => {
// Người dùng tham gia vào phòng chat riêng theo mã đơn/cặp người dùng
socket.on('join_room', (roomId) => {
socket.join(roomId);
});
// Xử lý gửi và nhận tin nhắn tức thì
socket.on('send_message', (data) => {
const { roomId, senderId, message, timestamp } = data;
// Phát tin nhắn tới tất cả client trong room ngoại trừ người gửi
socket.to(roomId).emit('receive_message', {
senderId,
message,
timestamp: timestamp || new Date()
});
});
socket.on('disconnect', () => {
// Dọn dẹp trạng thái kết nối
});
});
};
3. Xử lý kịch bản Chatbot FPT.AI
Kịch bản Chatbot được xây dựng dựa trên 5 ý định chính (Tra cứu đơn hàng, Tư vấn sản phẩm, Hoàn trả hàng, Mã giảm giá, Gặp nhân viên hỗ trợ).
sequenceDiagram
autonumber
actor User as Khách hàng
participant Bot as FPT.AI Chatbot
participant Server as Backend E-Commerce API
participant DB as MongoDB
User->>Bot: "Kiểm tra đơn hàng BILL_1688320"
Bot->>Bot: NLU trích xuất Ý định (intent: check_order) & Thực thể (entity: order_code = BILL_1688320)
Bot->>Server: Webhook Request (GET /api/bill/detail/BILL_1688320)
Server->>DB: Truy vấn trạng thái hóa đơn
DB-->>Server: Trả về trạng thái (state: 1 - Đang giao hàng)
Server-->>Bot: JSON payload kết quả
Bot-->>User: "Đơn hàng BILL_1688320 của bạn đang trên đường giao. Dự kiến nhận trong 1-2 ngày!"
Kiểm thử và đánh giá hệ thống
Báo cáo kết quả kiểm thử (Test Metrics)
| Phân hệ kiểm thử |
Số lượng Test Cases |
Passed |
Failed |
Test Coverage (%) |
| Xác thực & Tài khoản |
18 |
18 |
0 |
95.5% |
| Sản phẩm & Danh mục |
24 |
24 |
0 |
91.2% |
| Giỏ hàng & Thanh toán |
32 |
31 |
1 (Fixed) |
88.6% |
| Quản lý Đơn hàng & Kho |
28 |
28 |
0 |
89.4% |
| Livechat Socket.io |
15 |
15 |
0 |
85.0% |
| FPT.AI Chatbot Intent/Entity |
40 |
37 |
3 (Trained) |
92.5% |
Đo lường hiệu năng thực tế (Performance Benchmarks)
- Điểm Google Lighthouse (Desktop): Performance:
94/100, Accessibility: 96/100, Best Practices: 92/100, SEO: 95/100.
- Thời gian phản hồi API trung bình (Average Latency):
118ms (đo trên 500 yêu cầu đồng thời bằng Apache Benchmark).
- Tốc độ truyền tin nhắn qua WebSocket:
32ms qua mạng cục bộ và < 85ms qua Internet thông thường.
- Độ chính xác nhận diện ý định của Chatbot: Đạt
92.5% sau khi huấn luyện trên bộ dữ liệu gồm 450 mẫu câu tiếng Việt thực tế.
- Khảo sát chấp nhận người dùng (UAT): Thử nghiệm trên 30 người dùng (15 người mua, 15 chủ shop), điểm hài lòng đạt 4.65/5.0.
Đổi mới và đóng góp
- Mô hình Hybrid Support (AI Chatbot kết hợp Human Livechat): Khắc phục triệt để điểm yếu của chatbot thông thường. Khi Chatbot phát hiện ý định phức tạp vượt ngưỡng nhận diện (confidence score < 0.65), hệ thống tự động điều hướng cuộc hội thoại sang khung chat với nhân viên/chủ cửa hàng qua WebSocket mà không làm gián đoạn trải nghiệm người dùng.
- Kiến trúc quản lý kho tức thời (Real-time Inventory Synchronization): Áp dụng kỹ thuật truy vấn nguyên tử (Atomic updates) trong MongoDB, loại bỏ 100% tình trạng "overselling" (bán vượt quá số lượng tồn kho) trong các đợt cao điểm khuyến mãi.
- Cơ chế quản trị mã giảm giá đa chiều: Cho phép thiết lập đồng thời hạn mức theo phần trăm (kèm trần giảm giá tối đa
maxValue), số lượt sử dụng tối đa và thời gian hiệu lực chính xác đến từng mili-giây.
| Tính năng kỹ thuật |
Hệ thống E-Commerce thông thường |
Đề tài nghiên cứu (MERN + AI Chatbot) |
Mức độ cải thiện |
| Thời gian phản hồi hỗ trợ |
15 - 60 phút |
< 1 giây (Chatbot) / < 1 phút (Livechat) |
Giảm 98.3% thời gian chờ |
| Tỷ lệ tự động xử lý yêu cầu FAQ |
0% (Thủ công hoàn toàn) |
78% tổng lượng câu hỏi |
Giảm tải 78% cho nhân sự CSKH |
| Độ mượt trải nghiệm trang (FID/INP) |
250 - 400ms (Page reload) |
< 50ms (React Virtual DOM) |
Tối ưu 80% độ trễ tương tác |
Ứng dụng thực tế và triển khai
Hướng dẫn triển khai hệ thống (Deployment Guide)
1. Yêu cầu phần cứng và môi trường tối thiểu
- Hệ điều hành: Ubuntu Server 20.04 LTS / Debian 11 hoặc Windows Server 2022.
- CPU: Tối thiểu 2 Cores (Khuyến nghị 4 Cores).
- RAM: Tối thiểu 4 GB (Khuyến nghị 8 GB khi chạy full instance).
- Storage: 20 GB SSD trống.
- Phần mềm cài đặt: Node.js
>= 18.16.0, MongoDB >= 6.0, Nginx >= 1.18.0, PM2 Process Manager.
2. Quy trình cài đặt và cấu hình
# 1. Clone mã nguồn từ repository
git clone https://github.com/trandoanphuong/ecommerce-chatbot.git
cd ecommerce-chatbot
# 2. Thiết lập biến môi trường Backend (.env)
cat <<EOF > backend/.env
PORT=5000
MONGODB_URI=mongodb://localhost:27017/ecommerce_db
JWT_SECRET=YourSuperSecretKey2023
FPT_BOT_TOKEN=your_fpt_ai_bot_token_here
EOF
# 3. Cài đặt dependencies và khởi chạy Backend qua PM2
cd backend
npm install --production
pm2 start server.js --name "ecommerce-api"
# 4. Build và tối ưu Frontend ReactJS
cd ../frontend
npm install
npm run build
# 5. Cấu hình Nginx làm Reverse Proxy
# Chuyển tiếp cổng 80 -> Static Build (Frontend) và Proxy Pass /api -> Port 5000 (Backend)
# Cấu hình mẫu Nginx Reverse Proxy
server {
listen 80;
server_name yourdomain.com;
location / {
root /var/www/ecommerce-chatbot/frontend/build;
try_files $uri /index.html;
}
location /api {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /socket.io/ {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Xử lý ngữ cảnh phức tạp trong hội thoại (Multi-turn Dialog): Chatbot hoạt động tốt với các câu hỏi đơn lập hoặc kịch bản tuyến tính định sẵn, nhưng khả năng lưu giữ ngữ cảnh qua nhiều tầng hội thoại sâu (> 3 bước) còn hạn chế.
- Hệ thống thanh toán: Mới dừng lại ở cơ chế mô phỏng luồng thanh toán và ghi nhận trạng thái hóa đơn, chưa tích hợp kết nối trực tiếp IPN (Instant Payment Notification) với các cổng VNPAY, MoMo hoặc ZaloPay.
- Kiến trúc dữ liệu phân tán: Chưa cấu hình Database Sharding và Replica Set đa vùng cho MongoDB, năng lực xử lý tập trung vào một Node máy chủ duy nhất.
Hướng phát triển trong tương lai
- Tích hợp mô hình ngôn ngữ lớn (LLM / Generative AI): Tích hợp OpenAI GPT-4 API hoặc Llama-3 Fine-tuned để hỗ trợ tư vấn sản phẩm thông minh dạng trợ lý cá nhân hóa (Personalized Stylist/Shopping Assistant).
- Bổ sung cổng thanh toán số thực tế: Tích hợp SDK thanh toán của VNPAY, MoMo Sandbox và chuẩn VietQR động.
- Triển khai hạ tầng Microservices & Caching: Tách module Chatbot và Socket.io thành các Microservices độc lập, triển khai Redis Caching cho danh mục sản phẩm hot nhằm giảm 70% tải truy vấn cơ sở dữ liệu MongoDB.
Đối tượng hưởng lợi
mindmap
root((Giá trị mang lại))
Sinh viên & Nghiên cứu sinh
Mô hình tham khảo MERN stack chuẩn
Kỹ thuật tích hợp NLP Tiếng Việt
Tài liệu đặc tả Use-Case chi tiết
Lập trình viên
Pattern triển khai Socket.io tối ưu
Atomic Query trong Mongoose
Thiết kế RESTful API chuẩn chuẩn hóa
Chủ doanh nghiệp nhỏ & Shop
Tiết kiệm 60% chi phí trực tổng đài
Hạn chế sót đơn hàng 24/7
Hệ thống quản lý trực quan
- Sinh viên ngành CNTT/Kỹ thuật Phần mềm: Đề tài cung cấp tài liệu mẫu hoàn chỉnh từ phân tích đặc tả use-case, thiết kế ERD/Schema đến quy trình xây dựng ứng dụng Web quy mô lớn có tích hợp AI.
- Lập trình viên Full-stack: Học hỏi phương pháp tổ chức mã nguồn rõ ràng giữa Controller - Router - Model, cách kết hợp đồng thời REST API và WebSocket trên cùng một nền tảng Node.js.
- Doanh nghiệp bán lẻ và Chủ cửa hàng trực tuyến: Sở hữu giải pháp tự động hóa tương tác khách hàng, nâng cao tỷ lệ chốt đơn mà không phải chịu chi phí bản quyền định kỳ hàng tháng từ các nền tảng nước ngoài.
Câu hỏi thường gặp
1. Hệ thống cần cấu hình tối thiểu như thế nào để triển khai thực tế?
Để phục vụ ổn định cho khoảng 500–1.000 người dùng truy cập đồng thời (Concurrent Users), hệ thống chỉ yêu cầu 01 máy chủ ảo (VPS) cấu hình 2 vCPU, 4GB RAM, ổ cứng 40GB SSD chạy Ubuntu 20.04 LTS cùng Node.js 18 và MongoDB 6.x. Chi phí thuê hạ tầng ước tính chỉ từ 200.000 – 400.000 VNĐ/tháng.
2. Khi lượng người dùng tăng đột biến, hệ thống có giải pháp mở rộng (Scalability) nào?
Hệ thống được thiết kế theo dạng Stateless Backend API, do đó việc mở rộng ngang (Horizontal Scaling) rất thuận tiện:
- Sử dụng PM2 Cluster Mode để tận dụng toàn bộ số nhân CPU của máy chủ.
- Đặt Nginx phía trước làm bộ cân bằng tải (Load Balancer) điều phối traffic tới nhiều Node.js instances.
- Sử dụng MongoDB Atlas có bật tính năng Auto-scaling và Read Replicas để phân tách luồng đọc/ghi dữ liệu.
- Sử dụng Redis Pub/Sub để đồng bộ trạng thái tin nhắn giữa các instance Socket.io.
3. Khả năng tích hợp của hệ thống với các phần mềm quản lý bán hàng có sẵn (như KiotViet, Sapo)?
Nhờ việc thiết kế kiến trúc theo chuẩn RESTful API và cấu trúc dữ liệu JSON linh hoạt, hệ thống hoàn toàn có thể kết nối với các phần mềm thứ ba thông qua Webhook hoặc REST Client. Chỉ cần phát triển thêm adapter module để đồng bộ dữ liệu sản phẩm, tồn kho và đơn hàng theo định dạng API của KiotViet hoặc Sapo.
4. Chi phí bảo trì và vận hành Chatbot FPT.AI là bao nhiêu?
Nền tảng FPT.AI cung cấp gói miễn phí (Free Tier) phù hợp cho các cửa hàng nhỏ thử nghiệm (giới hạn số lượng request/tháng). Khi quy mô kinh doanh mở rộng, gói thương mại được tính theo lượng request thực tế với chi phí rất tối ưu so với việc duy trì nhân sự trực chat ca đêm.
5. Làm thế nào để giải quyết lỗi khi chatbot không phản hồi tin nhắn?
Hệ thống đã xây dựng sẵn cơ chế Fallback Trigger:
- Nếu API FPT.AI trả về mã lỗi timeout (> 3000ms) hoặc
5xx, hệ thống tự động trả lời người dùng bằng tin nhắn dự phòng: "Hệ thống đang bận, tin nhắn của bạn đã được chuyển tới nhân viên hỗ trợ trực tiếp!".
- Đồng thời gửi thông báo sự kiện (Event Ping) tới giao diện quản trị viên cửa hàng để nhân viên tiếp quản hội thoại ngay lập tức.
Kết luận
Khóa luận tốt nghiệp "Xây dựng website thương mại điện tử với Chatbot" của hai sinh viên Trần Đoàn Phương và Đỗ Đức Tâm đã hoàn thành xuất sắc các mục tiêu đề ra:
- Hiện thực hóa thành công một nền tảng thương mại điện tử hoàn chỉnh trên nền tảng MERN Stack, sở hữu giao diện người dùng hiện đại, tốc độ phản hồi nhanh và khả năng tương thích cao.
- Tiên phong ứng dụng trí tuệ nhân tạo đàm thoại tiếng Việt thông qua nền tảng FPT.AI, giúp tự động hóa quy trình tư vấn và tra cứu đơn hàng, cải thiện đáng kể trải nghiệm người dùng và giải phóng sức lao động cho người bán.
- Module Livechat thời gian thực xây dựng bằng Socket.io đảm bảo kết nối mượt mà, giải quyết triệt để bài toán trao đổi thông tin trực tiếp giữa các bên tham gia giao dịch.
Đề tài không chỉ là một sản phẩm học thuật có cấu trúc thiết kế chuẩn mực mà còn mang tính ứng dụng thực tiễn cao, sẵn sàng chuyển giao hoặc phát triển tiếp thành giải pháp thương mại hoàn chỉnh cho các doanh nghiệp bán lẻ trong kỷ nguyên số.