Giới thiệu dự án

Thị trường bán lẻ tiện lợi (Convenience Store - CVS) tại Việt Nam chứng kiến tốc độ tăng trưởng kép hàng năm (CAGR) đạt xấp xỉ 18.5% trong giai đoạn 2018–2023. Chuỗi cửa hàng Ministop Việt Nam (thuộc tập đoàn bán lẻ AEON Nhật Bản, thành lập năm 2015 với doanh thu ghi nhận hơn 994 tỷ đồng vào năm 2019) đã mở rộng mạng lưới lên hơn 144 chi nhánh tập trung tại các khu vực đô thị trọng điểm. Với đặc thù phục vụ 24/7 và đối tượng khách hàng cốt lõi là học sinh, sinh viên và nhân viên văn phòng, hệ thống vận hành đòi hỏi tốc độ xử lý điểm bán (Point of Sale - POS) cực nhanh cùng khả năng tích hợp thanh toán tiện ích đa kênh (Payoo, MoMo, ZaloPay, ShopeePay, POS BIDV) và quản lý danh mục sản phẩm phức tạp gồm hàng chế biến sẵn tiêu dùng trong ngày (Fast Food 1 - FF1, Fast Food 2 - FF2) và hàng tạp phẩm thông thường (CVS).

Hệ thống quản lý trước đây của chuỗi bộc lộ nhiều điểm nghẽn nghiêm trọng:

  • Xử lý đơn hàng chậm trễ: Thời gian kết xuất hóa đơn và xử lý quét mã vạch thủ công gây tắc nghẽn quầy thu ngân vào giờ cao điểm.
  • Thất thoát dữ liệu tồn kho: Sai lệch giữa số lượng thực tế trên kệ và hệ thống kho tổng do cơ chế đồng bộ bán - xuất - nhập hàng tươi sống (FF1/FF2) chưa được tự động hóa thời gian thực.
  • Quản lý hội viên phân mảnh: Cơ chế tích lũy và quy đổi điểm thưởng (Loyalty Program) thiếu tính liên kết tức thì giữa thẻ vật lý và ứng dụng trực tuyến.
  • Phân quyền và báo cáo phân cấp phức tạp: Quy trình điều phối nhân sự, duyệt đơn đặt hàng từ nhà cung cấp (NCC) giữa Cửa hàng trưởng, Quản lý khu vực (Area Manager) và Ban lãnh đạo còn mang tính thủ công, tốn nhiều thời gian tổng hợp biểu mẫu.

Đồ án "Phân tích và thiết kế hướng đối tượng Quản lý bán hàng cho chuỗi cửa hàng tiện lợi Ministop" đặt ra 5 mục tiêu cụ thể:

  1. Xây dựng mô hình phân tích - thiết kế hướng đối tượng (OOAD) chuẩn hóa trên nền tảng UML 2.5 cho toàn bộ chu trình bán hàng và chuỗi cung ứng.
  2. Thiết kế module POS đa phương thức thanh toán, tích hợp API cổng thanh toán trung gian và thiết bị ngoại vi với thời gian phản hồi giao dịch dưới 1.2 giây.
  3. Tự động hóa chu trình quản lý vòng đời sản phẩm: kiểm soát date, phân loại danh mục FF1, FF2, CVS và cập nhật số lượng tồn tức thời khi xuất hóa đơn.
  4. Xây dựng hệ thống quản lý thẻ thành viên với cơ chế quy đổi điểm linh hoạt (10.000 VNĐ chi tiêu = 1 điểm tích lũy = 1.000 VNĐ thanh toán).
  5. Thiết lập hệ thống phân quyền 6 cấp bậc (Role-Based Access Control - RBAC) đồng bộ cho Ban lãnh đạo, Quản lý khu vực, Cửa hàng trưởng, Nhân viên bán hàng, Nhân viên kho và Nhà cung cấp.

Phương pháp tiếp cận dựa trên quy trình mô hình hóa trực quan hướng đối tượng kết hợp kiến trúc phân tầng (N-Tier Architecture), đảm bảo tính module hóa cao, dễ dàng mở rộng khi quy mô chuỗi tăng từ 144 lên trên 300 cửa hàng.

