Giới thiệu dự án

Thị trường Thương mại Điện tử (TMĐT) tại Việt Nam đang ghi nhận mức tăng trưởng vượt bậc với tốc độ bình quân đạt trên 20%/năm, trong đó ngành hàng Mỹ phẩm và Chăm sóc sắc đẹp (Skincare) chiếm tỷ trọng tiêu thụ trực tuyến cao thứ hai toàn ngành. Tuy nhiên, phần lớn các cửa hàng bán lẻ truyền thống và các hộ kinh doanh nhỏ vẫn vận hành theo mô hình bán buôn trực tiếp hoặc phụ thuộc hoàn toàn vào các kênh mạng xã hội (Facebook, TikTok, Zalo). Mô hình kinh doanh thủ công này bộc lộ nhiều điểm nghẽn nghiêm trọng: tỷ lệ đơn hàng ảo và tình trạng spam tin nhắn vượt mức 30%, thất thoát dữ liệu tồn kho do ghi chép rời rạc, và tốn trung bình từ 4-6 giờ/ngày cho việc kiểm soát doanh thu và phản hồi khách hàng.

Nhằm giải quyết triệt để bài toán số hóa quy trình kinh doanh cho ngành hàng làm đẹp, đồ án tốt nghiệp "Thiết kế website bán mỹ phẩm Skin Care bằng WordPress" (tác giả Nguyễn Văn Thái, hướng dẫn bởi ThS. Bùi Thị Thúy Quỳnh, Khoa Công nghệ Thông tin - Trường Đại học Hải Phòng) đã xây dựng một nền tảng TMĐT chuyên dụng, hiện đại và tối ưu hóa chi phí vận hành.

flowchart LR
    A[Khách hàng] -->|Duyệt & Đặt hàng| B(Giao diện Storefront)
    B -->|REST API / Action Hooks| C[Lõi WordPress 6.4 + WooCommerce 8.5]
    C -->|CRUD Query| D[(Cơ sở dữ liệu MySQL 8.0)]
    E[Quản trị viên / Nhân viên] -->|Quản lý Kho & Đơn| C

Mục tiêu kỹ thuật cụ thể của dự án

  1. Xây dựng hệ thống TMĐT hoàn chỉnh: Tích hợp quy trình mua sắm từ duyệt sản phẩm, lọc theo thuộc tính da, quản lý giỏ hàng bất đồng bộ đến thanh toán đa phương thức (COD và Chuyển khoản ngân hàng).
  2. Hiện đại hóa kiến trúc quản trị: Thiết kế cơ chế phân quyền RBAC (Role-Based Access Control) cho 3 nhóm tác nhân: Quản trị viên (Admin), Nhân viên quản lý kho/đơn hàng (Shop Manager) và Khách hàng (Customer).
  3. Chuẩn hóa cơ sở dữ liệu động: Khai thác mô hình dữ liệu quan hệ kết hợp schema EAV (Entity-Attribute-Value) để lưu trữ linh hoạt hàng nghìn mã phân loại sản phẩm (SKU), biến thể dung tích, thành phần mỹ phẩm.
  4. Tối ưu hóa hiệu năng và SEO: Giảm thời gian phản hồi máy chủ đầu tiên (TTFB) xuống dưới 300ms, đạt điểm Google PageSpeed Insights trên 85/100 ở cả hai giao diện Desktop và Mobile.

Chỉ số kết quả kỳ vọng

  • Thời gian tải trang (Page Load Time): $\le 1.8$ giây trên môi trường mạng tiêu chuẩn.
  • Thời gian xử lý đơn hàng: Giảm 85% so với quy trình thủ công (từ 15 phút xuống dưới 2 phút/đơn).
  • Tỷ lệ thất thoát dữ liệu tồn kho: Đạt mức 0% nhờ cơ chế tự động trừ kho theo thời gian thực (Atomic Inventory Deductions).

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

Phân tích hiện trạng và đánh giá giải pháp

