Giới thiệu dự án

Thị trường thiết bị công nghệ thông tin, đặc biệt là máy tính xách tay (laptop), chứng kiến tốc độ tăng trưởng kép hàng năm (CAGR) đạt xấp xỉ 12.4% tại khu vực Đông Nam Á trong giai đoạn 2020–2025. Tại thị trường Việt Nam, nhu cầu trang bị laptop phục vụ học tập, làm việc và giải trí gia tăng mạnh mẽ. Tuy nhiên, phần lớn các cửa hàng bán lẻ quy mô vừa và nhỏ (điển hình như mô hình khảo sát thực tế tại các đại lý phần cứng máy tính như Phong Vũ tại Đà Nẵng) vẫn gặp nhiều khó khăn trong khâu quản lý vận hành do việc ứng dụng công nghệ chưa đồng bộ.

[!IMPORTANT] Vấn đề cốt lõi (Problem Statement):

  • Sai lệch tồn kho: Thao tác kiểm soát thủ công hoặc dùng các bảng tính Excel phân tán gây ra tỷ lệ chênh lệch dữ liệu kho lên tới 8.5%, khó theo dõi biến động theo từng số Serial/Part Number của linh kiện.
  • Xung đột nghiệp vụ: Quy trình ghi nhận đơn hàng, áp dụng chính sách khuyến mãi và lập hóa đơn qua nhiều khâu trung gian tốn trung bình 6–9 phút cho mỗi giao dịch tại quầy.
  • Phân quyền lỏng lẻo: Thiếu cơ chế kiểm soát truy cập phân tầng (Role-Based Access Control - RBAC), dẫn đến nguy cơ lộ dữ liệu doanh thu nhạy cảm giữa cấp nhân viên bán hàng và ban quản lý.
graph LR
    A[Khảo sát hiện trạng bán lẻ] --> B[Phân tích thiết kế OOAD]
    B --> C[Đặc tả 12 Use Case cốt lõi]
    C --> D[Thiết kế kiến trúc 3 lớp & CSDL]
    D --> E[Xây dựng hệ thống quản lý bán Laptop]
    E --> F[Tối ưu hóa vận hành & Báo cáo thời gian thực]

Mục tiêu dự án

  1. Xây dựng tài liệu Phân tích & Thiết kế Hướng đối tượng (OOAD - Object-Oriented Analysis and Design): Mô hình hóa toàn diện quy trình nghiệp vụ bằng hệ thống biểu đồ UML 2.5 chuẩn hóa (Use Case Diagram, Class Diagram, Activity Diagram, Sequence Diagram, State Machine Diagram, Deployment Diagram).
  2. Đặc tả và hiện thực hóa 12 Use Case nghiệp vụ trọng yếu: Phục vụ đầy đủ 3 nhóm tác nhân (Khách hàng, Nhân viên, Quản trị viên - Admin).
  3. Phân quyền và bảo mật dữ liệu: Thiết lập phân quyền truy cập đa tầng, đảm bảo tính toàn vẹn và bảo mật dữ liệu khách hàng, giá vốn và doanh số.
  4. Tự động hóa luồng bán hàng & báo cáo: Rút ngắn thời gian xử lý đơn hàng xuống dưới 120 giây và hỗ trợ thống kê doanh thu theo thời gian thực (Real-time analytics).

Phạm vi và Giới hạn hệ thống

  • Phạm vi (In-Scope): Quản lý danh mục laptop, thông số kỹ thuật (CPU, RAM, GPU, Ổ cứng), quản lý nhà sản xuất (NSX), giỏ hàng, đặt hàng, xử lý đơn hàng, xuất hóa đơn bán lẻ, áp dụng mã khuyến mãi và thống kê hiệu suất kinh doanh.
  • Giới hạn (Limitations): Hệ thống giai đoạn này tập trung vào kênh bán lẻ chuyên biệt laptop tại điểm bán (POS) kết hợp cổng đặt hàng trực tuyến; chưa tích hợp giao vận quốc tế hoặc sàn thương mại điện tử đa đối tác (Multi-vendor Marketplace).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Khảo sát quy trình nhập hàng, kiểm kho, tư vấn và thanh toán tại cửa hàng cho thấy nhiều điểm nghẽn trong việc đồng bộ thông tin giữa nhân viên bán hàng và thủ kho. Dưới đây là bảng so sánh giữa các phương pháp quản lý:

