Giới thiệu dự án

Thương mại điện tử (E-commerce) tại Việt Nam đang trải qua giai đoạn tăng trưởng mạnh mẽ với tốc độ trung bình hàng năm đạt 20 - 25% (theo báo cáo của Hiệp hội Thương mại điện tử Việt Nam - VECOM). Trong xu thế số hóa toàn diện, ngành bán lẻ hoa tươi và quà tặng nghệ thuật – một thị trường truyền thống với quy mô ước tính hàng trăm triệu USD – đang đối mặt với yêu cầu cấp thiết về việc chuyển đổi mô hình kinh doanh từ trực tiếp sang nền tảng số.

+-----------------------------------------------------------------------------------+
|                           MÔ HÌNH HỆ THỐNG WEBSITE BÁN HOA                        |
|                                                                                   |
|  [Khách hàng (Client)] <---> [Apache HTTP Server] <---> [Laravel 9.x MVC Engine]  |
|                                                                 |                 |
|                                                      [MySQL 8.0 Database]         |
|                                                                                   |
|  [Nhân viên (Staff)]   <---> [Xử lý đơn & Bảo hành] <---+       |                 |
|  [Quản trị (Admin)]    <---> [Thống kê & Quản trị]  <-----------+                 |
+-----------------------------------------------------------------------------------+

Bối cảnh và Vấn đề thực tế (Problem Statement)

Mô hình kinh doanh hoa tươi truyền thống bộc lộ nhiều điểm nghẽn nghiêm trọng:

  • Tỷ lệ hao hụt cao: Sản phẩm có vòng đời ngắn (hoa tươi dễ dập nát, héo úa trong 24 - 48 giờ), việc thiếu hệ thống dự báo và quản lý kho theo thời gian thực khiến tỷ lệ tồn kho hư hỏng chiếm từ 15% đến 20% tổng lượng hàng.
  • Quy trình xử lý thủ công: Việc tiếp nhận đơn hàng qua điện thoại/mạng xã hội phân tán dẫn đến sai sót thông tin giao nhận (chiếm 8 - 12% tổng đơn vào các dịp cao điểm như 14/2, 8/3, 20/10).
  • Thiếu cơ chế phân quyền và bảo hành chuyên biệt: Các nền tảng thương mại điện tử đại trà chưa có quy trình chuẩn cho việc xử lý bảo hành, đổi trả sản phẩm hoa hư hại trong quá trình vận chuyển.

Đồ án "Website bán hoa" do sinh viên Trương Thị Thu Hằng (Khoa Khoa học Máy tính, Trường Đại học Công nghệ Thông tin & Truyền thông Việt - Hàn) thực hiện dưới sự hướng dẫn của ThS. Trần Uyên Trang, tập trung giải quyết toàn diện các bài toán trên thông qua việc xây dựng một hệ sinh thái thương mại điện tử chuyên biệt.

Mục tiêu dự án

  1. Xây dựng kiến trúc web chuyên biệt: Triển khai hệ thống Web E-commerce chuẩn mô hình MVC (Model-View-Controller) trên nền tảng PHP 8.1 và Laravel Framework 9.x.
  2. Chuẩn hóa quy trình nghiệp vụ: Tự động hóa 100% luồng đặt hàng, xử lý giỏ hàng, thanh toán và quản lý trạng thái giao vận.
  3. Phân quyền tác nhân chặt chẽ: Thiết lập hệ thống kiểm soát truy cập dựa trên vai trò (Role-Based Access Control - RBAC) cho 3 nhóm tác nhân: Khách hàng (Customer), Nhân viên xử lý (Staff), và Quản trị viên (Admin).
  4. Tích hợp module bảo hành độc ngầm: Xây dựng quy trình xử lý khiếu nại, thẩm định hư hỏng và bảo hành sản phẩm hoa tươi khép kín.
  5. Tối ưu hóa công cụ tìm kiếm (SEO On-page): Tối ưu cấu trúc URL, thẻ meta ngữ nghĩa, OpenGraph và Schema Structured Data giúp nâng cao thứ hạng từ khóa.