Tiêu chí kỹ thuật Nền tảng SaaS (Shopify / Haravan) Tự phát triển Framework (Laravel / Node.js) Giải pháp WordPress & WooCommerce (Đề tài)
Chi phí bản quyền ban đầu Đắt ($29 - $299/tháng + % doanh thu) Rất cao (Chi phí nhân sự kỹ thuật lớn) 0 VNĐ (Mã nguồn mở miễn phí)
Khả năng kiểm soát dữ liệu Phụ thuộc bên thứ ba (Vendor lock-in) Hoàn toàn làm chủ máy chủ và DB Hoàn toàn làm chủ trên Hosting/VPS riêng
Thời gian triển khai (Time-to-market) Nhanh (1 - 2 tuần) Chậm (3 - 6 tháng) Rất nhanh (2 - 4 tuần)
Hệ sinh thái Plugin & SEO Đóng, tốn phí add-on định kỳ Phải tự xây dựng module từ đầu Vượt trội (>60.000 plugin, tối ưu On-page)
Yêu cầu bảo trì hệ thống Tối thiểu (Bên thứ ba quản lý) Cao (Cần đội ngũ DevOps/Dev) Trung bình (Dễ bảo trì qua WP Admin)

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

  • Must Have: Đăng nhập/Đăng ký xác thực qua Email; Danh mục phân loại mỹ phẩm nhiều cấp; Giỏ hàng và Checkout 1 bước; Module quản lý trạng thái đơn hàng (Chờ xử lý, Đang giao, Đã hoàn thành, Đã hủy).
  • Should Have: Tìm kiếm sản phẩm theo tên theo thời gian thực; Đánh giá chấm sao (Star Rating) và bình luận trải nghiệm; Module quản lý mã khuyến mại/chiết khấu; Phân quyền nhân viên xử lý kho.
  • Could Have: Đổi mật khẩu tự động qua email token; Lọc sản phẩm theo tầm giá và thương hiệu.
  • Won't Have (Giai đoạn này): Tích hợp cổng thanh toán quốc tế Stripe/Visa trực tiếp; Ứng dụng di động Native iOS/Android.

Thiết kế kiến trúc hệ thống và cơ sở dữ liệu

Hệ thống được phát triển trên kiến trúc Model-View-Controller (MVC) mở rộng thông qua hệ thống Hook (Action & Filter) của WordPress, vận hành trên Technology Stack:

  • Web Server: Apache 2.4.x / Nginx 1.24.x
  • Ngôn ngữ Backend: PHP 8.2 (Strict Typing, JIT Compiler enabled)
  • Cơ sở dữ liệu: MySQL 8.0 / MariaDB 10.11 (Engine InnoDB)
  • Lõi thương mại: WooCommerce Core Engine 8.5.x
  • Môi trường phát triển cục bộ: XAMPP v8.2.12
+-----------------------------------------------------------------------+
|                            TẦNG VIEW (UI/UX)                          |
|  - HTML5 Semantics  - CSS3 Flexbox/Grid  - JavaScript ES6 / jQuery    |
|  - Responsive Breakpoints (320px, 768px, 1024px, 1440px)              |
+-----------------------------------------------------------------------+
                                  │
                                  ▼
+-----------------------------------------------------------------------+
|                    TẦNG CONTROLLER / BUSINESS LOGIC                   |
|  - WordPress Rewrite Engine (Routing & Pretty Permalinks)             |
|  - WooCommerce Hook Engine (add_action, add_filter)                  |
|  - REST API Engine & Nonce Security Validator                         |
+-----------------------------------------------------------------------+
                                  │
                                  ▼
+-----------------------------------------------------------------------+
|                       TẦNG DỮ LIỆU (DATABASE MODEL)                  |
|  - Core Data: wp_posts, wp_postmeta                                   |
|  - Taxonomy Data: wp_terms, wp_term_taxonomy, wp_term_relationships   |
|  - Custom Tables WooCommerce: wp_wc_orders, wp_wc_order_product_lookup|
+-----------------------------------------------------------------------+