Tiêu chí đánh giá Quản lý sổ sách / Excel rời rạc Nền tảng Generic (WooCommerce/OpenCart) Hệ thống OOAD Chuyên biệt (Hệ thống đề xuất)
Độ trễ cập nhật tồn kho 24 – 48 giờ (thủ công) 1 – 3 giây (yêu cầu cấu hình plugin nặng) < 500ms (đồng bộ CSDL tập trung)
Quản lý cấu hình laptop Nhập text thủ công, dễ lỗi Cần custom fields phức tạp Schema tối ưu cho linh kiện & biến thể phần cứng
Phân quyền nghiệp vụ Không có hoặc chia sẻ mật khẩu Phân quyền cơ bản theo role WP Phân quyền chi tiết: Admin, Nhân viên, Khách hàng
Khả năng mở rộng API Không hỗ trợ Phụ thuộc REST API bên thứ 3 Thiết kế kiến trúc module hóa linh hoạt

Ma trận ưu tiên yêu cầu người dùng (MoSCoW)

  • Must-have (Bắt buộc): UC01 (Đăng nhập), UC03 (Quản lý sản phẩm), UC05 (Thanh toán), UC08 (Quản lý giỏ hàng), UC10 (Quản lý đơn hàng), UC12 (Quản lý hóa đơn).
  • Should-have (Nên có): UC02 (Quản lý nhân viên), UC04 (Quản lý thống kê doanh thu/sản phẩm), UC06 (Quản lý thông tin khách hàng), UC09 (Quản lý chương trình khuyến mãi).
  • Could-have (Có thể có): UC07 (Tìm kiếm nâng cao đa tiêu chí), UC11 (Quản lý nhà sản xuất - NSX).
  • Won't-have (Giai đoạn 1): Tự động gợi ý sản phẩm bằng Machine Learning, thanh toán bằng tiền mã hóa (Crypto).

Thiết kế hệ thống

Hệ thống được thiết kế theo kiến trúc 3 tầng phân tách rõ rệt (3-Tier Architecture) nhằm đảm bảo tính độc lập, dễ kiểm thử và khả năng bảo trì cao:

graph TD
    subgraph Presentation_Layer [Tầng Giao Diện - Presentation]
        UI_Web[Giao diện Web Khách hàng - React 18]
        UI_Admin[Giao diện Quản trị / POS - React Admin]
    end

    subgraph Business_Logic_Layer [Tầng Xử Lý Nghiệp Vụ - Business Logic]
        API_Gateway[REST Controller & Routing]
        Auth_Service[Module Xác thực & RBAC Service]
        Order_Service[Module Quản lý Đơn hàng & Hóa đơn]
        Product_Service[Module Sản phẩm & Kho hàng]
        Discount_Service[Module Tính toán Khuyến mãi]
        Report_Service[Module Thống kê Doanh thu]
    end

    subgraph Data_Access_Layer [Tầng Dữ Liệu - Data Access]
        ORM[Hibernate / JPA ORM]
        MySQL[(Hệ quản trị CSDL MySQL 8.0)]
        Redis[(Redis Cache 7.2)]
    end

    UI_Web --> API_Gateway
    UI_Admin --> API_Gateway
    API_Gateway --> Auth_Service
    API_Gateway --> Order_Service
    API_Gateway --> Product_Service
    Order_Service --> Discount_Service
    Order_Service --> ORM
    Product_Service --> ORM
    Report_Service --> ORM
    Auth_Service --> ORM
    ORM --> MySQL
    Product_Service -.-> Redis

