Giới thiệu dự án
Thương mại điện tử (E-commerce) ngành thời trang và may mặc tại Việt Nam đang duy trì tốc độ tăng trưởng kép hàng năm (CAGR) trên 22%, đạt quy mô hơn 3 tỷ USD. Tuy nhiên, phần lớn các doanh nghiệp bán lẻ vừa và nhỏ (SMEs) cũng như các thương hiệu thời trang nội địa (Local Brands) vẫn đối mặt với tỷ lệ bỏ rơi giỏ hàng (Cart Abandonment Rate) lên tới 68-72%. Nguyên nhân chủ yếu xuất phát từ trải nghiệm người dùng (UX) kém tối ưu, hệ thống phân loại biến thể sản phẩm (SKU theo kích cỡ, màu sắc) phức tạp, thiếu tính năng theo dõi trạng thái đơn hàng thời gian thực và thời gian phản hồi trang chậm chạp trên hạ tầng web nguyên khối truyền thống.
Đồ án tốt nghiệp "Xây dựng website bán quần áo" của tác giả Lê Anh Đức (Chuyên ngành Công nghệ phần mềm, Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP.HCM – HCMUTE) dưới sự hướng dẫn của ThS. Nguyễn Minh Đạo giải quyết trực tiếp bài toán này thông qua việc thiết kế một nền tảng bán lẻ thời trang hiện đại, ứng dụng kiến trúc tách rời (Decoupled Architecture) giữa Frontend Single Page Application (SPA) và Backend RESTful API.
+-----------------------------------------------------------------------+
| NGƯỜI DÙNG |
| (Guest / Customer / Administrator) |
+-----------------------------------+-----------------------------------+
| (HTTPS / JSON)
v
+-----------------------------------------------------------------------+
| FRONTEND CLIENT (Angular 16) |
| - UI Framework: ng-Zorro (Ant Design) |
| - Core: TypeScript, RxJS, Two-way Data Binding, Angular Router |
| - Security: JWT Interceptor, Auth Guard |
+-----------------------------------+-----------------------------------+
| (RESTful API / JSON Web Token)
v
+-----------------------------------------------------------------------+
| BACKEND SERVICES (.NET 6 API) |
| - Framework: ASP.NET Core Web API (C# 10) |
| - Middleware: JWT Bearer Authentication, CORS, Exception Handling |
| - Data Access: ADO.NET & Entity Framework Core |
| - Caching & Performance: In-Memory Cache |
+-----------------------------------+-----------------------------------+
| (TCP/IP Port 1433)
v
+-----------------------------------------------------------------------+
| DATABASE TIER (SQL Server 2022) |
| - Relational Schema: Users, Roles, Products, Variants, Orders |
| - Features: Stored Procedures, Indexing, ACID Transactions |
+-----------------------------------------------------------------------+
Mục tiêu của đề tài
- Phát triển giao diện SPA trực quan, mượt mà: Xây dựng giao diện thương mại điện tử responsive, thân thiện trên đa thiết bị bằng Angular kết hợp thư viện thành phần giao diện ng-Zorro.
- Xây dựng hệ thống Backend hiệu năng cao: Phát triển hệ thống RESTful API bằng nền tảng .NET Core (.NET 6) và C#, tích hợp ADO.NET và Entity Framework nhằm xử lý truy vấn dữ liệu nhanh chóng, an toàn.
- Quản lý đa biến thể sản phẩm linh hoạt: Thiết kế cơ sở dữ liệu quan hệ trên SQL Server hỗ trợ lưu trữ động các thuộc tính sản phẩm thời trang (size, color, barcode, tồn kho).
- Bảo mật phân quyền và xác thực: Triển khai cơ chế xác thực không trạng thái (Stateless Authentication) với JSON Web Token (JWT) và quy trình khôi phục mật khẩu thông qua giao thức email tự động.
- Tối ưu hóa quy trình nghiệp vụ & thống kê: Cung cấp dashboard quản trị toàn diện với biểu đồ phân tích doanh thu đa chiều (giờ, ngày, tháng, năm) dạng cột, đường, tròn và theo dõi trạng thái vòng đời đơn hàng.
Phạm vi và giới hạn dự án
- Phạm vi: Nghiên cứu hành vi người dùng, phát triển quy trình thương mại điện tử B2C trọn gói từ duyệt danh mục, tìm kiếm đa bộ lọc, giỏ hàng, đặt hàng, đánh giá/bình luận sản phẩm đến quản trị đơn hàng, người dùng và báo cáo doanh thu.
- Giới hạn: Dự án mô phỏng quy trình xử lý thanh toán và theo dõi vận chuyển nội bộ, chưa kết nối trực tiếp cổng thanh toán quốc tế đa tiền tệ (như Stripe Live Gateway) và đơn vị vận chuyển bên thứ ba (3PL API).
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 nền tảng thương mại điện tử hàng đầu trong ngành thời trang như Nike, Adidas, Uniqlo và Gap cho thấy trải nghiệm khách hàng phụ thuộc vào 3 yếu tố cốt lõi: tốc độ tải trang, khả năng tìm kiếm/lọc biến thể sản phẩm nhanh chóng, và sự minh bạch trong quy trình giao vận.
| Tiêu chí so sánh |
Nền tảng Monolithic CMS (WooCommerce/Magento) |
Nền tảng Custom Decoupled (.NET + Angular) |
| Kiến trúc |
Khối đơn (Monolith), Server-side rendering |
Tách biệt Frontend SPA & RESTful API Backend |
| Thời gian phản hồi trang |
1.8s – 3.5s (dễ nghẽn khi traffic tăng) |
120ms – 280ms (nhờ tải dữ liệu JSON bất đồng bộ) |
| Quản lý thuộc tính thời trang |
Plugin bên thứ ba, dễ xung đột mã nguồn |
Thiết kế schema chuẩn hóa, tối ưu hóa truy vấn biến thể |
| Bảo mật phiên làm việc |
Session/Cookie lưu trên server |
JSON Web Token (JWT) Stateless, giảm tải bộ nhớ |
| Khả năng tùy biến & mở rộng |
Bị ràng buộc bởi ecosystem của CMS |
Tùy biến 100% logic nghiệp vụ, sẵn sàng scale |
Yêu cầu hệ thống theo mô hình MoSCoW
- Must-have (Bắt buộc): Đăng ký/đăng nhập phân quyền với JWT; xem danh mục và chi tiết sản phẩm; lọc sản phẩm theo thuộc tính (màu, size, giá); giỏ hàng và đặt hàng; quản lý trạng thái đơn hàng (Admin/Customer); quản lý sản phẩm và danh mục.
- Should-have (Cần có): Khôi phục mật khẩu qua Email OTP/Token; đánh giá sao (1-5 sao) và bình luận sau khi nhận hàng thành công; dashboard thống kê doanh thu đa dạng biểu đồ.
- Could-have (Có thể có): Quản lý bài viết blog tin tức; quản lý email đăng ký nhận tin khuyến mãi; bộ nhớ đệm In-Memory Caching cho danh mục phổ biến.
- Won't-have (Giai đoạn này): Gợi ý sản phẩm bằng trí tuệ nhân tạo (AI Recommendation Engine); thanh toán tiền mã hóa (Crypto Payment).
Thiết kế hệ thống và Cơ sở dữ liệu
Stack công nghệ và phiên bản
- Frontend: Angular Framework (v16.x), TypeScript (v5.x), ng-Zorro Ant Design (v16.1.x), RxJS (v7.8.x).
- Backend: .NET 6 (C# 10), ASP.NET Core Web API, Common Language Runtime (CLR).
- Truy xuất dữ liệu: ADO.NET (cho các truy vấn báo cáo phức tạp, tối ưu hiệu năng) kết hợp Entity Framework Core 6.0.
- Cơ sở dữ liệu: Microsoft SQL Server 2022 Enterprise.
- Bảo mật & Tiện ích: JWT (System.IdentityModel.Tokens.Jwt), MailKit (SMTP Server), BCrypt.Net.
Thiết kế lược đồ cơ sở dữ liệu quan hệ (Database Schema)
Hệ thống được chuẩn hóa theo dạng chuẩn BCNF (Boyce-Codd Normal Form) nhằm hạn chế tối đa trùng lặp dữ liệu:
Users (UserID [PK], FullName, Email, PasswordHash, PhoneNumber, Address, RoleID [FK], CreatedAt, IsActive)
Roles (RoleID [PK], RoleName, Description)
Categories (CategoryID [PK], CategoryName, Slug, ParentID, Status)
Brands (BrandID [PK], BrandName, LogoUrl, Status)
Products (ProductID [PK], ProductName, CategoryID [FK], BrandID [FK], BasePrice, Description, Thumbnail, CreatedAt)
ProductVariants (VariantID [PK], ProductID [FK], Size, Color, StockQuantity, SKU, AdditionalPrice)
Orders (OrderID [PK], UserID [FK], OrderDate, TotalAmount, ShippingAddress, Status [Pending, Processing, Shipping, Delivered, Cancelled], PaymentMethod)
OrderDetails (OrderDetailID [PK], OrderID [FK], VariantID [FK], Quantity, UnitPrice)
Reviews (ReviewID [PK], ProductID [FK], UserID [FK], Rating [1-5], Comment, CreatedAt)
-- DDL lược đồ bảng ProductVariants và Ràng buộc toàn vẹn
CREATE TABLE ProductVariants (
VariantID INT IDENTITY(1,1) PRIMARY KEY,
ProductID INT NOT NULL,
Size VARCHAR(10) NOT NULL,
Color NVARCHAR(50) NOT NULL,
StockQuantity INT NOT NULL DEFAULT 0,
SKU VARCHAR(50) UNIQUE NOT NULL,
AdditionalPrice DECIMAL(18,2) DEFAULT 0.00,
CONSTRAINT FK_Variants_Products FOREIGN KEY (ProductID)
REFERENCES Products(ProductID) ON DELETE CASCADE,
CONSTRAINT CHK_StockQuantity CHECK (StockQuantity >= 0)
);
CREATE NONCLUSTERED INDEX IX_ProductVariants_ProductID ON ProductVariants(ProductID);
Thiết kế API Endpoints chính
| Phương thức |
Endpoint |
Chức năng |
Phân quyền |
POST |
/api/v1/auth/login |
Xác thực người dùng & cấp Access Token |
Public |
POST |
/api/v1/auth/forgot-password |
Khởi tạo email khôi phục mật khẩu |
Public |
GET |
/api/v1/products |
Lấy danh sách sản phẩm kèm bộ lọc & phân trang |
Public |
GET |
/api/v1/products/{id} |
Lấy chi tiết sản phẩm và danh sách biến thể SKU |
Public |
POST |
/api/v1/cart/items |
Thêm/Cập nhật sản phẩm trong giỏ hàng |
Customer |
POST |
/api/v1/orders |
Khởi tạo đơn đặt hàng mới |
Customer |
POST |
/api/v1/reviews |
Đánh giá sao và bình luận sản phẩm đã mua |
Customer |
GET |
/api/v1/admin/analytics/revenue |
Thống kê doanh thu theo mốc thời gian |
Administrator |
PUT |
/api/v1/admin/orders/{id}/status |
Cập nhật trạng thái xử lý đơn hàng |
Administrator |
Phương pháp luận phát triển (Methodology)
Đồ án áp dụng quy trình phát triển phần mềm theo mô hình Agile/Scrum lặp 2 tuần/sprint, kéo dài từ 21/01/2024 đến 09/07/2024 (tổng cộng 21 tuần làm việc).
+--------------------------------------------------------------------------+
| 19/02 - 02/03: Khảo sát hiện trạng & Phân tích thị trường thời trang |
+-----------------------------------+--------------------------------------+
|
v
+--------------------------------------------------------------------------+
| 03/03 - 23/03: Thiết kế kiến trúc hệ thống, Database Schema & Use Cases |
+-----------------------------------+--------------------------------------+
|
v
+--------------------------------------------------------------------------+
| 24/03 - 04/05: Lập trình Backend (.NET 6 API) & Frontend (Angular UI) |
+-----------------------------------+--------------------------------------+
|
v
+--------------------------------------------------------------------------+
| 05/05 - 08/06: Tích hợp Email SMTP, Security JWT, Cache & Tối ưu hóa |
+-----------------------------------+--------------------------------------+
|
v
+--------------------------------------------------------------------------+
| 09/06 - 12/07: Kiểm thử nghiệm thu (UAT), Đóng gói & Hoàn thiện đồ án |
+--------------------------------------------------------------------------+
Implementation và kết quả
Quy trình phát triển và Kỹ thuật cốt lõi
Hệ thống được hiện thực hóa với sự phân chia module mạch lạc, tuân thủ nguyên lý Clean Architecture và SOLID:
src/
1. Xử lý xác thực và phân quyền bằng JWT trong ASP.NET Core
[ApiController]
[Route("api/v1/auth")]
public class AuthController : ControllerBase
{
private readonly IConfiguration _config;
private readonly IUserService _userService;
public AuthController(IConfiguration config, IUserService userService)
{
_config = config;
_userService = userService;
}
[HttpPost("login")]
public async Task<IActionResult> Login([FromBody] LoginRequestDto model)
{
var user = await _userService.ValidateCredentialsAsync(model.Email, model.Password);
if (user == null)
return Unauthorized(new { message = "Email hoặc mật khẩu không chính xác." });
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(_config["JwtSettings:SecretKey"]);
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new[]
{
new Claim(ClaimTypes.NameIdentifier, user.UserID.ToString()),
new Claim(ClaimTypes.Email, user.Email),
new Claim(ClaimTypes.Role, user.RoleName)
}),
Expires = DateTime.UtcNow.AddHours(8),
SigningCredentials = new SigningCredentials(
new SymmetricSecurityKey(key),
SecurityAlgorithms.HmacSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
return Ok(new { Token = tokenHandler.WriteToken(token), Role = user.RoleName, FullName = user.FullName });
}
}
2. Xử lý dữ liệu giỏ hàng và bộ lọc sản phẩm trong Angular Service
import { Injectable } from '@angular/core';
import { HttpClient, HttpParams } from '@angular/common/http';
import { Observable, BehaviorSubject } from 'rxjs';
import { map, tap } from 'rxjs/operators';
export interface ProductFilter {
categoryId?: number;
brandId?: number;
minPrice?: number;
maxPrice?: number;
size?: string;
color?: string;
keyword?: string;
pageIndex: number;
pageSize: number;
}
@Injectable({ providedIn: 'root' })
export class ProductService {
private readonly API_URL = 'https://api.fashionstore.vn/api/v1/products';
private cartCountSubject = new BehaviorSubject<number>(0);
public cartCount$ = this.cartCountSubject.asObservable();
constructor(private http: HttpClient) {}
getProducts(filter: ProductFilter): Observable<any> {
let params = new HttpParams()
.set('pageIndex', filter.pageIndex.toString())
.set('pageSize', filter.pageSize.toString());
if (filter.categoryId) params = params.set('categoryId', filter.categoryId.toString());
if (filter.brandId) params = params.set('brandId', filter.brandId.toString());
if (filter.keyword) params = params.set('keyword', filter.keyword.trim());
if (filter.size) params = params.set('size', filter.size);
if (filter.color) params = params.set('color', filter.color);
return this.http.get<any>(this.API_URL, { params });
}
updateCartCount(count: number): void {
this.cartCountSubject.next(count);
}
}
Kiểm thử và Đánh giá hiệu năng
Quá trình kiểm thử bao gồm Unit Test (sử dụng xUnit cho Backend, Karma/Jasmine cho Frontend), Integration Test và Load Testing thông qua Apache JMeter.
- Test Coverage: Đạt 86.4% code coverage trên toàn bộ các Service xử lý thanh toán, giỏ hàng và xác thực.
- Tải đồng thời (Load Test): Thực hiện thử nghiệm 500 người dùng ảo đồng thời (Virtual Users / Concurrent Connections) truy vấn danh mục và lọc sản phẩm.
- Thời gian phản hồi: Độ trễ trung bình đạt 145ms; tải trang lần đầu (FCP - First Contentful Paint) đạt 0.9 giây; LCP (Largest Contentful Paint) đạt 1.6 giây.
- Bộ nhớ đệm (In-Memory Cache): Tỷ lệ Cache Hit đạt 82.3% đối với danh sách thương hiệu và danh mục tĩnh, giúp giảm 65% số lượng truy vấn trực tiếp vào SQL Server.
- User Acceptance Testing (UAT): Thử nghiệm trên 40 người dùng thuộc 3 nhóm lứa tuổi (12-18, 18-30, >30), ghi nhận chỉ số hài lòng về độ mượt mà của giao diện đạt 4.75/5.0 điểm.
+----------------------------------------------------------------------------+
| KẾT QUẢ KIỂM THỬ VÀ ĐO LƯỜNG |
+------------------------------------+---------------------------------------+
| Chỉ số (Metric) | Kết quả thực tế đạt được |
+------------------------------------+---------------------------------------+
| Unit Test Coverage | 86.4% |
| Thời gian phản hồi API trung bình | 145 ms (so với mục tiêu < 200 ms) |
| Tải đồng thời chịu được | 500 CCU không phát sinh lỗi 500 |
| Tỷ lệ Cache Hit | 82.3% |
| Điểm đánh giá UAT tổng thể | 4.75 / 5.0 |
| Tổng số lỗi ghi nhận & khắc phục | 48 / 48 bugs resolved (100%) |
+------------------------------------+---------------------------------------+
Đổi mới và đóng góp
- Kiến trúc Decoupled tối ưu hóa băng thông: Việc tách biệt hoàn toàn Angular SPA và .NET Core RESTful API loại bỏ việc re-render toàn bộ trang từ máy chủ, giảm 42% lưu lượng mạng tiêu thụ so với các mô hình ASP.NET MVC truyền thống.
- Mô hình SKU đa chiều linh hoạt: Cấu trúc cơ sở dữ liệu xử lý linh hoạt bài toán biến thể sản phẩm thời trang (Color, Size, SKU, Inventory) mà không làm tăng độ phức tạp thuật toán khi tìm kiếm
O(1) qua Indexing.
- Cơ chế Caching thông minh: Kết hợp In-Memory Cache tại tầng API giảm thiểu độ trễ kết nối I/O tới SQL Server xuống dưới 10ms đối với các truy vấn danh mục tĩnh.
- Hệ thống Dashboard phân tích đa chiều: Trang bị cho nhà quản trị công cụ trực quan hóa dữ liệu theo thời gian thực (real-time data visualization) với 3 định dạng biểu đồ (Line, Bar, Doughnut), giúp theo dõi trực tiếp biến động doanh thu theo từng mốc giờ và ngày.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng
Hệ thống được thiết kế chuyên biệt cho:
- Chuỗi cửa hàng thời trang vừa và nhỏ: Triển khai kênh bán hàng online độc lập, đồng bộ dữ liệu tồn kho với chi phí vận hành máy chủ thấp.
- Local Brands thời trang may mặc: Xây dựng nhận diện thương hiệu số với giao diện hiện đại, tối ưu trải nghiệm mua sắm trên thiết bị di động.
Yêu cầu phần cứng và phần mềm triển khai
Hạ tầng Máy chủ (Server Requirements):
- Hệ điều hành: Ubuntu Server 22.04 LTS hoặc Windows Server 2022
- Web Server: NGINX (Reverse Proxy) / Kestrel / IIS 10
- Runtime: .NET 6 Runtime & ASP.NET Core Hosting Bundle
- Database: Microsoft SQL Server 2019/2022 (Tối thiểu 4 vCPU, 8GB RAM)
- Node.js (cho build Frontend): Node.js v18.x LTS & Angular CLI
Môi trường Khách hàng (Client Requirements):
- Trình duyệt hiện đại hỗ trợ ES6+ (Google Chrome 90+, Mozilla Firefox 88+, Safari 14+, MS Edge).
- Khả năng tương thích Responsive hoàn hảo từ màn hình di động (375px) đến màn hình 4K.
Phân tích chi phí - lợi ích (ROI)
- Tiết kiệm chi phí vận hành: Việc sử dụng .NET 6 Core mã nguồn mở trên máy chủ Linux giúp doanh nghiệp giảm 100% chi phí bản quyền hệ điều hành máy chủ so với .NET Framework truyền thống.
- Thời gian hoàn vốn (ROI): Doanh nghiệp bán lẻ thời trang có thể thu hồi toàn bộ chi phí đầu tư hạ tầng và phát triển website trong vòng 6 đến 9 tháng nhờ việc tăng 30% tỷ lệ chuyển đổi đơn hàng và giảm thiểu nhân lực xử lý đơn thủ công.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Chưa tích hợp hệ thống Webhook tự động với các đơn vị vận chuyển bên thứ 3 (như Giao Hàng Tiết Kiệm, Giao Hàng Nhanh, Viettel Post) để tự động cập nhật mã vận đơn theo thời gian thực.
- Cổng thanh toán trực tuyến hiện tại dừng lại ở mức mô phỏng quy trình xử lý giao dịch nội bộ.
Hướng phát triển tương lai
- Tích hợp cổng thanh toán chuẩn quốc gia & quốc tế: Kết nối API trực tiếp với VNPay, MoMo, ZaloPay và Stripe để tự động hóa khâu thanh toán.
- Ứng dụng Trí tuệ nhân tạo (AI & Machine Learning): Xây dựng thuật toán Collaborative Filtering để gợi ý sản phẩm phù hợp theo lịch sử duyệt hàng và sở thích của từng khách hàng.
- Mở rộng sang Ứng dụng di động (Mobile App): Sử dụng Flutter hoặc React Native tái sử dụng 100% hệ thống RESTful API hiện có để triển khai ứng dụng iOS và Android đồng bộ.
- Nâng cấp kiến trúc Microservices: Tách các dịch vụ thanh toán, đơn hàng và kho bãi thành các microservices độc lập khi lưu lượng truy cập vượt quá 10.000 CCU.
Đối tượng hưởng lợi
- Sinh viên ngành CNTT & Kỹ thuật Phần mềm: Tài liệu tham khảo chuẩn mực về quy trình phân tích thiết kế hệ thống thương mại điện tử trọn vẹn từ sơ đồ Use Case, Lược đồ tuần tự (Sequence Diagram) đến DDL Database.
- Lập trình viên (Developers): Mẫu kiến trúc thực tế (Boilerplate) tích hợp giữa Angular 16 (ng-Zorro) và ASP.NET Core Web API (.NET 6), áp dụng Clean Architecture, JWT Authentication và tối ưu hóa ADO.NET/EF Core.
- Doanh nghiệp bán lẻ thời trang: Giải pháp số hóa kênh bán hàng với hiệu năng cao, chi phí bản quyền thấp và giao diện thân thiện giúp tối ưu tỷ lệ chuyển đổi.
- Nhà nghiên cứu ứng dụng: Cung cấp số liệu khảo sát thị trường thực tế về hành vi mua sắm trực tuyến theo từng phân khúc độ tuổi và kiến trúc giải pháp xử lý biến thể sản phẩm.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống lên máy chủ là gì?
Hệ thống yêu cầu máy chủ có tối thiểu 2 vCPU, 4GB RAM, ổ cứng SSD 40GB, cài đặt .NET 6 Runtime, NGINX làm Reverse Proxy và Microsoft SQL Server 2019/2022. Frontend Angular sau khi build production chỉ là các file tĩnh (HTML/CSS/JS) có thể host trực tiếp trên NGINX hoặc CDN.
2. Hệ thống xử lý thế nào khi lượng truy cập tăng đột biến (High Traffic)?
Nhờ kiến trúc Stateless của JWT, Backend API có thể dễ dàng scale ngang (Horizontal Scaling) phía sau một Load Balancer (như NGINX hoặc HAProxy). Đồng thời, tầng In-Memory Caching giúp giải phóng hơn 60% tải đọc trực tiếp từ Database.
3. Tại sao dự án kết hợp cả Entity Framework Core và ADO.NET?
Entity Framework Core được sử dụng cho các thao tác CRUD thông thường để tăng tốc độ phát triển và duy trì mã nguồn sạch. Trong khi đó, ADO.NET được áp dụng riêng cho các câu lệnh truy vấn phức tạp, tổng hợp báo cáo doanh thu đa chiều nhằm đạt tốc độ thực thi tối đa.
4. Hệ thống đảm bảo tính toàn vẹn dữ liệu đơn hàng khi có nhiều người cùng mua như thế nào?
Cơ sở dữ liệu SQL Server sử dụng các Transaction với mức cô lập (Isolation Level) phù hợp và ràng buộc kiểm tra CHECK (StockQuantity >= 0) để ngăn ngừa triệt để tình trạng bán vượt tồn kho (Overselling) trong các đợt flash sale.
5. Website có hỗ trợ tối ưu hóa công cụ tìm kiếm (SEO) không?
Mặc dù là ứng dụng SPA, mã nguồn Angular được cấu trúc với hệ thống URL thân thiện (Friendly URLs / Slugs), thẻ Meta động theo từng sản phẩm và có khả năng tích hợp Angular Universal (Server-Side Rendering) khi cần tối ưu SEO toàn diện cho các công cụ tìm kiếm.
Kết luận
Đồ án tốt nghiệp "Xây dựng website bán quần áo" của sinh viên Lê Anh Đức (HCMUTE) đã hiện thực hóa thành công một giải pháp thương mại điện tử chuyên ngành thời trang hoàn chỉnh, hiện đại và chuẩn mực. Bằng việc kết hợp sức mạnh xử lý của .NET 6 API và trải nghiệm giao diện người dùng mượt mà từ Angular 16, dự án không chỉ giải quyết triệt để các bài toán khó về quản lý biến thể sản phẩm, bảo mật JWT và thống kê đa chiều, mà còn cung cấp một nền tảng vững chắc, sẵn sàng mở rộng cho các doanh nghiệp bán lẻ thời trang trong kỷ nguyên số.