Thiết kế cơ sở dữ liệu quan hệ (Relational DB Schema)

Hệ thống sử dụng các bảng chuẩn được tối ưu hóa chỉ mục (Indexing):

  1. wp_posts: Lưu trữ thực thể cha (post_type = 'product' cho sản phẩm, post_type = 'shop_order' cho đơn hàng).
  2. wp_postmeta: Lưu trữ các thuộc tính mở rộng (Meta Key - Meta Value) như _price, _regular_price, _sale_price, _stock_status, _sku.
  3. wp_terms & wp_term_relationships: Phân loại cấu trúc danh mục cha - con (ví dụ: Chăm sóc da mặt -> Sữa rửa mặt / Kem chống nắng) với độ phức tạp truy vấn $O(\log N)$ nhờ B-Tree Index.
  4. wp_users & wp_usermeta: Lưu trữ tài khoản, mật khẩu băm theo chuẩn phpass (kết hợp SHA-256) và phân quyền Role/Capabilities.

Implementation và kết quả

Quy trình phát triển (Agile Framework)

Dự án được chia thành 4 Sprint phát triển liên tục trong 8 tuần:

  • Sprint 1 (Tuần 1-2): Phân tích nghiệp vụ, mô hình hóa Use Case, thiết lập cấu trúc cơ sở dữ liệu trên XAMPP và cài đặt WordPress Core.
  • Sprint 2 (Tuần 3-4): Cấu hình lõi WooCommerce, thiết lập Taxonomy danh mục mỹ phẩm, xây dựng bộ lọc sản phẩm và tính năng giỏ hàng.
  • Sprint 3 (Tuần 5-6): Tích hợp logic xử lý đơn hàng, module khuyến mại tự động, phân quyền tài khoản (RBAC) và giao diện Checkout.
  • Sprint 4 (Tuần 7-8): Kiểm thử tải, bảo mật XSS/CSRF/SQL Injection, tối ưu hóa asset CSS/JS và đóng gói tài liệu kỹ thuật.

Kỹ thuật cốt lõi và Code Implementation

Hệ thống triển khai các Custom Hooks tối ưu nghiệp vụ xử lý giá tự động và xác thực dữ liệu đơn hàng trong file functions.php:

<?php
/**
 * Tự động áp dụng chiết khấu 10% cho khách hàng thành viên khi mua mỹ phẩm Skincare
 * Áp dụng kỹ thuật Hook Filter của WooCommerce Engine
 */
add_action('woocommerce_cart_calculate_fees', 'apply_skincare_member_discount', 20, 1);
function apply_skincare_member_discount($cart) {
    if (is_admin() && !defined('DOING_AJAX')) {
        return;
    }
    
    // Kiểm tra trạng thái đăng nhập của khách hàng
    if (is_user_logged_in()) {
        $user = wp_get_current_user();
        
        // Kiểm tra phân quyền Customer
        if (in_array('customer', (array) $user->roles)) {
            $discount_percentage = 0.10; // 10% chiết khấu
            $cart_subtotal = $cart->get_subtotal();
            
            if ($cart_subtotal > 500000) { // Đơn hàng trên 500.000 VNĐ
                $discount_amount = -($cart_subtotal * $discount_percentage);
                $cart->add_fee(__('Ưu đãi thành viên SkinCare (10%)', 'skincare-textdomain'), $discount_amount, true);
            }
        }
    }
}

Để tối ưu hóa tìm kiếm sản phẩm theo tên mà không gây tải cho máy chủ MySQL, hệ thống tích hợp xử lý sanitize và index:

<?php
/**
 * REST API Endpoint tìm kiếm sản phẩm Skincare với cấu trúc an toàn SQL Injection
 */
add_action('rest_api_init', function () {
    register_rest_route('skincare/v1', '/search/', array(
        'methods'  => 'GET',
        'callback' => 'skincare_ajax_search_products',
        'permission_callback' => '__return_true',
        'args'     => array(
            'keyword' => array(
                'required' => true,
                'validate_callback' => function($param) {
                    return is_string($param) && !empty(trim($param));
                },
                'sanitize_callback' => 'sanitize_text_field',
            ),
        ),
    ));
});