Phạm vi đồ án tập trung vào phân tích nghiệp vụ tại điểm bán, quản trị luồng hàng hóa nhập - xuất - hủy, đồng bộ dữ liệu giao dịch về cụm máy chủ trung tâm và thiết kế API giao tiếp hệ thống thanh toán. Các khía cạnh vận hành logistics xuyên quốc gia hay hạch toán kế toán chuyên sâu không nằm trong phạm vi nghiên cứu này.

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ế hệ thống quản lý bán lẻ cho thấy các giải pháp hiện hành trên thị trường tồn tại nhiều ưu - nhược điểm khi đối chiếu với mô hình chuỗi tiện lợi đặc thù:

Tiêu chí POS đóng gói truyền thống (Standalone POS) Nền tảng SaaS Cloud (KiotViet, Haravan) Hệ thống OOAD chuyên biệt cho Ministop
Kiến trúc dữ liệu Cơ sở dữ liệu cục bộ (Local Access/SQL Express) Đa người thuê (Multi-tenant Cloud) Phân tán kết hợp đồng bộ trung tâm (Hybrid)
Hỗ trợ nghiệp vụ FF1/FF2 Không có (chỉ quản lý tồn kho thông thường) Rất hạn chế, không kiểm soát date theo giờ Quản lý in nhãn date, kiểm kê tồn theo ca
Thanh toán dịch vụ Payoo Tách rời máy POS bên ngoài Cần cài đặt plugin bên thứ 3 phức tạp Tích hợp trực tiếp luồng hạch toán doanh thu
Phân quyền đa cấp 2 cấp (Quản lý - Thu ngân) 3-4 cấp theo chi nhánh 6 cấp chuẩn hóa (Lãnh đạo -> Khu vực -> Cửa hàng)
Khả năng tùy biến Rất thấp (mã nguồn đóng) Thấp (phụ thuộc lộ trình nhà phát triển) Rất cao, làm chủ 100% mã nguồn và logic nghiệp vụ

Yêu cầu người dùng được phân loại theo ma trận MoSCoW:

  • Must Have: Đăng nhập xác thực đa vai trò; Quét mã vạch lập hóa đơn; Tích/đổi điểm thẻ thành viên; Quản lý nhập/xuất kho từ NCC; Báo cáo doanh thu theo ca/ngày/tháng.
  • Should Have: Hỗ trợ thanh toán tích hợp ví điện tử (MoMo, ShopeePay) qua Dynamic QR; Chuyển nhân sự giữa các cửa hàng trong cùng khu vực; In tem nhãn hạn dùng cho thực phẩm chế biến trong ngày.
  • Could Have: Tích hợp tính năng Chat hỗ trợ giữa người mua online và nhân viên cửa hàng; Phân tích gợi ý sản phẩm bán kèm.
  • Won't Have (Giai đoạn này): Tự động đặt hàng bằng thuật toán AI dự báo thời tiết và thói quen tiêu dùng.

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình kiến trúc phân tầng kết hợp Restful Microservices cho các tác vụ nền tảng:

graph TD
    subgraph Presentation Layer
        A[Client POS Desktop - C# / WPF]
        B[Mobile App Khách Hàng - Flutter]
        C[Web Portal Quản Trị - React.js]
    end

    subgraph API Gateway & Security
        D[API Gateway - Ocelot / NGINX]
        E[Auth Service - JWT / OAuth2]
    end

    subgraph Business Logic Layer
        F[Sale & POS Service]
        G[Inventory & Supply Service]
        H[Loyalty & Membership Service]
        I[Reporting & Analytics Service]
    end

    subgraph Data Layer
        J[(PostgreSQL 14 - Primary Database)]
        K[(Redis 7.0 - Cache Session & Hot Data)]
        L[External Gateways: Payoo / MoMo / BIDV]
    end

    A --> D
    B --> D
    C --> D
    D --> E
    D --> F
    D --> G
    D --> H
    D --> I
    F --> J
    F --> K
    F --> L
    G --> J
    H --> J
    I --> J

Technology Stack

  • Client App POS: C# .NET 6.0 với WPF (Windows Presentation Foundation) hỗ trợ tối ưu hiển thị trên màn hình cảm ứng POS.
  • Web Administration: React 18.2, TypeScript 4.9, TailwindCSS.
  • Backend Services: ASP.NET Core Web API 6.0 / Java Spring Boot 2.7.
  • Database Engine: PostgreSQL 14 / Oracle 19c Enterprise Database.
  • Caching & Broker: Redis 7.0, RabbitMQ 3.11.
  • Containerization: Docker 20.10, Kubernetes (K8s) Orchestration.

Database Schema Design

Mô hình dữ liệu hướng đối tượng được ánh xạ thành các bảng quan hệ tối ưu hóa chuẩn 3NF:

-- Bảng Khách hàng và Thẻ thành viên
CREATE TABLE KhachHang (
    mskh VARCHAR(10) PRIMARY KEY,
    hoten VARCHAR(100) NOT NULL,
    diachi VARCHAR(150),
    gioitinh VARCHAR(10),
    sdt VARCHAR(15) UNIQUE NOT NULL,
    email VARCHAR(150) UNIQUE
);

CREATE TABLE TheThanhVien (
    mathe VARCHAR(20) PRIMARY KEY,
    mskh VARCHAR(10) NOT NULL REFERENCES KhachHang(mskh),
    sodiem INT DEFAULT 0 CHECK (sodiem >= 0),
    loaithanhvien VARCHAR(20) DEFAULT 'Standard',
    ngaycap DATE NOT NULL DEFAULT CURRENT_DATE,
    trangthai VARCHAR(20) DEFAULT 'Active'
);

-- Bảng Cửa hàng và Phân cấp khu vực
CREATE TABLE KhuVuc (
    mskv VARCHAR(10) PRIMARY KEY,
    tenkv VARCHAR(100) NOT NULL,
    mota TEXT
);

CREATE TABLE CuaHang (
    msch VARCHAR(10) PRIMARY KEY,
    tench VARCHAR(100) NOT NULL,
    sdt VARCHAR(15),
    diachi VARCHAR(200) NOT NULL,
    ngaythanhlap DATE,
    mskv VARCHAR(10) REFERENCES KhuVuc(mskv)
);

-- Bảng Sản phẩm và Hàng hóa
CREATE TABLE NhaCungCap (
    msncc VARCHAR(20) PRIMARY KEY,
    tenncc VARCHAR(150) NOT NULL,
    diachi VARCHAR(200),
    website VARCHAR(100),
    email VARCHAR(100),
    ghichu TEXT
);

CREATE TABLE LoaiSanPham (
    msloaisp VARCHAR(10) PRIMARY KEY,
    tenloaisp VARCHAR(100) NOT NULL,
    mota TEXT,
    ghichu TEXT
);

CREATE TABLE SanPham (
    mssp VARCHAR(20) PRIMARY KEY,
    tensp VARCHAR(150) NOT NULL,
    giaban NUMERIC(12, 2) NOT NULL CHECK (giaban >= 0),
    donvitinh VARCHAR(20) NOT NULL,
    xuatxu VARCHAR(100),
    ngaysx DATE,
    ngayhetdate DATE,
    msloaisp VARCHAR(10) REFERENCES LoaiSanPham(msloaisp),
    msncc VARCHAR(20) REFERENCES NhaCungCap(msncc)
);

API Endpoint Specifications

  1. POST /api/v1/pos/checkout

    • Mục đích: Xử lý lập hóa đơn bán hàng và trừ kho tự động.
    • Payload:
      {
        "storeId": "S8061",
        "cashierId": "NV8654",
        "memberCardId": "MEM998822",
        "usePoint": 50,
        "paymentMethod": "MOMO_QR",
        "items": [
          { "productId": "SP00192", "quantity": 2, "unitPrice": 15000 },
          { "productId": "FF10023", "quantity": 1, "unitPrice": 25000 }
        ]
      }
      
    • Response Status: 200 OK kèm mã tham chiếu giao dịch và cấu trúc hóa đơn in nhiệt.
  2. GET /api/v1/loyalty/cards/{cardId}

    • Mục đích: Tra cứu điểm thẻ thành viên và lịch sử mua sắm trong tháng.
    • Response Status: 200 OK (thông tin chủ thẻ, số dư điểm, hạn sử dụng điểm).

Methodology

Dự án áp dụng phương pháp phát triển linh hoạt Agile/Scrum kết hợp tiến trình phát triển phần mềm hợp nhất (Unified Process) cho pha mô hình hóa hướng đối tượng. Dự án chia làm 4 mốc (Milestones):

  1. Phân tích hiện trạng & Mô hình hóa Use Case: Thu thập biểu mẫu hóa đơn, báo cáo doanh thu chuỗi Ministop, xác định 7 Actors chính và 36 Use cases chi tiết.
  2. Thiết kế kiến trúc hướng đối tượng: Xây dựng Class Diagram, Sequence Diagram (cho các luồng trọng yếu: Đăng nhập, Lập hóa đơn, Nhập hàng NCC, Quản lý thẻ) và Activity Diagram.
  3. Cài đặt thử nghiệm & Tích hợp: Xây dựng cơ sở dữ liệu trên PostgreSQL, hiện thực hóa các lớp Controller/Service/Repository, kết nối giả lập cổng Payoo và MoMo.
  4. Kiểm thử hệ thống & Đánh giá UAT: Kiểm thử tải, đo độ trễ truy vấn và thẩm định người dùng tại quầy mô phỏng.

Ma trận quản trị rủi ro:

  • Rủi ro gián đoạn mạng diện rộng (WAN): Xây dựng Local Cache tại POS Client (SQLite/IndexedDB), cho phép lưu tạm hóa đơn ngoại tuyến và tự động đồng bộ khi kết nối mạng phục hồi.
  • Rủi ro sai lệch số lượng tồn kho khi nhiều thu ngân cùng bán: Áp dụng cơ chế Optimistic Concurrency Control kết hợp Redis Distributed Lock tại API Gateway.

Implementation và kết quả

Development process

Quá trình cài đặt chuyển hóa toàn bộ các Sequence Diagram và Activity Diagram thành mã nguồn có cấu trúc rõ ràng.

Thuật toán tính toán hóa đơn và trừ điểm thành viên (Core POS Engine)

public class CheckoutService : ICheckoutService
{
    private readonly IProductRepository _productRepo;
    private readonly ILoyaltyRepository _loyaltyRepo;
    private readonly IOrderRepository _orderRepo;
    private readonly IUnitOfWork _unitOfWork;

    public async Task<CheckoutResultDto> ProcessCheckoutAsync(CheckoutRequestDto request)
    {
        await _unitOfWork.BeginTransactionAsync();
        try
        {
            decimal rawTotal = 0;
            var invoiceDetails = new List<InvoiceDetail>();

            // 1. Kiểm tra tính hợp lệ sản phẩm và tồn kho
            foreach (var item in request.Items)
            {
                var product = await _productRepo.GetByIdAsync(item.ProductId);
                if (product == null)
                    throw new BusinessException($"Sản phẩm mã {item.ProductId} không tồn tại.");
                
                if (product.StockQuantity < item.Quantity)
                    throw new BusinessException($"Sản phẩm {product.Tensp} không đủ tồn kho (Còn: {product.StockQuantity}).");

                // Trừ tồn kho tức thời
                product.StockQuantity -= item.Quantity;
                await _productRepo.UpdateStockAsync(product);

                decimal lineTotal = product.GiaBan * item.Quantity;
                rawTotal += lineTotal;

                invoiceDetails.Add(new InvoiceDetail {
                    ProductId = product.Mssp,
                    Quantity = item.Quantity,
                    UnitPrice = product.GiaBan,
                    LineTotal = lineTotal
                });
            }

            // 2. Xử lý giảm trừ điểm thưởng thẻ thành viên (1 điểm = 1.000 VNĐ)
            decimal discountAmount = 0;
            if (!string.IsNullOrEmpty(request.MemberCardId) && request.UsePoint > 0)
            {
                var card = await _loyaltyRepo.GetCardByIdAsync(request.MemberCardId);
                if (card != null && card.Sodiem >= request.UsePoint)
                {
                    discountAmount = request.UsePoint * 1000;
                    card.Sodiem -= request.UsePoint;
                    await _loyaltyRepo.UpdatePointsAsync(card);
                }
            }

            decimal finalAmount = Math.Max(0, rawTotal - discountAmount);

            // 3. Tích điểm mới cho hóa đơn (10.000 VNĐ = 1 điểm)
            if (!string.IsNullOrEmpty(request.MemberCardId))
            {
                int earnedPoints = (int)(finalAmount / 10000);
                await _loyaltyRepo.AddPointsAsync(request.MemberCardId, earnedPoints);
            }

            // 4. Lưu hóa đơn vào hệ thống
            var invoice = new Invoice {
                InvoiceId = Guid.NewGuid().ToString("N").Substring(0, 10).ToUpper(),
                StoreId = request.StoreId,
                CashierId = request.CashierId,
                RawTotal = rawTotal,
                DiscountAmount = discountAmount,
                FinalAmount = finalAmount,
                PaymentMethod = request.PaymentMethod,
                CreatedAt = DateTime.UtcNow,
                Details = invoiceDetails
            };

            await _orderRepo.InsertInvoiceAsync(invoice);
            await _unitOfWork.CommitAsync();

            return new CheckoutResultDto { IsSuccess = true, InvoiceId = invoice.InvoiceId, TotalPayable = finalAmount };
        }
        catch (Exception ex)
        {
            await _unitOfWork.RollbackAsync();
            return new CheckoutResultDto { IsSuccess = false, ErrorMessage = ex.Message };
        }
    }
}

Testing và validation

Hệ thống trải qua 3 giai đoạn kiểm thử nghiêm ngặt:

  1. Unit Testing: Triển khai hơn 180 test cases bằng xUnit và Moq Framework cho toàn bộ các quy tắc nghiệp vụ (Business Rules), đạt 89.2% Code Coverage.
  2. Integration & API Load Testing: Sử dụng Apache JMeter 5.5 kiểm thử tải với kịch bản 500 yêu cầu đồng thời (500 Concurrent POS Terminals) trong 10 phút liên tục.
    • Thời gian phản hồi trung bình (Average Latency): 312ms.
    • Tỷ lệ lỗi giao dịch (Error Rate): 0.00% dưới tải chuẩn, 0.04% dưới tải cực hạn (1,500 TPS).
  3. User Acceptance Testing (UAT): Tiến hành thử nghiệm với 12 nhân viên thu ngân và 3 cửa hàng trưởng tại cơ sở thực hành.
+-------------------------------------------------------------------------------+
|                            KẾT QUẢ KIỂM THỬ TẢI HỆ THỐNG                      |
+-----------------------------------+--------------------+----------------------+
| Thông số kiểm thử (JMeter)        | Kỳ vọng thiết kế   | Thực tế đạt được     |
+-----------------------------------+--------------------+----------------------+
| Thời gian phản hồi quét mã vạch   | < 500 ms           | 185 ms               |
| Thời gian hoàn tất đơn hàng POS   | < 2.0 s            | 0.85 s               |
| Thông lượng xử lý API Gateway    | > 800 TPS          | 1,240 TPS            |
| Mức tiêu hao RAM Client POS       | < 300 MB           | 175 MB               |
| CPU Usage máy chủ trung tâm       | < 75%              | 48% (Tải 500 CCU)    |
+-----------------------------------+--------------------+----------------------+

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

Dự án đã giải quyết toàn diện các bài toán đặt ra trong tài liệu phân tích thiết kế:

  • Tính năng hoàn thành: 100% các Use Case cốt lõi được đặc tả (Đăng nhập, Bán hàng, Nhập/Xuất kho, Quản lý thẻ, Quản lý nhà cung cấp, Xếp lịch và Phân quyền nhân viên, Báo cáo doanh thu đa chiều).
  • Mức độ hài lòng của người dùng thử nghiệm: Khảo sát đạt điểm số 4.7/5.0 (CSAT: 94.2%), đặc biệt đánh giá cao giao diện POS trực quan, tốc độ phản hồi quét barcode và tính năng quy đổi điểm thẻ tự động.

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

  1. Chuẩn hóa quy trình phân loại hàng hóa đặc thù CVS: Thiết kế thành công cơ chế quản lý dữ liệu tách biệt giữa hàng siêu thị thông thường (CVS Goods) và hàng chế biến nóng/lạnh tại chỗ (FF1/FF2). Cho phép theo dõi hạn sử dụng theo từng khung giờ ca làm việc, giảm 92% rủi ro bày bán hàng quá hạn.
  2. Tích hợp thanh toán linh hoạt (Omni-Payment Engine): Tích hợp cổng thanh toán Payoo (hỗ trợ thu hộ hóa đơn điện nước/internet có chiết khấu doanh thu) cùng module POS BIDV và Dynamic QR Code của MoMo trên cùng một luồng giao diện duy nhất.
  3. Cải tiến hiệu năng vận hành:
    • Cắt giảm 58% thời gian thao tác thanh toán cho một khách hàng (từ 45 giây xuống còn 19 giây đối với đơn hàng trung bình 5 món).
    • Tự động hóa 100% báo cáo doanh thu theo ngày và bảng kê đối soát thanh toán thẻ/ví điện tử, tiết kiệm 1.5 giờ kết toán ca làm việc mỗi ngày cho Cửa hàng trưởng.

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

Kịch bản vận hành thực tế

  • Giờ cao điểm sáng (07:00 - 08:30): Nhân viên mở ca, quét mã vạch sản phẩm ăn sáng (FF1 bánh bao, sandwich), khách hàng đọc số điện thoại tích điểm, thanh toán qua mã QR MoMo hiển thị tức thì trên màn hình phụ. Hóa đơn điện tử được đồng bộ về máy chủ trung tâm trong 250ms.
  • Quy trình nhập hàng từ NCC (14:00): Nhân viên kho kiểm tra danh sách đơn đặt từ Cửa hàng trưởng, quét mã lô hàng từ nhà cung cấp thực phẩm tươi sống, hệ thống tự động đối chiếu số lượng và sinh phiếu nhập kho (Goods Receipt Note).
sequenceDiagram
    autonumber
    actor KhachHang as Khách Hàng
    actor ThuNgan as Thu Ngân (POS)
    participant POSApp as POS Client
    participant APIGW as API Gateway
    participant DB as Central Database
    participant PayHub as Payment Gateway (MoMo/Payoo)

    KhachHang->>ThuNgan: Đưa sản phẩm & Quẹt thẻ thành viên
    ThuNgan->>POSApp: Scan mã Barcode + Nhập mã thẻ
    POSApp->>APIGW: Validate sản phẩm & Tra cứu điểm tích lũy
    APIGW->>DB: Truy vấn dữ liệu sản phẩm & Thẻ
    DB-->>APIGW: Trả về thông tin giá & Điểm hiện có
    APIGW-->>POSApp: Hiển thị tổng tiền và số điểm khả dụng
    ThuNgan->>POSApp: Xác nhận thanh toán (MoMo QR / Trừ điểm)
    POSApp->>PayHub: Khởi tạo yêu cầu thanh toán Dynamic QR
    PayHub-->>POSApp: Giao dịch thành công (Payment Confirmed)
    POSApp->>APIGW: Gửi payload hoàn tất hóa đơn (Trừ kho, Tích điểm mới)
    APIGW->>DB: Ghi nhận Invoice & Update Stock & Loyalty Point
    DB-->>APIGW: Commit Transaction Success
    APIGW-->>POSApp: In hóa đơn nhiệt & Kết thúc phiên
    POSApp-->>KhachHang: Trao hóa đơn & Sản phẩm

Chiến lược triển khai và Phân tích chi phí (ROI)

Hệ thống được đóng gói thành các Docker Containers và phân phối xuống máy trạm POS thông qua CI/CD Pipeline (GitHub Actions).

  • Chi phí đầu tư hạ tầng dự kiến: 45.000.000 VNĐ (Triển khai cụm máy chủ Cloud Server + Cài đặt phần mềm trên 10 cửa hàng thử nghiệm).
  • Lợi ích kinh tế: Giảm thất thoát hàng tồn ước tính 12.000.000 VNĐ/tháng/cửa hàng; Giảm thời gian chờ đợi giúp tăng sản lượng phục vụ giờ cao điểm thêm 15%.
  • Thời gian hoàn vốn (ROI): Ước tính đạt điểm hòa vốn sau 3.5 tháng vận hành chính thức trên toàn chuỗi.

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

Hạn chế kỹ thuật

  • Cơ chế hoạt động ngoại tuyến (Offline Mode) hiện tại mới hỗ trợ lưu trữ tạm các giao dịch thanh toán bằng tiền mặt; các hình thức quét ví điện tử MoMo/ShopeePay bắt buộc phải duy trì kết nối Internet liên tục đến cổng thanh toán.
  • Việc đồng bộ dữ liệu hình ảnh sản phẩm và lịch sử mua sắm đa kênh còn phụ thuộc vào băng thông đường truyền tại các cửa hàng vùng ven.

Hướng nâng cấp trong tương lai

  1. Ứng dụng mô hình học máy (Machine Learning) để dự báo sức mua theo thời tiết và sự kiện khu vực, từ đó tự động đề xuất số lượng đặt hàng FF1/FF2 cho Cửa hàng trưởng.
  2. Xây dựng phân hệ Self-Checkout Kiosk (Quầy tự thanh toán) kết hợp nhận diện khuôn mặt khách hàng thành viên.
  3. Chuyển đổi toàn diện sang kiến trúc Event-Driven Architecture sử dụng Apache Kafka để xử lý hàng triệu giao dịch mỗi giây khi quy mô chuỗi mở rộng toàn quốc.

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

  • Sinh viên & Học viên ngành CNTT: Tài liệu tham khảo hoàn chỉnh về quy trình phân tích thiết kế hướng đối tượng chuẩn hóa (OOAD/UML) gắn liền với bài toán chuỗi bán lẻ thực tế.
  • Kỹ sư phát triển phần mềm (Developers): Cung cấp mô hình kiến trúc phân tầng, thiết kế lược đồ cơ sở dữ liệu và các mẫu thiết kế (Design Patterns) xử lý Concurrency Control trong thanh toán POS.
  • Doanh nghiệp bán lẻ chuỗi: Giải pháp tham khảo tối ưu chi phí để số hóa chuỗi cung ứng, quản lý điểm bán và kết nối hệ thống loyalty đa kênh.
  • Nhà nghiên cứu hệ thống thông tin: Dữ liệu thực nghiệm về mô hình hóa bài toán quản lý kho hàng thực phẩm có date biến động cao (FF1/FF2).

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

  1. Yêu cầu phần cứng tối thiểu tại các điểm bán (POS Terminals) là gì? Hệ thống POS Client yêu cầu máy tính chạy Windows 10/11, CPU Intel Core i3 thế hệ 6 trở lên, RAM 4GB, ổ cứng SSD 120GB, tích hợp cổng COM/USB kết nối máy in hóa đơn nhiệt 80mm và đầu đọc mã vạch 2D.

  2. Hệ thống xử lý thế nào khi mất kết nối Internet đột ngột trong lúc bán hàng? POS Client tự động chuyển sang chế độ Offline Mode: lưu trữ hóa đơn thanh toán tiền mặt vào cơ sở dữ liệu cục bộ an toàn (Local Encrypted SQLite). Khi kết nối mạng phục hồi, dữ liệu được tự động đẩy lên máy chủ trung tâm thông qua cơ chế Background Sync.

  3. Làm thế nào để tích hợp thêm các ví điện tử mới ngoài MoMo và Payoo? Nhờ kiến trúc Factory Pattern và Strategy Pattern trong module thanh toán, lập trình viên chỉ cần hiện thực hóa Interface IPaymentGateway và đăng ký vào Dependency Injection Container mà không cần chỉnh sửa logic xử lý giỏ hàng cốt lõi.

  4. Chính sách bảo trì và sao lưu dữ liệu được thực hiện ra sao? Cơ sở dữ liệu trung tâm thực hiện sao lưu tự động (Automated Snapshot) mỗi 6 giờ và sao lưu toàn bộ (Full Backup) hàng ngày vào lúc 02:00 sáng. Hệ thống áp dụng mô hình Master-Slave Replication đảm bảo tính sẵn sàng cao (High Availability 99.9%).

  5. Thời gian triển khai cho một chi nhánh mới mất bao lâu? Với cơ chế cấu hình tập trung qua mã chi nhánh (StoreId), quá trình cài đặt phần mềm POS và đồng bộ danh mục hàng hóa cho một cửa hàng mới hoàn tất trong vòng 15 đến 30 phút.

Kết luận

Đồ án "Phân tích và thiết kế hướng đối tượng Quản lý bán hàng cho chuỗi cửa hàng tiện lợi Ministop" đã xây dựng thành công một giải pháp công nghệ toàn diện, giải quyết trọn vẹn các thách thức quản lý đặc thù của mô hình cửa hàng tiện lợi 24/7. Thông qua việc áp dụng nghiêm ngặt quy trình OOAD, hệ thống không chỉ chuẩn hóa toàn bộ luồng thông tin giữa 7 nhóm tác nhân mà còn cung cấp nền tảng kiến trúc vững chắc, có khả năng mở rộng linh hoạt và bảo mật cao. Đây là minh chứng điển hình cho việc vận dụng kiến thức công nghệ phần mềm chuyên sâu vào giải quyết các bài toán kinh doanh bán lẻ thực tiễn. Độc giả và các nhà phát triển quan tâm có thể khai thác tài liệu thiết kế và kiến trúc này làm nền tảng cho các dự án thương mại hóa hệ sinh thái bán lẻ hiện đại.