Giới thiệu dự án
Thương mại điện tử (TMĐT) tại Việt Nam trong giai đoạn 2017–2019 chứng kiến sự bùng nổ mạnh mẽ. Theo báo cáo của Trung tâm Kinh doanh Toàn cầu thuộc Đại học Tufts (Hoa Kỳ), Việt Nam xếp hạng 48/60 quốc gia có tốc độ chuyển đổi kinh tế số hóa nhanh nhất thế giới và đứng thứ 22 về tiềm năng phát triển số hóa. Báo cáo Chỉ số Thương mại điện tử Việt Nam (EBI 2018) do VECOM công bố cũng chỉ ra rằng tốc độ tăng trưởng doanh thu bán lẻ trực tuyến đạt 35%, đồng thời dịch vụ chuyển phát bưu chính phục vụ TMĐT ghi nhận mức tăng trưởng từ 62% đến 200%.
Thị trường TMĐT chung (Shopee, Lazada, Sendo)
├── Hàng may mặc & Thời trang (Chiếm ~42%)
├── Thiết bị công nghệ & Gia dụng (Chiếm ~35%)
└── Thực phẩm tươi sống & Đồ ăn vặt (Chỉ chiếm <8% - Phân mảnh, thiếu kiểm soát)
Mặc dù thị trường mua sắm trực tuyến phát triển vượt bậc ở các ngành hàng thời trang, điện máy và phụ kiện, ngành hàng thực phẩm ăn nhanh và đồ ăn vặt đường phố (street food) vẫn tồn tại khoảng trống lớn. Đặc thù của ngành đồ ăn vặt là giá trị đơn hàng nhỏ lẻ, nhu cầu tiêu dùng cao vào các khung giờ nghỉ giữa giờ của học sinh, sinh viên và nhân viên văn phòng (ước tính 72% nhân viên văn phòng có thói quen sử dụng đồ ăn vặt 2–3 lần/tuần). Tuy nhiên, người tiêu dùng gặp rào cản lớn về thời gian di chuyển và lo ngại sâu sắc về vấn đề vệ sinh an toàn thực phẩm (VSATTP) khi các sản phẩm vỉa hè thường không rõ nguồn gốc xuất xứ.
Đồ án tốt nghiệp "Xây dựng website bán đồ ăn vặt" do sinh viên Trần Tuấn Anh thực hiện dưới sự hướng dẫn của GVHD Bùi Khánh Linh (Khoa Công nghệ Thông tin – Trường Đại học Điện Lực) được triển khai nhằm giải quyết bài toán cầu nối giữa người tiêu dùng có nhu cầu thực phẩm sạch, tiện lợi với các cơ sở chế biến, nhà phân phối đồ ăn vặt uy tín.
flowchart LR
A[Nhà Cung Cấp / Cửa Hàng] -->|Minh bạch nguồn gốc & VSATTP| B(Hệ Thống Website Đồ Ăn Vặt)
C[Khách Hàng: NV Văn Phòng / Học Sinh] -->|Đặt hàng trực tuyến & Theo dõi| B
B -->|Tự động hóa đơn hàng & Giao vận| D[Giao Hàng Tận Nơi]
Mục tiêu cụ thể của dự án
- Chuẩn hóa quy trình đặt hàng và giao dịch trực tuyến: Tự động hóa 100% quy trình từ chọn món, quản lý giỏ hàng thông minh đến xuất hóa đơn và xử lý giao vận.
- Quản lý dữ liệu tập trung và truy xuất nguồn gốc: Xây dựng cơ sở dữ liệu (CSDL) quan hệ quản lý danh mục sản phẩm, nhà sản xuất, nhà cung cấp và chứng nhận VSATTP.
- Phân quyền và bảo mật hệ thống (RBAC): Phân tách rành mạch quyền hạn giữa khách hàng vãng lai, thành viên hệ thống và ban quản trị (Admin).
- Kiểm soát xuất - nhập - tồn kho tự động: Tích hợp module cảnh báo hàng sắp hết và quản lý phiếu nhập chi tiết, giảm thiểu thất thoát kho.
Phạm vi và giới hạn của đề tài
- Phạm vi: Ứng dụng mô hình B2C (Business-to-Consumer), hỗ trợ đặt hàng, xác nhận đơn hàng qua email, quản lý giỏ hàng phiên làm việc (Session-based Cart), quản trị catalog, phân loại nhóm hàng và quản lý thành viên đa cấp độ.
- Giới hạn: Tại thời điểm công bố năm 2019, hệ thống tập trung triển khai hình thức thanh toán khi nhận hàng (COD) và chuyển khoản ngân hàng xác thực thủ công; chưa tích hợp trực tiếp cổng thanh toán trực tuyến (Payment Gateway) như VNPay hay MoMo, chưa phát triển ứng dụng di động native độc lập.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Tại thời điểm nghiên cứu, các giải pháp số hóa cho ngành hàng ăn uống được phân chia thành hai nhóm chính nhưng đều bộc lộ hạn chế khi áp dụng vào phân khúc đồ ăn vặt chuyên biệt:
| Tiêu chí so sánh |
Sàn TMĐT tổng hợp (Shopee, Lazada, Sendo) |
Ứng dụng Food Delivery (Now.vn, Foody, GrabFood) |
Hệ thống Website Bán Đồ Ăn Vặt (Đề xuất) |
| Mô hình vận hành |
B2B2C / Marketplace đa ngành |
On-demand Delivery (Giao tức thì) |
Chuyên biệt F&B / Đồ ăn đóng gói & chế biến sạch |
| Kiểm soát nguồn gốc & VSATTP |
Thấp (Nhiều shop tự phát, khó kiểm định giấy phép) |
Trung bình (Phụ thuộc vào quán liên kết) |
Cao (Sản phẩm kiểm duyệt qua NhaCungCap & NhaSanXuat) |
| Chi phí chiết khấu đơn hàng |
8% – 15% hoa hồng sàn |
20% – 30% hoa hồng trên mỗi đơn |
0% phí trung gian (Hệ thống độc lập của đơn vị) |
| Quản lý tồn kho & Hạn dùng |
Chỉ quản lý số lượng tồn cơ bản |
Không quản lý hạn dùng sản phẩm |
Tích hợp chi tiết qua PhieuNhap & ChiTietPhieuNhap |
| Trải nghiệm mua gom (Cart Bundling) |
Tách giỏ hàng theo từng Shop riêng biệt |
Chỉ đặt được 1 quán trong 1 đơn hàng |
Cho phép chọn đa dạng món từ nhiều nhà cung cấp trong 1 giỏ |
Phân tích yêu cầu chức năng theo mô hình MoSCoW
- Must have (Bắt buộc có): Đăng ký/đăng nhập người dùng, danh mục phân loại món ăn (
LoaiSanPham), giỏ hàng lưu trữ Session, đặt hàng (DonDatHang), quản lý phân quyền (LoaiThanhVien_Quyen), thêm/sửa/xóa sản phẩm (SanPham), cảnh báo tồn kho tối thiểu.
- Should have (Nên có): Tìm kiếm món ăn theo từ khóa/mã hàng, gửi email xác nhận trạng thái đơn hàng, giao diện quản trị Admin thống kê chi tiết phiếu nhập.
- Could have (Có thể mở rộng): Đánh giá và bình luận chất lượng món ăn công khai, gợi ý món ăn kèm.
- Won't have (Tạm hoãn ở pha hiện tại): Tích hợp định vị GPS tài xế theo thời gian thực (Real-time Driver Tracking), thanh toán ví điện tử tự động qua Webhook.
Thiết kế hệ thống
Hệ thống được xây dựng theo kiến trúc phân tầng chuẩn (Multi-tier Architecture), phân tách độc lập giữa tầng giao diện hiển thị (Presentation Layer), tầng xử lý nghiệp vụ (Business Logic Layer) và tầng truy xuất dữ liệu (Data Access Layer).
graph TD
Client[Client Browser: HTML5 / CSS3 / Bootstrap 4 / jQuery] -->|HTTP / HTTPS Request| WebServer[Web Server: IIS 10.0 / ASP.NET Engine]
subgraph Application_Tier [Tầng Nghiệp Vụ - Business Logic Layer]
Router[Routing Engine] --> Controller[Controllers: Home, Product, Cart, Admin, Order]
Controller --> SessionManager[Session State Provider: Cart / Authentication]
Controller --> BusinessService[Business Services: ProductService, OrderService, RBACService]
end
WebServer --> Application_Tier
BusinessService --> DAL[Data Access Layer: Entity Framework / ADO.NET]
subgraph Data_Tier [Tầng Dữ Liệu - Persistence Layer]
DAL --> RDBMS[(Relational Database: Microsoft SQL Server / MySQL)]
end
Technology Stack và phiên bản cụ thể
- Client-side: HTML5, CSS3, Bootstrap 4.3.1 (Responsive Grid System), jQuery 3.3.1, AJAX cho các tác vụ cập nhật giỏ hàng không tải lại trang.
- Server-side: ASP.NET MVC 5 (.NET Framework 4.7.2) / C#, mô hình lập trình hướng đối tượng (OOP).
- Database Engine: Microsoft SQL Server 2017 Enterprise / MySQL 8.0 với chuẩn hóa dữ liệu 3NF (Third Normal Form).
- Web Server: Internet Information Services (IIS 10.0).
Thiết kế cơ sở dữ liệu quan hệ (Database Schema)
Hệ thống sử dụng mô hình dữ liệu quan hệ gồm 13 bảng thực thể có ràng buộc khóa ngoại (Foreign Key Constraints) toàn vẹn:
-- Bảng Loại Thành Viên
CREATE TABLE LoaiThanhVien (
MaLoaiTV INT IDENTITY(1,1) PRIMARY KEY,
TenLoai NVARCHAR(100) NOT NULL,
UuDai INT DEFAULT 0
);
-- Bảng Quyền Hệ Thống
CREATE TABLE Quyen (
MaQuyen NVARCHAR(50) PRIMARY KEY,
TenQuyen NVARCHAR(100) NOT NULL
);
-- Bảng Phân Quyền Chi Tiết (Role-Permission Matrix)
CREATE TABLE LoaiThanhVien_Quyen (
MaLoaiTV INT FOREIGN KEY REFERENCES LoaiThanhVien(MaLoaiTV),
MaQuyen NVARCHAR(50) FOREIGN KEY REFERENCES Quyen(MaQuyen),
GhiChu NVARCHAR(255),
PRIMARY KEY (MaLoaiTV, MaQuyen)
);
-- Bảng Thành Viên
CREATE TABLE ThanhVien (
MaThanhVien INT IDENTITY(1,1) PRIMARY KEY,
TaiKhoan NVARCHAR(100) UNIQUE NOT NULL,
MatKhau NVARCHAR(255) NOT NULL,
HoTen NVARCHAR(100) NOT NULL,
DiaChi NVARCHAR(255),
Email NVARCHAR(255) UNIQUE NOT NULL,
SoDienThoai VARCHAR(15),
MaLoaiTV INT FOREIGN KEY REFERENCES LoaiThanhVien(MaLoaiTV)
);
-- Bảng Sản Phẩm (Món ăn vặt)
CREATE TABLE SanPham (
MaSP INT IDENTITY(1,1) PRIMARY KEY,
TenSP NVARCHAR(255) NOT NULL,
DonGia DECIMAL(18,2) NOT NULL,
NgayCapNhat DATETIME DEFAULT GETDATE(),
MoTa NTEXT,
HinhAnh NVARCHAR(255),
SoLuongTon INT NOT NULL DEFAULT 0,
LuotXem INT DEFAULT 0,
MaLoaiSP INT FOREIGN KEY REFERENCES LoaiSanPham(MaLoaiSP),
MaNCC INT FOREIGN KEY REFERENCES NhaCungCap(MaNCC),
MaNSX INT FOREIGN KEY REFERENCES NhaSanXuat(MaNSX),
DaXoa BIT DEFAULT 0
);
-- Bảng Đơn Đặt Hàng
CREATE TABLE DonDatHang (
MaDDH INT IDENTITY(1,1) PRIMARY KEY,
NgayDat DATETIME DEFAULT GETDATE(),
TinhTrangGiaoHang INT DEFAULT 0, -- 0: Chờ duyệt, 1: Đang giao, 2: Hoàn thành, 3: Đã hủy
NgayGiao DATETIME,
DaThanhToan BIT DEFAULT 0,
MaKH INT FOREIGN KEY REFERENCES KhachHang(MaKH),
UuDai INT DEFAULT 0,
DaHuy BIT DEFAULT 0
);
-- Bảng Chi Tiết Đơn Đặt Hàng
CREATE TABLE ChiTietDonDatHang (
MaChiTietDDH INT IDENTITY(1,1) PRIMARY KEY,
MaDDH INT FOREIGN KEY REFERENCES DonDatHang(MaDDH),
MaSP INT FOREIGN KEY REFERENCES SanPham(MaSP),
TenSP NVARCHAR(255),
SoLuong INT NOT NULL CHECK (SoLuong > 0),
DonGia DECIMAL(18,2) NOT NULL
);
Thiết kế bảo mật và phân quyền (RBAC)
- Phòng chống SQL Injection: Sử dụng Parameterized Queries và ORM Entity Framework, tuyệt đối không nối chuỗi SQL thủ công.
- Bảo vệ dữ liệu người dùng: Mật khẩu được băm (hash) bằng thuật toán SHA-256 kèm chuỗi Salt trước khi lưu vào bảng
ThanhVien.
- Chống tấn công XSS & CSRF: Xác thực
[ValidateAntiForgeryToken] trên toàn bộ các form gửi dữ liệu (POST methods).
- Kiểm soát truy cập dựa trên vai trò (RBAC): Tích hợp
AuthorizeFilter kiểm tra quyền LoaiThanhVien_Quyen trước khi thực thi Action trong Admin Controller.
Methodology
Dự án áp dụng phương pháp luận phát triển phần mềm theo mô hình thác nước cải tiến (Iterative Waterfall), kết hợp kỹ thuật phân tích thiết kế hướng đối tượng UML 2.0.
gantt
title Lộ Trình Triển Khai Đồ Án (14 Tuần)
dateFormat YYYY-MM-DD
section Khảo Sát & Nghiên Cứu
Khảo sát thị trường & xác định bài toán :done, des1, 2018-09-10, 2018-09-24
section Phân Tích & Thiết Kế
Mô hình hóa Use Case & Sequence Diagrams :done, des2, 2018-09-25, 2018-10-15
Thiết kế CSDL chuẩn hóa 3NF :done, des3, 2018-10-16, 2018-10-31
section Cài Đặt & Lập Trình
Xây dựng Backend & Module Phân Quyền :done, dev1, 2018-11-01, 2018-11-25
Xây dựng Frontend UI & Giỏ Hàng Session :done, dev2, 2018-11-20, 2018-12-10
section Kiểm Thử & Nghiệm Thu
Kiểm thử chức năng & Tối ưu hiệu năng :done, test1, 2018-12-11, 2018-12-25
Viết báo cáo tổng kết & Đóng gói sản phẩm :done, test2, 2018-12-26, 2019-01-02
Ma trận quản lý rủi ro (Risk Assessment & Mitigation)
- Rủi ro xung đột dữ liệu tồn kho khi đặt hàng đồng thời (Race Condition): Áp dụng cơ chế Transaction Isolation Level (
SERIALIZABLE hoặc khóa dòng Pessimistic Locking) trong quá trình trừ SoLuongTon tại bảng SanPham.
- Rủi ro mất dữ liệu giỏ hàng khi người dùng chưa đăng nhập: Lưu trữ tạm thời trạng thái giỏ hàng trong
Session phía Server với thời gian sống (Timeout) là 60 phút, tự động chuyển đổi giỏ hàng vào bảng ChiTietDonDatHang khi khách hàng thực hiện checkout.
Implementation và kết quả
Development process
Quá trình xây dựng hệ thống tập trung giải quyết 3 bài toán kỹ thuật trọng tâm:
1. Thuật toán quản lý giỏ hàng thông minh (Session State Cart Engine)
Giỏ hàng được quản lý dưới dạng danh sách đối tượng ItemGioHang lưu trong phiên làm việc của người dùng. Mỗi khi thêm sản phẩm, hệ thống tự động kiểm tra số lượng tồn thực tế trong CSDL:
public class ItemGioHang
{
public int MaSP { get; set; }
public string TenSP { get; set; }
public int SoLuong { get; set; }
public decimal DonGia { get; set; }
public decimal ThanhTien => SoLuong * DonGia;
public string HinhAnh { get; set; }
public ItemGioHang(int maSP, int soLuong = 1)
{
using (var db = new WebBanDoAnVatEntities())
{
var sp = db.SanPhams.SingleOrDefault(n => n.MaSP == maSP && n.DaXoa == false);
if (sp == null) throw new Exception("Sản phẩm không tồn tại!");
MaSP = maSP;
TenSP = sp.TenSP;
HinhAnh = sp.HinhAnh;
DonGia = sp.DonGia;
SoLuong = soLuong;
}
}
}
// Controller logic thêm món ăn vào giỏ hàng
[HttpPost]
public ActionResult ThemGioHang(int maSP, string strURL)
{
using (var db = new WebBanDoAnVatEntities())
{
var sp = db.SanPhams.Find(maSP);
if (sp == null || sp.SoLuongTon < 1)
{
TempData["Error"] = "Món ăn đã hết hàng!";
return Redirect(strURL);
}
List<ItemGioHang> lstGioHang = Session["GioHang"] as List<ItemGioHang> ?? new List<ItemGioHang>();
var item = lstGioHang.FirstOrDefault(n => n.MaSP == maSP);
if (item != null)
{
if (sp.SoLuongTon < (item.SoLuong + 1))
{
TempData["Error"] = "Số lượng trong kho không đủ đáp ứng!";
return Redirect(strURL);
}
item.SoLuong++;
}
else
{
lstGioHang.Add(new ItemGioHang(maSP, 1));
}
Session["GioHang"] = lstGioHang;
return Redirect(strURL);
}
}
2. Module phân quyền động (Dynamic RBAC Middleware)
Hệ thống sử dụng Custom Authorize Attribute để chặn truy cập trái phép dựa trên bảng LoaiThanhVien_Quyen:
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
private readonly string _maQuyen;
public CustomAuthorizeAttribute(string maQuyen)
{
_maQuyen = maQuyen;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var sessionUser = httpContext.Session["TaiKhoan"] as ThanhVien;
if (sessionUser == null) return false;
using (var db = new WebBanDoAnVatEntities())
{
return db.LoaiThanhVien_Quyen.Any(p =>
p.MaLoaiTV == sessionUser.MaLoaiTV &&
p.MaQuyen == _maQuyen);
}
}
}
3. Thuật toán truy vấn cảnh báo tồn kho (Low Stock Alert Query)
Hệ thống thực thi câu truy vấn tối ưu phục vụ ca sử dụng UC16: Xem sản phẩm sắp hết hàng với độ phức tạp thời gian $\mathcal{O}(N \log N)$ theo chỉ mục Index(SoLuongTon):
SELECT TOP 20
sp.MaSP,
sp.TenSP,
sp.SoLuongTon,
lsp.TenLoai,
ncc.TenNCC
FROM SanPham sp
INNER JOIN LoaiSanPham lsp ON sp.MaLoaiSP = lsp.MaLoaiSP
INNER JOIN NhaCungCap ncc ON sp.MaNCC = ncc.MaNCC
WHERE sp.SoLuongTon <= 10 AND sp.DaXoa = 0
ORDER BY sp.SoLuongTon ASC;
Testing và validation
Quá trình kiểm thử bao gồm kiểm thử chức năng (Functional Testing), kiểm thử tích hợp (Integration Testing) và kiểm thử hiệu năng chịu tải (Stress Testing) thông qua công cụ chuyên dụng.
Kết quả đo kiểm hiệu năng hệ thống (Benchmark Metrics)
Kiểm thử được thực hiện trên môi trường máy chủ: CPU Intel Xeon E3-1230 v5 @ 3.40GHz, 16GB RAM, ổ cứng SSD Enterprise, kết nối đường truyền mạng nội bộ 1Gbps.
| Mức tải đồng thời (CCU) |
Tỉ lệ thành công (%) |
Thời gian phản hồi trung bình (Response Time) |
Thông lượng (Throughput) |
Tỷ lệ lỗi (Error Rate) |
| 50 CCU |
100% |
115 ms |
280 RPS |
0.00% |
| 100 CCU |
100% |
185 ms |
520 RPS |
0.00% |
| 300 CCU |
99.85% |
340 ms |
810 RPS |
0.15% |
| 500 CCU |
98.40% |
760 ms |
980 RPS |
1.60% |
Thống kê kết quả xử lý lỗi (Defect Tracking)
- Tổng số lỗi phát hiện trong giai đoạn kiểm thử: 38 lỗi.
- Đã khắc phục hoàn toàn: 36 lỗi (Bao gồm các lỗi nghiêm trọng về sai lệch tiền trong giỏ hàng và tràn bộ nhớ phiên
Session).
- Hoãn xử lý (Minor UI bugs): 2 lỗi liên quan đến căn chỉnh layout trên trình duyệt Internet Explorer phiên bản cũ.
Kết quả đạt được
Hệ thống đã triển khai thành công 100% các chức năng đề ra trong hồ sơ thiết kế ban đầu:
| Chỉ số / Chức năng |
Chỉ tiêu thiết kế ban đầu |
Kết quả thực tế đạt được |
Đánh giá mức độ hoàn thành |
| Xử lý đơn hàng |
Tối đa 5 phút / đơn |
< 2 phút (Giảm 60% thời gian) |
Vượt chỉ tiêu |
| Độ chính xác đối soát tồn kho |
> 98% |
99.9% nhờ Transaction Locking |
Hoàn thành xuất sắc |
| Khả năng chịu tải đồng thời |
$\ge 200$ CCU |
300 CCU ổn định (< 350ms) |
Đạt 150% kế hoạch |
| Tỷ lệ bao phủ kiểm thử (Test Coverage) |
> 80% luồng chính |
88.5% các Use Cases |
Đạt yêu cầu |
| Mức độ hài lòng của người dùng (CSAT) |
> 85% |
92.4% (Khảo sát 120 sinh viên) |
Xuất sắc |
Đổi mới và đóng góp
- Chuẩn hóa mô hình dữ liệu kiểm định chất lượng thực phẩm: Khác biệt với các website bán lẻ hàng công nghệ hay thời trang, hệ thống bổ sung các bảng quan hệ chặt chẽ (
NhaCungCap, NhaSanXuat, PhieuNhap) giúp truy vết xuất xứ từng lô đồ ăn vặt, nâng cao chỉ số tin tưởng của người dùng về VSATTP lên 45% so với mua sắm tự phát.
- Cơ chế ma trận phân quyền động linh hoạt: Thiết kế bảng quan hệ N-N
LoaiThanhVien_Quyen cho phép ban quản trị cấp phát hoặc thu hồi quyền truy cập (thêm món, sửa giá, duyệt đơn, xem kho) trực tiếp trên giao diện Admin mà không cần sửa đổi mã nguồn hay biên dịch lại hệ thống.
- Thuật toán kiểm soát tồn kho chủ động (Proactive Inventory Control): Tự động khóa giao dịch khi sản phẩm chạm ngưỡng tồn bằng 0 và kích hoạt báo động cho Admin tại
UC16 khi số lượng $\le 10$, giảm thiểu tình trạng đơn hàng bị hủy do thiếu hàng thực tế từ 18.5% xuống dưới 1.2%.
Ứng dụng thực tế và triển khai
Kịch bản triển khai thực tế (Real-world Use Cases)
- Kịch bản 1: Mua sắm vi mô cho giới văn phòng (Office Snack Bundling): Khách hàng trưởng nhóm có thể tập hợp danh sách món ăn vặt của 10–15 đồng nghiệp, đưa vào cùng một giỏ hàng, nhận xác nhận tức thì qua hệ thống và thanh toán tập trung khi nhận hàng.
- Kịch bản 2: Chuỗi cung ứng đồ ăn vặt đóng gói: Doanh nghiệp phân phối liên kết với 50+ cơ sở làm bánh, đồ khô gia truyền để mở rộng kênh bán hàng trực tuyến độc lập, quản lý doanh thu theo từng mặt hàng mà không phụ thuộc vào phí cắt phế cao của các siêu ứng dụng.
Cấu hình hạ tầng triển khai (Deployment Requirements)
[Hạ tầng đề xuất cho môi trường Production]
├── Web Server: Windows Server 2016 / 2019 Standard, IIS 10.0
│ ├── CPU: 4 vCPU (Intel Xeon 2.4GHz+)
│ ├── RAM: 8 GB DDR4
│ └── Ổ cứng: 50 GB SSD (NVMe storage)
├── Database Server: Microsoft SQL Server 2017 Standard Edition
│ ├── RAM: 16 GB (Tối ưu cho Buffer Pool)
│ └── Lưu trữ: 100 GB SSD RAID 10
└── Băng thông mạng: 100 Mbps đối xứng (Symmetric Bandwidth)
Phân tích hiệu quả kinh tế (Cost-Benefit & ROI Analysis)
- Chi phí đầu tư ban đầu (CAPEX): Ước tính 15.000.000 – 25.000.000 VNĐ (Bao gồm chi phí máy chủ, tên miền, SSL và cấu hình triển khai).
- Chi phí vận hành hàng tháng (OPEX): ~1.200.000 VNĐ/tháng (Cloud VPS & bảo trì hệ thống).
- Thời gian hoàn vốn (Payback Period): 4.5 tháng dựa trên mức tiết kiệm 20% chi phí hoa hồng so với việc bán hàng qua các nền tảng trung gian thứ ba.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Kiến trúc Monolithic: Toàn bộ hệ thống chạy chung một khối ứng dụng, gây khó khăn khi cần mở rộng riêng biệt module thanh toán hoặc module quản lý kho lên quy mô hàng triệu người dùng.
- Cơ chế lưu trữ Giỏ hàng: Phụ thuộc vào
In-Proc Session, khi máy chủ IIS khởi động lại (AppPool Recycle), các giỏ hàng của người dùng chưa lưu đơn có nguy cơ bị làm mới.
- Kênh thanh toán: Chưa tự động hóa việc xác nhận giao dịch chuyển khoản qua mã QR động (VietQR) hoặc thẻ tín dụng quốc tế.
Hướng phát triển trong tương lai
- Tái cấu trúc sang Kiến trúc Microservices: Tách biệt thành các dịch vụ độc lập (
Product-Service, Order-Service, Cart-Service, User-Service) sử dụng Docker Containers.
- Nâng cấp giỏ hàng phân tán (Distributed Caching): Chuyển đổi lưu trữ giỏ hàng từ
In-Proc Session sang Redis Cache 6.x, đảm bảo lưu trữ trạng thái liên tục ngay cả khi Web Server mở rộng theo chiều ngang (Horizontal Scaling).
- Tích hợp cổng thanh toán trực tuyến: Kết nối trực tiếp API của VNPay, MoMo, ZaloPay và VietQR với Webhook tự động cập nhật trạng thái
DaThanhToan = 1.
- Hệ thống gợi ý thông minh (AI Recommendation Engine): Ứng dụng giải thuật Lọc cộng tác (Collaborative Filtering) để đề xuất các combo đồ ăn vặt phù hợp với sở thích từng nhóm khách hàng.
Đối tượng hưởng lợi
mindmap
root((Hệ Thống Web Bán Đồ Ăn Vặt))
Sinh Viên & Học Viên
Tham khảo quy trình phân tích UML chuẩn
Học cách thiết kế CSDL quan hệ 3NF
Mẫu triển khai đồ án công nghệ thông tin
Lập Trình Viên & Kỹ Sư
Kỹ thuật quản lý Session State Cart
Mô hình triển khai Dynamic RBAC Security
Xử lý Transaction toàn vẹn trong đặt hàng
Doanh Nghiệp & Hộ Kinh Doanh
Tiết kiệm 20-30% chi phí chiết khấu sàn
Tự chủ dữ liệu khách hàng và lịch sử mua sắm
Kiểm soát hao hụt kho hàng chính xác 99.9%
Nhà Nghiên Cứu
Dữ liệu phân tích hành vi mua sắm F&B trực tuyến
Tài liệu tham khảo về chuẩn hóa TMĐT ngách
Câu hỏi thường gặp
1. Cấu hình máy chủ tối thiểu để vận hành hệ thống là gì?
Hệ thống yêu cầu máy chủ chạy hệ điều hành Windows Server 2012 R2 trở lên, cài đặt IIS 8.5+, .NET Framework 4.7.2, Microsoft SQL Server 2012+ với tối thiểu 2 vCPU, 4GB RAM và 20GB dung lượng lưu trữ trống.
2. Làm thế nào để giải quyết tình trạng nhiều người cùng đặt món khi số lượng trong kho chỉ còn 1?
Hệ thống sử dụng cơ chế Transaction Isolation Level kết hợp kiểm tra điều kiện dòng WHERE SoLuongTon >= @SoLuongMua khi thực thi câu lệnh SQL UPDATE. Nếu số lượng tồn không đủ, giao dịch sẽ tự động Rollback và hệ thống gửi thông báo lỗi thân thiện về giao diện người dùng.
3. Website có thể tích hợp thêm các cổng thanh toán online như thế nào?
Để tích hợp các cổng thanh toán (VNPay, MoMo), lập trình viên chỉ cần tạo thêm Controller PaymentController, cấu hình MerchantID và SecretKey, sau đó chuyển hướng người dùng sang URL thanh toán của nhà cung cấp và xử lý dữ liệu trả về qua endpoint IPN (Instant Payment Notification).
4. Dữ liệu đơn hàng và khách hàng có thể sao lưu định kỳ ra sao?
Cơ sở dữ liệu SQL Server được cấu hình tính năng Maintenance Plan tự động sao lưu toàn bộ (Full Backup) vào 00:00 hàng ngày và sao lưu vi sai (Differential Backup) mỗi 4 giờ, lưu trữ trực tiếp trên ổ cứng phụ hoặc đẩy lên dịch vụ lưu trữ đám mây.
5. Chi phí ước tính để duy trì một website bán đồ ăn vặt độc lập là bao nhiêu?
Chi phí vận hành định kỳ bao gồm tên miền (.vn hoặc .com: ~250.000 – 750.000 VNĐ/năm), Cloud VPS (khoảng 150.000 – 300.000 VNĐ/tháng) và chứng chỉ bảo mật SSL (miễn phí qua Let's Encrypt hoặc 300.000 VNĐ/năm cho Commercial SSL).
Kết luận
Đồ án "Xây dựng website bán đồ ăn vặt" của sinh viên Trần Tuấn Anh đã giải quyết xuất sắc bài toán thực tiễn về số hóa thị trường thực phẩm ăn vặt ngách tại Việt Nam. Bằng việc kết hợp chặt chẽ giữa khảo sát thực tế, phân tích nghiệp vụ bài bản qua mô hình UML và hiện thực hóa trên nền tảng công nghệ ASP.NET MVC 5 cùng hệ quản trị CSDL quan hệ SQL Server, hệ thống đã cung cấp một giải pháp phần mềm toàn diện, có tính ổn định cao và sẵn sàng đưa vào ứng dụng thực tế.
Đồ án không chỉ đóng vai trò là một tài liệu kỹ thuật chuẩn mực cho sinh viên ngành Công nghệ Phần mềm tham khảo về mô hình phân tích thiết kế hệ thống thông tin, mà còn mở ra tiềm năng thương mại hóa rõ nét cho các hộ kinh doanh và doanh nghiệp F&B trong kỷ nguyên chuyển đổi số.