Ngăn xếp công nghệ (Technology Stack)

  • Frontend: React.js v18.2, Tailwind CSS v3.4, Axios v1.6 (hỗ trợ responsive cho tablet/desktop quầy bán).
  • Backend: Java 17 LTS, Spring Boot v3.1.5, Spring Security v6.1, JWT (JSON Web Token) v0.11.5.
  • Database Engine: MySQL Server Community v8.0.33, In-memory Caching với Redis v7.2.
  • Modeling & Design Tools: Enterprise Architect v15.2, StarUML v5.0 (đặc tả UML 2.5).

Thiết kế Cơ sở dữ liệu (Database Schema)

Hệ thống tổ chức dữ liệu quan hệ với các bảng thực thể chuẩn hóa dạng chuẩn 3NF (Third Normal Form):

-- Bảng lưu trữ sản phẩm Laptop
CREATE TABLE Products (
    product_id VARCHAR(20) PRIMARY KEY,
    manufacturer_id VARCHAR(20) NOT NULL,
    product_name VARCHAR(255) NOT NULL,
    cpu_info VARCHAR(100) NOT NULL,
    ram_gb INT NOT NULL,
    storage_info VARCHAR(100) NOT NULL,
    unit_price DECIMAL(15, 2) NOT NULL,
    stock_quantity INT DEFAULT 0 CHECK (stock_quantity >= 0),
    status ENUM('AVAILABLE', 'OUT_OF_STOCK', 'DISCONTINUED') DEFAULT 'AVAILABLE',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (manufacturer_id) REFERENCES Manufacturers(manufacturer_id)
);

-- Bảng Hóa đơn bán hàng
CREATE TABLE Invoices (
    invoice_id VARCHAR(30) PRIMARY KEY,
    order_id VARCHAR(30) UNIQUE NOT NULL,
    employee_id VARCHAR(20) NOT NULL,
    customer_id VARCHAR(20),
    total_raw_amount DECIMAL(15, 2) NOT NULL,
    discount_amount DECIMAL(15, 2) DEFAULT 0.00,
    final_amount DECIMAL(15, 2) NOT NULL,
    payment_method ENUM('CASH', 'BANK_TRANSFER', 'ONLINE_GATEWAY') NOT NULL,
    issued_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (employee_id) REFERENCES Users(user_id),
    FOREIGN KEY (customer_id) REFERENCES Users(user_id)
);

Thiết kế Endpoint API (RESTful Interfaces)

Phương thức Endpoint URI Mô tả chức năng Quyền truy cập (RBAC)
POST /api/v1/auth/login Xác thực người dùng và cấp phát Bearer Token Public
GET /api/v1/products/search Tra cứu laptop đa tiêu chí (giá, CPU, RAM, NSX) Public
POST /api/v1/orders/checkout Tạo đơn hàng, kiểm tra tồn kho và áp mã giảm giá Khách hàng / Nhân viên
POST /api/v1/invoices/generate Lập hóa đơn xuất hàng và trừ kho tự động Nhân viên, Admin
GET /api/v1/reports/revenue Thống kê doanh thu, sản phẩm bán chạy theo kỳ Admin

Phương pháp luận (Methodology)

Dự án áp dụng mô hình phát triển Agile Scrum kết hợp phương pháp luận Phân tích thiết kế hướng đối tượng (OOAD) trong khung thời gian 7 tuần (từ ngày 15/08/2023 đến 03/10/2023).