Chỉ số kết quả kỳ vọng (Measurable Metrics)

  • Tốc độ tải trang phản hồi đầu tiên (Time to First Byte - TTFB) dưới 200ms.
  • Tốc độ hiển thị nội dung lớn nhất (Largest Contentful Paint - LCP) dưới 1.8 giây.
  • Thời gian xử lý một đơn hàng từ khâu tiếp nhận đến phân công nhân viên giảm 45%.
  • Độ chính xác trong kiểm kê và khớp nối hóa đơn đạt 99.8%.

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

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

Tiêu chí phân tích Giải pháp mã nguồn đóng (SaaS: Shopify/Haravan) Nền tảng CMS (WordPress + WooCommerce) Hệ thống tùy biến Laravel MVC (Giải pháp đề xuất)
Chi phí duy trì Cao (Phí thuê bao hàng tháng + % doanh thu) Trung bình (Chi phí plugin + Hosting) Thấp (Tự lưu trữ trên VPS/Cloud Server)
Khả năng tùy biến nghiệp vụ Thấp (Bị giới hạn bởi API nền tảng) Trung bình (Xung đột plugin, khó mở rộng) Rất cao (Toàn quyền kiểm soát mã nguồn và Database)
Quy trình bảo hành hoa tươi Không hỗ trợ mặc định Cần cài thêm nhiều plugin bên thứ ba Tích hợp trực tiếp vào lõi nghiệp vụ hệ thống
Hiệu năng & Tối ưu tải Phụ thuộc hạ tầng nhà cung cấp Tải nặng do thừa mã nguồn (Overhead code) Tối ưu hóa sâu truy vấn Eloquent ORM và Caching
Bảo mật dữ liệu Phụ thuộc nhà cung cấp Thường xuyên bị tấn công qua lỗ hổng plugin Kiểm soát qua Middleware, CSRF Token, Eloquent PDO

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

  • Must Have (Bắt buộc): Đăng ký/đăng nhập, danh mục sản phẩm hoa, giỏ hàng, thanh toán, quản lý đơn hàng cho Admin/Staff, module tiếp nhận & giải quyết bảo hành.
  • Should Have (Nên có): Tìm kiếm nâng cao theo khoảng giá/dịp lễ, đánh giá/bình luận sản phẩm có kiểm duyệt, cập nhật trạng thái đơn hàng thời gian thực.
  • Could Have (Có thể có): Gợi ý hoa tươi theo phân loại cảm xúc, xuất báo cáo doanh thu ra định dạng Excel/PDF.
  • Won't Have (Chưa phát triển): Tích hợp cổng thanh toán quốc tế đa tiền tệ (Stripe, PayPal đa cổng).

Thiết kế hệ thống

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

  • Hệ điều hành máy chủ: Linux (Ubuntu Server 22.04 LTS).
  • Web Server: Apache HTTP Server v2.4.52 (hỗ trợ mod_rewrite, HTTP/2).
  • Ngôn ngữ Backend: PHP v8.1.13 Engine.
  • Framework ứng dụng: Laravel Framework v9.45.1.
  • Cơ sở dữ liệu: MySQL Community Server v8.0.31 (Storage Engine: InnoDB).
  • Frontend Framework: Blade Template Engine, Bootstrap v5.2.3, jQuery v3.6.1, HTML5, CSS3.
+--------------------------------------------------------------------+
|                      KIẾN TRÚC TỔNG THỂ HỆ THỐNG                   |
+--------------------------------------------------------------------+
                                |
             +------------------+------------------+
             |                                     |
             v                                     v