function skincare_ajax_search_products($request) {
    global $wpdb;
    $keyword = '%' . $wpdb->esc_like($request->get_param('keyword')) . '%';
    
    $query = $wpdb->prepare(
        "SELECT ID, post_title, guid FROM {$wpdb->posts} 
         WHERE post_type = 'product' AND post_status = 'publish' AND post_title LIKE %s 
         LIMIT 10",
        $keyword
    );
    
    $results = $wpdb->get_results($query);
    return new WP_REST_Response($results, 200);
}

Kết quả đo lường và đánh giá thực nghiệm

+-----------------------------------------------------------------------+
|                  KẾT QUẢ BENCHMARK VÀ TỐI ƯU HỆ THỐNG                |
+-----------------------------------+-----------------+-----------------+
| Chỉ số kiểm thử                   | Trước tối ưu    | Sau tối ưu      |
+-----------------------------------+-----------------+-----------------+
| First Contentful Paint (FCP)      | 2.8 giây        | 0.9 giây        |
| Time to Interactive (TTI)         | 4.2 giây        | 1.6 giây        |
| Kích thước trang trung bình       | 3.4 MB          | 1.1 MB          |
| Tải đồng thời (JMeter 50 VUs)     | 18% lỗi HTTP 500| 0% lỗi          |
| Điểm Google PageSpeed (Desktop)   | 58 / 100        | 92 / 100        |
+-----------------------------------+-----------------+-----------------+

Hệ thống đã trải qua kiểm thử hộp đen (Black-box testing) trên 17 kịch bản Use Case (từ Đăng ký, Đăng nhập, Giỏ hàng, Đặt hàng đến Quản trị danh mục và Phân quyền). Toàn bộ 17/17 kịch bản đều đạt tỷ lệ pass 100%, không xảy ra lỗi tranh chấp giỏ hàng khi người dùng thay đổi số lượng đồng thời.


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

Điểm mới trong giải pháp kỹ thuật

  1. Kiến trúc dữ liệu tối ưu cho ngành Mỹ phẩm: Không giống các website bán hàng phổ thông, hệ thống được cấu hình Taxonomy chuyên biệt cho thuộc tính mỹ phẩm (loại da: Da dầu, Da khô, Da nhạy cảm; dung tích: 30ml, 50ml, 100ml; thương hiệu chính hãng). Cơ chế này giúp thu hẹp phạm vi lọc từ 1000 sản phẩm xuống kết quả chính xác trong chưa đầy 0.3 giây.
  2. Quy trình phân quyền phân tán (RBAC): Tách bạch hoàn toàn quyền hạn giữa Super Admin (toàn quyền hệ thống) và Staff (chỉ xem đơn hàng, cập nhật trạng thái kho, sửa thông tin chi tiết sản phẩm, không có quyền can thiệp vào cấu trúc hệ thống hoặc xóa tài khoản quản trị).
  3. Giảm thiểu độ trễ truy vấn: Áp dụng WordPress Transients API để lưu đệm (cache) danh sách sản phẩm bán chạy và sản phẩm khuyến mại vào bộ nhớ tạm, giảm 45% số lượng câu lệnh truy vấn trực tiếp đến bảng wp_postswp_postmeta.

Đóng góp thực tiễn cho hoạt động kinh doanh

  • Tối ưu hóa chi phí đầu tư (TCO): Tiết kiệm 100% chi phí bản quyền phần mềm so với các giải pháp thương mại đóng gói, phù hợp tuyệt đối cho các doanh nghiệp khởi nghiệp và chuỗi bán lẻ vừa và nhỏ tại Việt Nam.
  • Tự động hóa chuỗi giá trị: Rút ngắn 90% thời gian xử lý phiếu giao hàng nhờ module in đơn và chuyển trạng thái tự động.

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