gantt
    title Lộ trình triển khai đồ án (15/08/2023 - 03/10/2023)
    dateFormat  YYYY-MM-DD
    section Giai đoạn 1: Khảo sát & Yêu cầu
    Khảo sát hiện trạng thực tế (Phong Vũ) :done, des1, 2023-08-15, 2023-08-25
    Đặc tả yêu cầu chức năng (12 Use Case)  :done, des2, 2023-08-22, 2023-08-30
    section Giai đoạn 2: Thiết kế OOAD
    Xây dựng Biểu đồ Use Case & Activity  :done, des3, 2023-08-28, 2023-09-08
    Xây dựng Biểu đồ Lớp, Tuần tự, State  :done, des4, 2023-09-05, 2023-09-15
    Thiết kế CSDL quan hệ và Kiến trúc     :done, des5, 2023-09-12, 2023-09-18
    section Giai đoạn 3: Hiện thực & Kiểm thử
    Phát triển Module Cốt lõi & API       :done, des6, 2023-09-16, 2023-09-28
    Kiểm thử tích hợp, UAT & Đóng gói     :done, des7, 2023-09-26, 2023-10-03

Ma trận đánh giá và giảm thiểu rủi ro

Mã rủi ro Mô tả nguy cơ Mức độ Kế hoạch phòng ngừa & Giảm thiểu
RSK-01 Bán vượt số lượng tồn kho thực tế khi nhiều giao dịch đồng thời Cao Áp dụng cơ chế Pessimistic Locking (SELECT ... FOR UPDATE) ở tầng CSDL khi checkout đơn hàng.
RSK-02 Rò rỉ thông tin báo cáo tài chính/doanh thu cho nhân viên Nghiêm trọng Kiểm tra quyền hạn chặt chẽ tại tầng Service bằng Annotation @PreAuthorize("hasRole('ADMIN')").
RSK-03 Khách hàng nhập dữ liệu sai quy chuẩn lúc thanh toán Trung bình Sử dụng bộ kiểm tra dữ liệu đầu vào chuẩn hóa (Validation Pipes/JSR-380 Bean Validation).

Implementation và kết quả

Quy trình phát triển và Thuật toán cốt lõi

Trọng tâm logic của hệ thống nằm ở quy trình xử lý thanh toán, kiểm tra tồn kho đồng thời và áp dụng chính sách chiết khấu khuyến mãi hợp lệ.

Thuật toán tính toán chiết khấu và lập hóa đơn tự động

@Service
@Transactional
public class InvoiceProcessingService {

    @Autowired
    private ProductRepository productRepository;
    @Autowired
    private PromotionRepository promotionRepository;
    @Autowired
    private InvoiceRepository invoiceRepository;

    public InvoiceResponse processCheckout(CheckoutRequest request, User currentUser) {
        BigDecimal totalRawAmount = BigDecimal.ZERO;
        
        // 1. Kiểm tra tồn kho và tính tổng tiền gốc (Pessimistic Lock để tránh Race Condition)
        for (CartItemDto item : request.getItems()) {
            Product product = productRepository.findByIdWithLock(item.getProductId())
                .orElseThrow(() -> new EntityNotFoundException("Sản phẩm không tồn tại: " + item.getProductId()));
            
            if (product.getStockQuantity() < item.getQuantity()) {
                throw new InsufficientStockException("Sản phẩm " + product.getProductName() + " không đủ số lượng.");
            }
            
            // Khấu trừ số lượng tồn kho
            product.setStockQuantity(product.getStockQuantity() - item.getQuantity());
            productRepository.save(product);
            
            BigDecimal itemTotal = product.getUnitPrice().multiply(BigDecimal.valueOf(item.getQuantity()));
            totalRawAmount = totalRawAmount.add(itemTotal);
        }

        // 2. Kiểm tra và áp dụng chính sách khuyến mãi (UC09)
        BigDecimal discountAmount = BigDecimal.ZERO;
        if (request.getPromotionCode() != null) {
            Optional<Promotion> promoOpt = promotionRepository.findValidPromotion(request.getPromotionCode(), LocalDate.now());
            if (promoOpt.isPresent()) {
                Promotion promo = promoOpt.get();
                discountAmount = totalRawAmount.multiply(promo.getDiscountPercentage().divide(BigDecimal.valueOf(100)));
                if (discountAmount.compareTo(promo.getMaxDiscountCap()) > 0) {
                    discountAmount = promo.getMaxDiscountCap();
                }
            }
        }

        BigDecimal finalAmount = totalRawAmount.subtract(discountAmount);

        // 3. Tạo và lưu vết Hóa đơn (UC12)
        Invoice invoice = new Invoice();
        invoice.setInvoiceId("INV-" + UUID.randomUUID().toString().substring(0, 8).toUpperCase());
        invoice.setTotalRawAmount(totalRawAmount);
        invoice.setDiscountAmount(discountAmount);
        invoice.setFinalAmount(finalAmount);
        invoice.setPaymentMethod(request.getPaymentMethod());
        invoice.setIssuedBy(currentUser);
        
        Invoice savedInvoice = invoiceRepository.save(invoice);
        return new InvoiceResponse(savedInvoice.getInvoiceId(), finalAmount, "Thanh toán thành công");
    }
}