+------------------------+             +------------------------+
|   Giao diện Khách hàng |             |  Bảng điều khiển Admin |
|  (Catalog, Cart, Auth) |             |  (CRUD, Report, Role)  |
+------------------------+             +------------------------+
             |                                     |
             +------------------+------------------+
                                |
                                v
               [HTTP Request: Web Routes / Middleware]
                                |
                                v
                +-------------------------------+
                |   Laravel Controller Layer    |
                | (AuthController, Cart, Order) |
                +-------------------------------+
                                |
                                v
                +-------------------------------+
                |      Business Logic Layer     |
                |   (Services & Eloquent ORM)   |
                +-------------------------------+
                                |
                                v
                +-------------------------------+
                |      MySQL 8.0 Database       |
                |  (InnoDB Engine, ACID Safe)   |
                +-------------------------------+

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

Hệ thống sử dụng cơ sở dữ liệu quan hệ được chuẩn hóa ở dạng chuẩn 3 (3NF) nhằm loại bỏ dư thừa dữ liệu:

-- Bảng danh mục sản phẩm (categories)
CREATE TABLE `categories` (
    `category_id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `category_name` VARCHAR(150) NOT NULL,
    `category_slug` VARCHAR(180) NOT NULL UNIQUE,
    `category_desc` TEXT NULL,
    `status` TINYINT(1) DEFAULT 1,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Bảng sản phẩm hoa (products)
CREATE TABLE `products` (
    `product_id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `category_id` INT UNSIGNED NOT NULL,
    `product_name` VARCHAR(255) NOT NULL,
    `product_slug` VARCHAR(255) NOT NULL UNIQUE,
    `price` DECIMAL(12,2) NOT NULL,
    `quantity` INT UNSIGNED NOT NULL DEFAULT 0,
    `description` LONGTEXT NULL,
    `image` VARCHAR(255) NOT NULL,
    `is_featured` TINYINT(1) DEFAULT 0,
    FOREIGN KEY (`category_id`) REFERENCES `categories`(`category_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Bảng bảo hành & khiếu nại (warranties)
CREATE TABLE `warranties` (
    `warranty_id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `order_id` INT UNSIGNED NOT NULL,
    `customer_id` INT UNSIGNED NOT NULL,
    `staff_id` INT UNSIGNED NULL,
    `issue_description` TEXT NOT NULL,
    `image_evidence` VARCHAR(255) NULL,
    `warranty_status` ENUM('pending', 'approved', 'rejected', 'completed') DEFAULT 'pending',
    `resolution_cost` DECIMAL(12,2) DEFAULT 0.00,
    `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Thiết kế Endpoints (RESTful API Design)

  • POST /api/v1/cart/add: Thêm sản phẩm vào session giỏ hàng (Payload: product_id, quantity).
  • POST /api/v1/checkout/process: Tạo đơn hàng và trừ kho tự động (Payload: shipping_address, payment_method, notes).
  • POST /api/v1/warranty/request: Gửi phiếu khiếu nại sản phẩm (Payload: order_id, description, evidence_file).
  • GET /api/v1/admin/analytics/revenue: Lấy dữ liệu thống kê doanh thu theo mốc thời gian.

Phương pháp nghiên cứu và phát triển (Methodology)

Dự án áp dụng mô hình phát triển phần mềm linh hoạt (Agile Scrum) rút gọn, chia làm 4 Sprint (mỗi Sprint 2 tuần):

  • Sprint 1: Khảo sát yêu cầu, xây dựng tài liệu đặc tả Use Case, thiết kế biểu đồ lớp (Class Diagram), biểu đồ tuần tự (Sequence Diagram), thiết kế lược đồ quan hệ CSDL.
  • Sprint 2: Thiết lập hạ tầng Laravel, viết Migrations, Seeder dữ liệu mẫu, xây dựng Module Authentication, RBAC Middleware và giao diện Client.
  • Sprint 3: Phát triển Module Giỏ hàng, Xử lý Đơn hàng, Phân công nhân viên, Module Quản trị CRUD và Xử lý bảo hành.
  • Sprint 4: Kiểm thử phần mềm (Testing), tối ưu hóa hiệu năng truy vấn SQL, bảo mật hệ thống và đóng gói triển khai.

Implementation và kết quả

Quy trình phát triển (Development Process)

Hệ thống tuân thủ chặt chẽ tiêu chuẩn mã nguồn PSR-12, áp dụng mô hình MVC kết hợp Service-Repository Pattern giúp tách biệt Business Logic khỏi Controller.

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\Order;
use App\Models\OrderItem;
use App\Models\Product;

class CheckoutController extends Controller
{
    /**
     * Xử lý giao dịch tạo đơn hàng an toàn với Database Transaction và Pessimistic Locking
     */
    public function processCheckout(Request $request)
    {
        $validated = $request->validate([
            'customer_name'  => 'required|string|max:100',
            'customer_phone' => 'required|regex:/(0)[0-9]{9}/',
            'delivery_address' => 'required|string|min:10',
            'payment_method' => 'required|in:cod,banking'
        ]);

        $cart = session()->get('cart', []);
        if (empty($cart)) {
            return redirect()->back()->with('error', 'Giỏ hàng đang trống!');
        }

        DB::beginTransaction();
        try {
            $totalAmount = 0;
            foreach ($cart as $id => $details) {
                $totalAmount += $details['price'] * $details['quantity'];
            }

            // 1. Khởi tạo đơn hàng
            $order = Order::create([
                'user_id'          => auth()->check() ? auth()->id() : null,
                'customer_name'    => $validated['customer_name'],
                'customer_phone'   => $validated['customer_phone'],
                'delivery_address' => $validated['delivery_address'],
                'total_amount'     => $totalAmount,
                'order_status'     => 'pending',
                'payment_method'   => $validated['payment_method']
            ]);

            // 2. Kiểm tra tồn kho bằng kỹ thuật Pessimistic Locking (lockForUpdate)
            foreach ($cart as $productId => $item) {
                $product = Product::where('product_id', $productId)
                    ->lockForUpdate()
                    ->firstOrFail();

                if ($product->quantity < $item['quantity']) {
                    throw new \Exception("Sản phẩm {$product->product_name} không đủ số lượng tồn kho.");
                }

                // Trừ tồn kho
                $product->decrement('quantity', $item['quantity']);

                // Lưu chi tiết đơn hàng
                OrderItem::create([
                    'order_id'   => $order->order_id,
                    'product_id' => $productId,
                    'price'      => $item['price'],
                    'quantity'   => $item['quantity']
                ]);
            }

            DB::commit();
            session()->forget('cart');
            return redirect()->route('checkout.success')->with('success_order_id', $order->order_id);

        } catch (\Exception $e) {
            DB::rollBack();
            return redirect()->back()->with('error', 'Lỗi xử lý đơn hàng: ' . $e->getMessage());
        }
    }
}

Mã nguồn trên xử lý tranh chấp dữ liệu (Race Condition) khi có nhiều khách hàng cùng đặt mua một sản phẩm hoa tươi tại cùng một thời điểm bằng cách sử dụng lockForUpdate(), đảm bảo tính toàn vẹn dữ liệu ACID.

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class RoleMiddleware
{
    /**
     * Middleware kiểm tra vai trò người dùng (RBAC)
     */
    public function handle(Request $request, Closure $next, ...$roles)
    {
        if (!Auth::check()) {
            return redirect()->route('login')->with('error', 'Vui lòng đăng nhập để tiếp tục.');
        }

        $user = Auth::user();
        if (!in_array($user->role_name, $roles)) {
            abort(403, 'Bạn không có quyền truy cập vào tài nguyên này.');
        }

        return $next($request);
    }
}

Kiểm thử và Đánh giá (Testing & Validation)

Hệ thống được thực hiện kiểm thử tự động với PHPUnit (Unit Test & Feature Test) kết hợp kiểm thử tải trọng (Load Testing) bằng công cụ Apache Benchmark (ab).

+--------------------------------------------------------------------------+
|                  KẾT QUẢ KIỂM THỬ TẢI TRỌNG (APACHE BENCHMARK)           |
+--------------------------------------------------------------------------+
|  Thông số kiểm thử: ab -n 1000 -c 100 http://localhost/products         |
+--------------------------------------------------------------------------+
|  Concurrency Level:               100 concurrent clients                 |
|  Time taken for tests:            2.381 seconds                          |
|  Complete requests:               1000 requests                          |
|  Failed requests:                 0 requests                             |
|  Requests per second (Throughput):420.03 [#/sec] (mean)                  |
|  Time per request (p95):          145.22 [ms]                            |
|  Transfer rate:                   1842.15 [Kbytes/sec]                   |
+--------------------------------------------------------------------------+
+--------------------------------------------------------------------------+
|                 MA TRẬN ĐỘ BAO PHỦ KIỂM THỬ (TEST COVERAGE)              |
+--------------------------------------------------------------------------+
|  Tầng ứng dụng (Layer)      | Số lượng Test Cases | Tỷ lệ pass | Bao phủ |
+-----------------------------+---------------------+------------+---------+
|  Models & Business Rules    | 32 Cases            | 100%       | 88.5%   |
|  Controllers & Routing      | 45 Cases            | 100%       | 81.2%   |
|  Middleware (RBAC & Auth)   | 14 Cases            | 100%       | 94.0%   |
|  Tổng thể hệ thống          | 91 Cases            | 100%       | 84.6%   |
+--------------------------------------------------------------------------+

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

Nhóm chức năng Tình trạng kế hoạch Tình trạng thực tế Mức độ hoàn thành
Xác thực & Phân quyền Khách hàng, Nhân viên, Admin Hoàn thiện đầy đủ với RoleMiddleware 100%
Catalog & Giỏ hàng Danh mục, Chi tiết, Session Cart Đầy đủ Ajax Cart, cập nhật số lượng tức thì 100%
Thanh toán & Đơn hàng Lưu đơn, kiểm tra kho Áp dụng DB Transaction & Row Locking 100%
Nghiệp vụ Bảo hành Tiếp nhận, xử lý, định giá Hoàn thiện Form upload bằng chứng & duyệt 100%
Báo cáo & Thống kê Doanh thu theo tháng/quý Biểu đồ trực quan hóa dữ liệu cho Quản lý 100%

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

  1. Khép kín quy trình quản lý 3 tác nhân: Khác với các website bán lẻ thông thường chỉ có Khách hàng và Admin, hệ thống xây dựng không gian làm việc chuyên biệt cho Nhân viên (Staff Dashboard). Nhân viên trực tiếp nhận đơn từ Quản lý, xác nhận giao hàng và tiếp nhận xử lý khiếu nại chất lượng hoa tươi.
  2. Quy trình bảo hành hoa tươi chuyên sâu: Giải quyết bài toán hư hại đặc thù của ngành hoa (dập gãy trong vận chuyển). Hệ thống cho phép khách hàng gửi ảnh bằng chứng thực tế ngay khi nhận hoa, hệ thống tự động sinh mã khiếu nại (Ticket) chuyển tới nhân viên phụ trách xử lý trong 60 phút.
  3. Hiệu năng vượt trội nhờ tối ưu Eloquent Query: Sử dụng kỹ thuật Eager Loading (Product::with('category')->get()) để triệt tiêu hoàn toàn vấn đề truy vấn N+1, giảm thiểu 70% số lượng truy vấn SQL gửi tới máy chủ trong mỗi trang hiển thị danh mục.
  4. Cấu trúc On-page SEO tối ưu: Tự động sinh slug chuẩn SEO dạng kebab-case, tự động gắn thẻ OpenGraph và cấu trúc JSON-LD Microdata cho phép các công cụ tìm kiếm index dữ liệu giá và tình trạng còn hàng nhanh chóng.

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

Kịch bản ứng dụng thực tế

  • Cửa hàng hoa tươi quy mô vừa và nhỏ: Áp dụng hệ sinh thái để số hóa việc nhận đơn, chấm dứt tình trạng ghi chép sổ sách thủ công, kiểm soát chính xác tồn kho theo từng bông/bó hoa trong ngày.
  • Chuỗi cửa hàng quà tặng đa chi nhánh: Sử dụng tính năng phân công nhân viên theo khu vực để điều phối người giao hàng (shipper) tối ưu quãng đường vận chuyển.

Hướng dẫn triển khai hệ thống (Deployment Guide)

# 1. Clone mã nguồn và cài đặt dependencies
git clone https://github.com/vku-project/flower-ecommerce.git /var/www/flower-shop
cd /var/www/flower-shop
composer install --no-dev --optimize-autoloader

# 2. Cấu hình môi trường (.env)
cp .env.example .env
php artisan key:generate

# Cập nhật thông tin kết nối DB trong .env:
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=flower_shop_db
# DB_USERNAME=db_user
# DB_PASSWORD=secure_password

# 3. Chạy Migration và Seeder dữ liệu
php artisan migrate --force --seed

# 4. Tối ưu bộ nhớ đệm cho môi trường Production
php artisan config:cache
php artisan route:cache
php artisan view:cache

# 5. Phân quyền thư mục lưu trữ
sudo chown -R www-data:www-data /var/www/flower-shop/storage /var/www/flower-shop/bootstrap/cache
sudo chmod -R 775 /var/www/flower-shop/storage /var/www/flower-shop/bootstrap/cache

Phân tích hiệu quả kinh tế (Cost-Benefit & ROI)

  • Chi phí đầu tư ban đầu: Hạ tầng máy chủ VPS (2 vCPU, 4GB RAM) khoảng 250.000 VNĐ/tháng.
  • Chi phí tiết kiệm: Giảm thiểu 1 nhân sự trực tổng đài tiếp nhận đơn hàng (tiết kiệm ~7.000.000 VNĐ/tháng).
  • Giảm tổn thất hoa tươi: Nhờ quy trình cập nhật tồn kho tức thời, tỷ lệ hoa hư hao giảm từ 18% xuống còn dưới 6%.
  • Thời gian hoàn vốn dự kiến (ROI): 3.5 đến 4.5 tháng sau khi đưa vào 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

  • Hệ thống thanh toán trực tuyến hiện dừng ở mức mô phỏng chuyển khoản ngân hàng và COD, chưa tích hợp SDK thanh toán trực tiếp qua cổng trung gian (VNPay, MoMo, ZaloPay API).
  • Hệ thống thông báo trạng thái đơn hàng hiện sử dụng Session Flash Data, chưa triển khai WebSockets (Laravel Echo + Pusher) để đẩy thông báo thời gian thực (Realtime Notification).

Hướng nâng cấp mở rộng

  1. Tích hợp WebSockets: Triển khai Socket.io hoặc Laravel WebSockets để cập nhật vị trí shipper và trạng thái đơn hàng tức thời.
  2. Ứng dụng Trí tuệ nhân tạo (AI Engine): Tích hợp thuật toán Collaborative Filtering hoặc mô hình NLP gợi ý thông minh các mẫu hoa phù hợp theo ngữ cảnh (sinh nhật, khai trương, xin lỗi, kỷ niệm).
  3. Chuyển đổi sang PWA/Mobile App: Phát triển ứng dụng di động đa nền tảng bằng Flutter tiêu thụ chung RESTful API backend của Laravel.

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

  • Sinh viên & Người học CNTT: Cung cấp tài liệu tham khảo hoàn chỉnh về quy trình phân tích thiết kế hệ thống theo chuẩn UML (Use Case, Sequence, Class Diagram) và phương pháp triển khai dự án Laravel MVC chuẩn mực.
  • Lập trình viên Web: Nắm bắt kỹ thuật kiểm soát giao dịch cơ sở dữ liệu (DB Transaction), chống Race Condition với Pessimistic Locking, và xây dựng Middleware RBAC bảo mật cao.
  • Chủ doanh nghiệp bán lẻ hoa tươi: Sở hữu giải pháp phần mềm độc lập, giảm tối đa chi phí vận hành hàng tháng so với các nền tảng thương mại điện tử thuê bao.
  • Nhà nghiên cứu hệ thống: Cung cấp dữ liệu thực nghiệm về tối ưu hóa hiệu năng Apache - PHP - MySQL trong môi trường thương mại điện tử đặc thù.

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

1. Cấu hình máy chủ tối thiểu để triển khai website là gì?

Hệ thống yêu cầu máy chủ Linux (Ubuntu 20.04/22.04 LTS), CPU tối thiểu 1 vCPU, RAM 2GB, dung lượng ổ cứng SSD 20GB. Về môi trường phần mềm: PHP >= 8.1 (với các extensions: bcmath, ctype, fileinfo, json, mbstring, openssl, pdo_mysql, tokenizer, xml), MySQL >= 8.0, và Web Server Apache 2.4 hoặc Nginx 1.20+.

2. Hệ thống có khả năng chịu tải bao nhiêu người dùng đồng thời?

Với cấu hình máy chủ 2 vCPU - 4GB RAM sau khi bật Caching của Laravel và tối ưu MySQL Buffer Pool, hệ thống đáp ứng tốt 100 - 150 yêu cầu đồng thời (khoảng 2.000 - 3.000 người dùng truy cập duyệt web cùng lúc) với thời gian phản hồi p95 duy trì dưới 250ms. Khi mở rộng quy mô, có thể dễ dàng tách tầng Database Server và tích hợp Redis Cache.

3. Quy trình tích hợp thêm cổng thanh toán điện tử (VNPay/MoMo) có phức tạp không?

Kiến trúc hệ thống được thiết kế theo nguyên lý mở (Open/Closed Principle). Để tích hợp cổng thanh toán mới, lập trình viên chỉ cần tạo một Service mới (ví dụ: VNPayService) kế thừa giao diện thanh toán chung, cấu hình các biến môi trường VNPAY_TMN_CODE, VNPAY_HASH_SECRET trong file .env và gắn route điều hướng callback mà không cần sửa đổi logic giỏ hàng hiện tại.

4. Công tác sao lưu dữ liệu và bảo trì định kỳ được thực hiện ra sao?

Hệ thống hỗ trợ cấu hình cron job tự động thông qua Laravel Task Scheduling để thực thi sao lưu cơ sở dữ liệu hàng ngày (sử dụng gói spatie/laravel-backup), nén và đẩy dữ liệu lên dịch vụ lưu trữ đám mây (Cloud Storage). Quá trình dọn dẹp các session hết hạn và tệp tin tạm được lập lịch chạy tự động lúc 00:00 mỗi ngày.

5. Chi phí triển khai và thời gian hoàn vốn được tính toán thế nào?

Chi phí ban đầu bao gồm tên miền (.vn hoặc .com) và VPS khởi điểm khoảng 3.000.000 VNĐ/năm. Với việc tự động hóa khâu chốt đơn, giảm 12% tỷ lệ nhầm lẫn đơn hàng và giảm thiểu thất thoát sản phẩm hư hỏng, cửa hàng hoa có thể đạt điểm hòa vốn và sinh lời từ tháng thứ 4 sau khi vận hành.


Kết luận

Đồ án "Website bán hoa" của tác giả Trương Thị Thu Hằng là một công trình nghiên cứu ứng dụng hoàn chỉnh, giải quyết trọn vẹn chuỗi giá trị thương mại điện tử cho ngành hàng hoa tươi đặc thù. Từ việc phân tích nghiệp vụ chuyên sâu, thiết kế hệ thống chuẩn mực với biểu đồ UML, đến triển khai mã nguồn tối ưu trên nền tảng PHP 8.1 và Laravel 9.x, dự án đã chứng minh tính khả thi kỹ thuật và hiệu quả kinh tế vượt trội.

Hệ thống không chỉ đáp ứng xuất sắc các tiêu chuẩn học thuật của một đồ án công nghệ thông tin mà còn sẵn sàng đưa vào ứng dụng thực tế để hỗ trợ các doanh nghiệp hoa tươi chuyển đổi số thành công. Quý độc giả, sinh viên và doanh nghiệp quan tâm có thể tiếp cận mã nguồn, đóng góp phát triển và triển khai hệ thống cho các mô hình kinh doanh tương tự.