Kịch bản vận hành thực tế (Real-world Scenario)

  • Kịch bản Khách hàng: Người dùng truy cập website qua điện thoại, tìm kiếm "Serum phục hồi B5", hệ thống gợi ý sản phẩm ngay tại thanh tìm kiếm. Khách hàng thêm sản phẩm vào giỏ hàng, áp dụng mã ưu đãi thành viên, chọn thanh toán COD và nhận email xác nhận đơn hàng tự động kèm mã vận đơn.
  • Kịch bản Nhân viên Kho: Dashboard quản trị hiển thị đơn hàng mới theo thời gian thực. Nhân viên kiểm tra số lượng tồn kho tự động được đồng bộ, chuyển trạng thái đơn hàng sang "Đang giao hàng" và in phiếu xuất kho trực tiếp từ giao diện web.

Hướng dẫn triển khai môi trường sản xuất (Production Deployment)

  1. Yêu cầu phần cứng máy chủ tối thiểu:
    • CPU: 2 Core vCPU (tần số $\ge 2.4\text{ GHz}$)
    • RAM: 4 GB RAM (khuyến nghị 8 GB nếu có trên 10.000 sản phẩm)
    • Lưu trữ: 40 GB SSD NVMe
  2. Cấu hình phần mềm:
    • Hệ điều hành: Ubuntu 22.04 LTS
    • Web Server: Nginx 1.24 với cấu hình FastCGI Microcaching
    • PHP-FPM: Version 8.2 (Cấu hình memory_limit = 256M, max_execution_time = 300)
    • SSL Certificate: Let's Encrypt Wildcard tự động gia hạn
  3. Phân tích hiệu quả kinh tế (ROI):
    • Chi phí duy trì hệ thống (Domain + Cloud VPS): Khoảng 2.000.000 - 3.500.000 VNĐ/năm.
    • Doanh thu dự kiến tăng trưởng tối thiểu 30% trong 6 tháng đầu nhờ mở rộng tệp khách hàng trực tuyến ngoài khu vực địa lý của cửa hàng.
    • Thời gian hoàn vốn đầu tư (Payback Period): Dưới 3 tháng vận hành thực tế.

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

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

  • Cơ sở dữ liệu mặc định của WordPress sử dụng kiến trúc EAV (Entity-Attribute-Value) trong bảng wp_postmeta, khi quy mô dữ liệu vượt quá 50.000 sản phẩm với hàng trăm biến thể sẽ dẫn đến hiện tượng nghẽn cổ chai truy vấn (Query Bottleneck).
  • Phụ thuộc vào giao thức gửi mail SMTP của bên thứ ba, có thể xảy ra độ trễ gửi email xác nhận nếu máy chủ gửi thư bị nghẽn mạng.

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

  1. Kiến trúc Headless Commerce: Tách rời hoàn toàn giao diện Frontend bằng cách sử dụng Next.js / React kết nối với lõi WordPress Backend thông qua GraphQL / WP REST API, nâng tốc độ tải trang lên mức tức thì (dưới 0.5s).
  2. Tích hợp trí tuệ nhân tạo (AI Virtual Consultant): Ứng dụng mô hình thị giác máy tính phân tích tình trạng da khuôn mặt qua WebCam để tự động gợi ý liệu trình mỹ phẩm phù hợp.
  3. Tự động hóa Logistics: Tích hợp API trực tiếp với các đơn vị vận chuyển hàng đầu tại Việt Nam (Giao Hàng Tiết Kiệm, Giao Hàng Nhanh, Viettel Post) để tính phí vận chuyển theo tọa độ GPS và tự động đồng bộ trạng thái đơn hàng.

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

  • Sinh viên chuyên ngành CNTT / Phần mềm: Nắm vững quy trình phân tích thiết kế hệ thống thông tin theo mô hình Use Case, sơ đồ tuần tự (Sequence Diagram), sơ đồ lớp (Class Diagram) và kỹ thuật tùy biến CMS mã nguồn mở chuyên sâu.
  • Lập trình viên Web PHP/WordPress: Tiếp cận các mẫu code thực thi Filter/Action Hooks chuẩn PSR, kỹ thuật xây dựng REST API an toàn và phương pháp tối ưu hóa cơ sở dữ liệu quan hệ MySQL cho website TMĐT.
  • Chủ doanh nghiệp bán lẻ & Hộ kinh doanh Mỹ phẩm: Sở hữu một mô hình giải pháp TMĐT tối ưu chi phí, loại bỏ rủi ro phụ thuộc nền tảng mạng xã hội và tự động hóa toàn diện quy trình kiểm soát tồn kho, kế toán doanh số.

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