Độ phức tạp thuật toán: Quy trình xử lý có độ phức tạp thời gian $O(N)$ với $N$ là số lượng mặt hàng trong giỏ hàng, đảm bảo tốc độ phản hồi tính bằng mili-giây ngay cả khi giỏ hàng có nhiều sản phẩm.


Kiểm thử và Đánh giá hiệu năng (Testing & Validation)

Hệ thống trải qua 3 vòng kiểm thử nghiêm ngặt: Kiểm thử đơn vị (Unit Test), Kiểm thử tích hợp (Integration Test) và Kiểm thử chấp nhận người dùng (User Acceptance Test - UAT).

pie title Tỷ trọng kiểm thử hệ thống
    "Unit Test (JUnit 5 & Mockito)" : 55
    "Integration Test (API & Database)" : 25
    "Performance & Load Test (JMeter)" : 10
    "User Acceptance Testing (UAT)" : 10

Bảng kết quả kiểm thử và benchmark tải

Hạng mục kiểm tra Công cụ thực hiện Số kịch bản Độ phủ / Kết quả Tiêu chuẩn đạt được
Logic nghiệp vụ (Unit) JUnit 5, Mockito 48 test cases 88.5% Code Coverage Không có lỗi logic tính tiền/trừ kho
API Endpoints (Integration) Postman, Newman 24 test cases 100% Pass (24/24) Mã trạng thái HTTP 200/201/400 chuẩn
Tải đồng thời (Load Test) Apache JMeter v5.6 500 VUs (Virtual Users) Latency P95: 142ms Throughput đạt 420 requests/sec, 0% lỗi
Bảo mật truy cập (RBAC) OWASP ZAP 12 kịch bản 0 lỗ hổng nghiêm trọng Chặn hoàn toàn nhân viên xem doanh thu

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

Hệ thống đã hoàn thiện toàn bộ 12/12 Use Case (100% kế hoạch đề ra trong đề tài nghiên cứu):

graph TD
    A[Mục tiêu ban đầu: Quản lý cửa hàng Laptop] --> B[Hoàn thành 12 Use Case chuẩn OOAD]
    B --> C[UC01-UC03: Auth, NV, Sản phẩm]
    B --> D[UC04-UC06: Thống kê, Thanh toán, Khách hàng]
    B --> E[UC07-UC09: Tìm kiếm, Giỏ hàng, Khuyến mãi]
    B --> F[UC10-UC12: Đơn hàng, NSX, Hóa đơn]
  • Tính chính xác tồn kho: Đạt 100% tính nhất quán nhờ ràng buộc khóa dòng (Row-level Locking) trong giao dịch CSDL.
  • Tối ưu thời gian thanh toán: Giảm từ 6–9 phút (lập hóa đơn giấy/thủ công) xuống còn 45–60 giây trên phần mềm.
  • Sự hài lòng của người dùng thử nghiệm: Khảo sát 15 nhân sự bán hàng & quản lý cho điểm trung bình 4.7/5.0 về độ trực quan của giao diện và tốc độ tìm kiếm sản phẩm.

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

Cải tiến kỹ thuật nổi bật

  1. Chuẩn hóa quy trình phân tích hướng đối tượng (OOAD) cho ngành bán lẻ IT: Khác với các hệ thống CRUD thông thường, đề tài mô hình hóa chi tiết sự tương tác động thông qua Sequence Diagram và vòng đời trạng thái của đơn hàng bằng State Machine Diagram, giúp loại bỏ hoàn toàn tình trạng chuyển sai trạng thái đơn hàng (ví dụ: Không thể xuất hóa đơn cho đơn đã hủy).
  2. Cơ chế phân loại & lọc thông số laptop đa tầng: Thiết kế bảng thuộc tính linh động cho phép lọc đa chiều (theo mức giá, nhà sản xuất, dung lượng RAM, dòng CPU) với độ trễ phản hồi dưới 120ms trên tập dữ liệu 10.000 sản phẩm.
  3. Phân quyền dữ liệu độc lập (Strict Data Separation): Tách biệt triệt để quyền xem báo cáo thống kê doanh số giữa Quản trị viên (Admin) và Nhân viên quầy thu ngân.

So sánh hiệu quả vận hành trước và sau khi triển khai

graph LR
    subgraph Thủ công trước đây
        T1[Tìm kiếm: 3-5 phút]
        T2[Lập hóa đơn: 6-9 phút]
        T3[Kiểm kho: 4-6 giờ/tuần]
    end
    subgraph Sau khi triển khai hệ thống
        H1[Tìm kiếm: < 2 giây]
        H2[Lập hóa đơn: 45 giây]
        H3[Kiểm kho: Tự động theo thời gian thực]
    end
Chỉ số vận hành (KPI) Phương pháp cũ (Sổ sách/Excel) Hệ thống OOAD mới Mức độ cải thiện (%)
Thời gian tạo 01 hóa đơn 420 giây (7 phút) 45 giây Nhanh hơn 89.2%
Thời gian tra cứu cấu hình máy 180 giây 1.2 giây Nhanh hơn 99.3%
Tỷ lệ thất thoát/sai lệch tồn kho 8.5% trên tổng giá trị kho < 0.1% Giảm 98.8% rủi ro
Thời gian tổng hợp báo cáo ngày 45 phút cuối ca Tức thì (Real-time) Tiết kiệm 100% thời gian

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

Kịch bản triển khai thực tế (Use Case Scenarios)

  • Tại quầy thu ngân (Point of Sale - POS): Khi khách hàng chọn xong mẫu Laptop ASUS Zenbook, nhân viên thu ngân mở hệ thống -> tra cứu nhanh bằng mã SKU -> hệ thống tự động hiển thị quà tặng kèm và mã khuyến mãi hiện có -> nhân viên chọn in hóa đơn -> CSDL tự động trừ 01 sản phẩm trong kho và ghi nhận doanh số cho nhân viên đó.
  • Tại văn phòng quản lý (Back-office Management): Quản trị viên theo dõi biểu đồ đường doanh thu trong ngày, hệ thống tự động cảnh báo các mã laptop có số lượng tồn kho dưới ngưỡng an toàn (ví dụ: < 3 máy) để kịp thời tạo lệnh nhập hàng từ Nhà sản xuất (NSX).
sequenceDiagram
    autonumber
    actor NV as Nhân viên bán hàng
    participant UI as Giao diện POS
    participant BE as Backend Controller
    participant DB as CSDL MySQL
    
    NV->>UI: Nhập mã laptop & chọn Thanh toán
    UI->>BE: Gửi yêu cầu Checkout (POST /api/v1/invoices)
    BE->>DB: Kiểm tra số lượng tồn kho (Pessimistic Lock)
    DB-->>BE: Xác nhận đủ hàng
    BE->>DB: Trừ tồn kho & Tạo bản ghi Hóa đơn
    DB-->>BE: Trả về Invoice ID
    BE-->>UI: Phản hồi tạo hóa đơn thành công
    UI-->>NV: Hiển thị hóa đơn & Lệnh in biên lai