1. Website có thể chịu tải được bao nhiêu người dùng truy cập cùng lúc?

Khi triển khai trên Cloud VPS cấu hình tiêu chuẩn (2 vCPU, 4GB RAM) kết hợp cùng Nginx FastCGI Cache và Redis Object Cache, hệ thống xử lý ổn định từ 300 - 500 người dùng hoạt động đồng thời (Concurrent Users) với thời gian phản hồi dưới 1.5 giây.

2. Dữ liệu thanh toán và mật khẩu của khách hàng được bảo mật như thế nào?

Mật khẩu người dùng được mã hóa một chiều bằng giải thuật băm kết hợp Salt nhiều lớp (phpass dựa trên SHA-256). Toàn bộ dữ liệu truyền tải giữa Client và Server được bảo vệ qua giao thức mã hóa HTTPS/TLS 1.3, ngăn chặn hoàn toàn tấn công Man-In-The-Middle (MITM). Mọi thao tác form đều được gắn mã Nonce Token để triệt tiêu lỗ hổng CSRF.

3. Khi mất kết nối mạng, dữ liệu tồn kho có bị sai lệch không?

Hệ thống sử dụng Transaction của MySQL với Database Engine InnoDB. Các thao tác trừ kho khi đặt hàng đều tuân thủ nguyên lý ACID (Atomicity, Consistency, Isolation, Durability), đảm bảo không bao giờ xảy ra tình trạng bán vượt số lượng tồn kho (Overselling).

4. Chi phí duy trì hệ thống bán hàng Skin Care này hàng tháng là bao nhiêu?

Nhờ sử dụng mã nguồn mở WordPress và plugin WooCommerce miễn phí, doanh nghiệp chỉ cần chi trả phí duy trì tên miền (.vn hoặc .com) và máy chủ lưu trữ (Cloud VPS), tổng chi phí chỉ dao động từ 150.000 đến 300.000 VNĐ/tháng, thấp hơn 80% so với thuê dịch vụ phần mềm quản lý đóng gói.

5. Website có hỗ trợ tối ưu hóa công cụ tìm kiếm (SEO) tự động không?

Cấu trúc mã nguồn của website được xây dựng chuẩn Semantic HTML5, tự động tạo lập Sitemaps XML, cấu hình Schema.org (Product, Offer, Review Schema) chuẩn nhận diện của Google, giúp các trang sản phẩm mỹ phẩm dễ dàng đạt thứ hạng cao trên trang kết quả tìm kiếm tự nhiên.


Kết luận

Đề tài "Thiết kế website bán mỹ phẩm Skin Care bằng WordPress" của tác giả Nguyễn Văn Thái đã giải quyết trọn vẹn bài toán chuyển đổi số cho mô hình kinh doanh bán lẻ mỹ phẩm. Bằng việc kết hợp chặt chẽ giữa quy trình phân tích thiết kế hệ thống bài bản (UML, Use Case, Sequence Diagram) và năng lực mở rộng không giới hạn của nền tảng WordPress/WooCommerce, đồ án không chỉ là một công trình nghiên cứu ứng dụng có giá trị học thuật cao mà còn là một sản phẩm phần mềm hoàn chỉnh, sẵn sàng triển khai thực tế với hiệu quả kinh tế và kỹ thuật vượt trội.