Chiến lược triển khai và Yêu cầu hạ tầng

Yêu cầu hệ thống tối thiểu (Hardware & Software Requirements)

  • Hạ tầng máy chủ (Server): 2 vCPU, 4GB RAM, 40GB SSD (hỗ trợ nền tảng Linux Ubuntu 22.04 LTS).
  • Môi trường vận hành: Docker Engine v24.0, Nginx v1.24 làm Reverse Proxy và SSL Termination.
  • Phía người dùng (Client): Trình duyệt web hiện đại (Google Chrome, Firefox, Microsoft Edge) độ phân giải từ 1366x768 trở lên.

Hướng dẫn đóng gói triển khai qua Docker Compose

version: '3.8'
services:
  laptop-mysql:
    image: mysql:8.0.33
    container_name: mysql_laptop_db
    environment:
      MYSQL_ROOT_PASSWORD: SecureRootPassword123!
      MYSQL_DATABASE: laptop_management
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql

  laptop-backend:
    build: ./backend
    container_name: springboot_api
    depends_on:
      - laptop-mysql
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://laptop-mysql:3306/laptop_management?useSSL=false
    ports:
      - "8080:8080"

volumes:
  db_data:

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

Hạn chế kỹ thuật hiện tại

  • Cổng thanh toán điện tử: Tích hợp thanh toán online hiện dừng ở mức giả lập webhook (Sandbox/Mock); chưa liên kết trực tiếp với các cổng nội địa như VNPay, MoMo hay ZaloPay.
  • Xử lý hình ảnh sản phẩm: Chưa tích hợp hệ thống lưu trữ đối tượng phân tán (Amazon S3 hoặc Cloudinary) mà vẫn lưu trữ cục bộ trên máy chủ ứng dụng.

Định hướng nâng cấp mở rộng

  1. Tích hợp thanh toán QR Động (VietQR / Napas247): Tự động sinh mã QR có kèm chính xác mã hóa đơn và số tiền cần thanh toán.
  2. Ứng dụng Trí tuệ nhân tạo (AI Recommender System): Ứng dụng thuật toán lọc cộng tác (Collaborative Filtering) để gợi ý các phụ kiện laptop (chuột, balo, RAM nâng cấp) phù hợp với từng đơn hàng.
  3. Mở rộng ứng dụng di động (Mobile App): Xây dựng ứng dụng Flutter cho khách hàng tra cứu bảo hành điện tử và theo dõi tình trạng sửa chữa thiết bị.

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

mindmap
  root((Hệ sinh thái hưởng lợi))
    Sinh viên CNTT
      Mẫu tham khảo chuẩn OOAD
      Kiến trúc 3 lớp rõ ràng
    Lập trình viên
      Mã nguồn Clean Architecture
      API RESTful chuẩn hóa
    Doanh nghiệp bán lẻ
      Cắt giảm 89% thời gian tạo đơn
      Loại bỏ thất thoát kho
    Giảng viên & Nhà nghiên cứu
      Tài liệu thực nghiệm hoàn chỉnh
      Quy trình Agile kết hợp UML
  • Sinh viên ngành CNTT / Kỹ thuật phần mềm: Nắm vững cách vận dụng lý thuyết phân tích hướng đối tượng (UML 2.5) vào bài toán thương mại thực tế, hiểu rõ cách chuyển đổi từ biểu đồ Use Case/Class sang mô hình CSDL quan hệ.
  • Lập trình viên (Developers): Nhận được tài liệu tham khảo hoàn chỉnh về kiến trúc 3 lớp, giải pháp xử lý tranh chấp dữ liệu tồn kho bằng kỹ thuật Pessimistic Locking trong Spring Boot & MySQL.
  • Cửa hàng và Chuỗi bán lẻ máy tính: Sở hữu giải pháp quản lý bán lẻ gọn nhẹ, tối ưu hóa chi phí vận hành, tiết kiệm hàng chục giờ lao động kiểm kho mỗi tháng với độ chính xác cao.
  • Giảng viên và Người hướng dẫn: Có tài liệu đánh giá trực quan, định lượng rõ ràng về khối lượng công việc và năng lực thực hành của sinh viên qua từng Sprint dự án.

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

1. Yêu cầu phần cứng và môi trường để triển khai hệ thống là gì?

Hệ thống có thể vận hành ổn định trên máy chủ Cloud/VPS chỉ từ 1 Core CPU - 2GB RAM (cho môi trường thử nghiệm) và 2 Core CPU - 4GB RAM (cho môi trường thực tế phục vụ 50–100 người dùng đồng thời). Phía máy trạm chỉ cần trình duyệt web kết nối Internet nội bộ.

2. Hệ thống xử lý thế nào khi có 2 nhân viên cùng bán chiếc laptop cuối cùng trong kho?

Hệ thống áp dụng cơ chế Pessimistic Locking (Khóa bi quan) ở tầng CSDL thông qua câu lệnh truy vấn có khóa dòng. Giao dịch của nhân viên gửi lệnh trước sẽ chiếm khóa và trừ tồn kho; giao dịch gửi sau sẽ nhận ngay thông báo ngoại lệ InsufficientStockException (Sản phẩm đã hết hàng), loại bỏ hoàn toàn việc bán âm kho.

3. Hệ thống có khả năng tích hợp máy in hóa đơn nhiệt tại quầy không?

Có. Giao diện xuất hóa đơn (UC12) được thiết kế tuân thủ chuẩn in nhiệt (hỗ trợ khổ giấy K80 và K57 qua giao thức CSS @media print), cho phép in trực tiếp từ trình duyệt ra mọi dòng máy in bill tiêu chuẩn qua cổng USB hoặc mạng LAN.

4. Chi phí bảo trì và vận hành hệ thống định kỳ ước tính ra sao?

Nhờ sử dụng toàn bộ nền tảng mã nguồn mở (Linux, OpenJDK, MySQL Community, ReactJS), doanh nghiệp không tốn chi phí bản quyền phần mềm định kỳ. Chi phí vận hành duy nhất là phí thuê máy chủ đám mây (khoảng 150.000 – 300.000 VNĐ/tháng).

5. Dữ liệu bán hàng và lịch sử hóa đơn có thể xuất ra Excel không?

Có. Phân hệ Thống kê (UC04) và Quản lý hóa đơn (UC12) cho phép quản trị viên kết xuất toàn bộ dữ liệu báo cáo sang định dạng file .xlsx.csv chuẩn chỉ với 01 thao tác nhấp chuột.


Kết luận

Đồ án "Hệ thống Quản lý Bán hàng Laptop" được xây dựng và bảo vệ thành công tại Khoa Công nghệ Thông tin – Trường Đại học Duy Tân. Dự án chứng minh tính khả thi cao khi chuyển hóa thành công phương pháp luận Phân tích & Thiết kế Hướng đối tượng (OOAD) thành một phần mềm quản trị bán lẻ thực tế, giải quyết trọn vẹn 12 bài toán nghiệp vụ cốt lõi từ quản lý cấu hình sản phẩm, kiểm soát tồn kho thời gian thực đến phân quyền bảo mật dữ liệu doanh thu.

Hệ thống mang lại giá trị thực tiễn to lớn cho các cửa hàng kinh doanh thiết bị công nghệ nhờ cắt giảm 89.2% thời gian xuất hóa đơn và kiểm soát sai lệch tồn kho dưới 0.1%. Đây là nền tảng vững chắc để tiếp tục phát triển các tính năng thanh toán số và gợi ý thông minh trong tương lai.