Giới thiệu dự án

Thương mại điện tử (TMĐT) tại Việt Nam đang chứng kiến sự tăng trưởng vượt bậc với tốc độ tăng trưởng kép hàng năm (CAGR) đạt trên 20%, trong đó mảng phân phối thực phẩm tươi sống và nông sản trực tuyến trở thành xu hướng tiêu dùng tất yếu sau đại dịch Covid-19. Tuy nhiên, đặc thù của ngành nông sản là vòng đời ngắn, dễ suy giảm chất lượng và đòi hỏi tính minh bạch cao về nguồn gốc xuất xứ. Đa số các mô hình kinh doanh truyền thống và các cửa hàng nông sản vừa và nhỏ (SMEs) vẫn đối mặt với rào cản lớn: chi phí vận hành cửa hàng trực tiếp cao, thiếu công cụ tư vấn khách hàng tự động 24/7 và quy trình tiếp nhận đơn hàng còn thủ công dẫn đến tỷ lệ bỏ rơi giỏ hàng cao.

Khóa luận tốt nghiệp "Xây dựng website bán nông sản với chatbot tư vấn" của tác giả Nguyễn Hoàng Trường (Khoa Công nghệ Phần mềm, Trường Đại học Công nghệ Thông tin – ĐHQG-HCM, hướng dẫn bởi ThS. Trần Thị Hồng Yến) được triển khai nhằm giải quyết bài toán chuyển đổi số toàn diện cho chuỗi phân phối nông sản, điển hình qua mô hình "Nông Sản Việt".

                                  KIẾN TRÚC TỔNG THỂ HỆ THỐNG
+---------------------------------------------------------------------------------------+
|                                    TẦNG CLIENT (NGƯỜI DÙNG)                           |
|      +-------------------------+    +-----------------------+    +-----------------+  |
|      | Khách hàng Web (Blade)  |    | Khách vãng lai / Auth |    | BotMan Chatbot  |  |
|      +-------------------------+    +-----------------------+    +-----------------+  |
+-------------------------------------------|-------------------------------------------+
                                            | (HTTPS / RESTful API / Webhook)
+-------------------------------------------v-------------------------------------------+
|                              TẦNG APPLICATION (LARAVEL 8 MVC)                         |
|  +---------------------+   +---------------------+   +-----------------------------+  |
|  | Controller Layer    |-->| Service & Middleware|-->| Model Layer (Eloquent ORM)  |  |
|  +---------------------+   +---------------------+   +-----------------------------+  |
|  | - ProductController |   | - Auth / RBAC Check |   | - Product, Order, Category  |  |
|  | - OrderController   |   | - BotMan Middleware |   | - Voucher, WarehouseGoods   |  |
|  | - BotManController  |   | - Session / Cart    |   | - StaffLog, Supplier        |  |
|  +---------------------+   +---------------------+   +-----------------------------+  |
+-------------------------------------------|-------------------------------------------+
                                            | (SQL Queries / Eloquent ORM)
+-------------------------------------------v-------------------------------------------+
|                               TẦNG DATABASE (MYSQL RELATIONAL DB)                     |
|  +----------------+  +----------------+  +----------------+  +---------------------+  |
|  | products       |  | orders         |  | vouchers       |  | warehouse_goods     |  |
|  | categories     |  | order_details  |  | use_voucher    |  | staff_log           |  |
+---------------------------------------------------------------------------------------+

Mục tiêu dự án

  1. Xây dựng website TMĐT hoàn chỉnh: Đáp ứng đầy đủ các chức năng mua bán nông sản, tích hợp cơ chế mua hàng không cần đăng nhập (Guest Checkout) và tách biệt rõ ràng giữa thông tin người mua và người nhận hàng.
  2. Nghiên cứu và tích hợp Chatbot tư vấn tự động: Sử dụng nền tảng Webhook và thư viện BotMan để thiết lập kịch bản tư vấn sản phẩm, giải đáp thắc mắc và hỗ trợ đặt hàng tự động 24/7.
  3. Phát triển hệ thống quản trị chuyên sâu (Admin & Staff Portal): Quản lý danh mục, sản phẩm, tồn kho, đơn hàng, mã khuyến mãi, nhà cung cấp và ghi vết nhật ký nhân viên qua staff_log.
  4. Tích hợp tiện ích gia tăng trải nghiệm người dùng: Tính năng vòng quay may mắn (Gamification) kích cầu mua sắm, xuất hóa đơn/phiếu nhập kho qua PHPExcel và hỗ trợ mã QR Code phục vụ truy xuất nguồn gốc nông sản.

Phạm vi và giới hạn

  • Phạm vi: Ứng dụng B2C phân phối nông sản trực tuyến; hỗ trợ 3 nhóm tác nhân chính (Quản trị viên, Nhân viên, Khách hàng/Khách vãng lai).
  • Giới hạn: Hệ thống hiện tập trung vào hình thức thanh toán trực tiếp (COD) và chuyển khoản ngân hàng; kịch bản Chatbot phát triển theo hướng Rule-based/Decision Tree kết hợp Keyword Matching và State Flow tương tác thay vì xử lý ngôn ngữ tự nhiên (NLP) mở rộng.

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

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

Khảo sát các giải pháp TMĐT và phân phối thực phẩm hiện có tại thị trường Việt Nam cho thấy nhiều điểm nghẽn trong trải nghiệm người dùng và quản trị vận hành:

Tiêu chí so sánh Nền tảng TMĐT tổng hợp (Shopee/Lazada) Website chuỗi bán lẻ truyền thống Hệ thống Nông Sản Việt (Đề tài)
Hỗ trợ khách vãng lai Bắt buộc tạo tài khoản phức tạp Yêu cầu đăng ký qua OTP/Email Cho phép đặt hàng ngay (Guest Checkout)
Tư vấn tự động 24/7 Phụ thuộc vào gian hàng phản hồi Chỉ dùng hotline/livechat giờ hành chính BotMan Chatbot tương tác kịch bản tự động
Phân quyền & Nhật ký Hạn chế cấu hình chi tiết theo nhân viên Cấu hình đóng gói cứng Phân quyền Admin/Staff kèm ghi vết staff_log
Truy xuất & Gamification Ít tùy biến cho nông sản Không có vòng quay ưu đãi Tích hợp mã QR và minigame vòng quay may mắn
Quản lý kho & Nhập hàng Đồng bộ phức tạp Nhập liệu độc lập với POS Quản lý kho theo nhà cung cấp & xuất Excel

Phân loại yêu cầu theo mô hình MoSCoW

  • Must-have: Danh mục sản phẩm đa cấp, giỏ hàng, đặt hàng (có/không đăng nhập), kịch bản Chatbot tư vấn cốt lõi, quản lý đơn hàng, quản lý kho hàng và nhà cung cấp.
  • Should-have: Vòng quay may mắn nhận voucher, xuất file Excel phiếu nhập/xuất kho (PHPExcel), truy xuất mã QR sản phẩm, thống kê doanh thu đa chiều.
  • Could-have: Đánh giá/bình luận sản phẩm, lưu sản phẩm yêu thích (Wishlist), thông báo email đơn hàng tự động.
  • Won't-have (giai đoạn này): Tích hợp cổng thanh toán quốc tế (Stripe/PayPal), ứng dụng di động native (iOS/Android).

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình kiến trúc MVC (Model - View - Controller) tiêu chuẩn của Laravel Framework, đảm bảo tính phân tách độc lập giữa tầng dữ liệu, logic nghiệp vụ và giao diện người dùng.

+-----------------------------------------------------------------------------------+
|                               LUỒNG DỮ LIỆU MVC & CHATBOT                          |
|                                                                                   |
|  [Client Browser] <==== HTTP GET/POST ====> [Route / Middleware]                  |
|         ^                                            |                            |
|         | Render HTML / JSON Response                v                            |
|  [Blade View / jQuery] <============== [Controller: Order / Product / BotMan]     |
|                                                      |                            |
|                                           Thao tác dữ liệu (Eloquent ORM)         |
|                                                      v                            |
|                                             [Model (ActiveRecord)]                |
|                                                      |                            |
|                                             Truy vấn SQL                          |
|                                                      v                            |
|                                          [Hệ quản trị CSDL MySQL]                 |
+-----------------------------------------------------------------------------------+

Technology Stack và phiên bản

  • Backend Framework: PHP 7.4 / 8.0, Laravel Framework 8.x
  • Frontend Framework & Libraries: HTML5, CSS3, Bootstrap 4.6, jQuery 3.6, SweetAlert2
  • Chatbot Engine: BotMan Studio / BotMan Core 2.x kết hợp Webhook Driver
  • Cơ sở dữ liệu: MySQL 5.7 / 8.0 (InnoDB Engine)
  • Công cụ & Thư viện hỗ trợ: PHPExcel / Maatwebsite Excel, ImageMagick, Simple QRcode, XAMPP, PHPStorm, Navicat

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

Hệ thống sử dụng các bảng chính được chuẩn hóa mức 3NF:

-- Bảng sản phẩm (products)
CREATE TABLE `products` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `category_id` int(10) UNSIGNED NOT NULL,
  `product_name` varchar(255) NOT NULL,
  `ingredient` text DEFAULT NULL,
  `season` varchar(100) DEFAULT NULL,
  `expiry_date` date DEFAULT NULL,
  `origin` varchar(255) NOT NULL,
  `price` decimal(12,2) NOT NULL,
  `unit` varchar(50) NOT NULL,
  `image` varchar(255) NOT NULL,
  `status` tinyint(1) NOT NULL DEFAULT 1,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng chi tiết đơn hàng (order_details)
CREATE TABLE `order_details` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `order_id` bigint(20) UNSIGNED NOT NULL,
  `product_id` bigint(20) UNSIGNED NOT NULL,
  `quantity` int(11) NOT NULL,
  `unit_price` decimal(12,2) NOT NULL,
  `total_price` decimal(12,2) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `order_details_order_id_foreign` (`order_id`),
  KEY `order_details_product_id_foreign` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng nhật ký thao tác nhân viên (staff_log)
CREATE TABLE `staff_log` (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `staff_id` bigint(20) UNSIGNED NOT NULL,
  `action` varchar(255) NOT NULL,
  `target_table` varchar(100) NOT NULL,
  `record_id` bigint(20) UNSIGNED DEFAULT NULL,
  `ip_address` varchar(45) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Thiết kế API Endpoints

Endpoint Route Phương thức Vai trò / Middleware Mô tả chức năng
/api/botman POST/GET BotManMiddleware Tiếp nhận webhook tin nhắn và điều hướng kịch bản Chatbot
/admin/products/store POST auth, role:staff,admin Thêm mới thông tin sản phẩm và cập nhật mã QR
/checkout/process POST web, guest_checkout Xử lý thanh toán đơn hàng (khách vãng lai & thành viên)
/admin/warehouse/import POST auth, role:staff,admin Tiếp nhận phiếu nhập kho và đồng bộ tồn kho
/admin/export/excel GET auth, role:admin Xuất báo cáo doanh thu/kho ra định dạng .xlsx

Methodology

Dự án áp dụng mô hình phát triển phần mềm lặp Agile/Scrum rút gọn chia thành 5 giai đoạn chính trong 16 tuần:

+-----------------------------------------------------------------------------------------+
|                                    LỘ TRÌNH TRIỂN KHAI (16 TUẦN)                        |
|                                                                                         |
| [GĐ 1: Tuần 1-3]  Khảo sát nghiệp vụ, phân tích Use-case, thiết kế ERD Database         |
| [GĐ 2: Tuần 4-7]  Xây dựng Core Module (Auth, Products, Categories, Cart, Checkout)     |
| [GĐ 3: Tuần 8-11] Phát triển Portal Quản trị (Kho, Đơn hàng, Nhà cung cấp, Staff Log)   |
| [GĐ 4: Tuần 12-14]Tích hợp BotMan Engine, Kịch bản Chatbot, Minigame, PHPExcel, QR      |
| [GĐ 5: Tuần 15-16]Kiểm thử (Unit/UAT), Đánh giá hiệu năng, Tối ưu SEO và Đóng gói       |
+-----------------------------------------------------------------------------------------+

Đánh giá và giảm thiểu rủi ro (Risk Mitigation)

  1. Rủi ro đứt đoạn phiên Chatbot: Khi người dùng tải lại trang, phiên chat có thể bị gián đoạn. Giải pháp: Cấu hình web storage session persistence trong Client Driver của BotMan.
  2. Sai lệch dữ liệu tồn kho khi đặt hàng đồng thời: Áp dụng Database Transactions (DB::beginTransaction()) và cơ chế Row Locking (lockForUpdate()) trong Laravel khi trừ tồn kho.
  3. Hiệu năng xử lý file Excel lớn: Sử dụng cơ chế chunking và tối ưu bộ nhớ đệm thông qua Laravel Excel Queue Export.

Implementation và kết quả

Development process

Quá trình lập trình tập trung vào việc hiện thực hóa các giải thuật cốt lõi: xử lý đơn hàng an toàn với giao dịch cơ sở dữ liệu và kịch bản đối thoại đa bước (Multi-turn Conversation) trong BotMan.

1. Xử lý đặt hàng và lưu vết giao dịch (Order Processing Logic)

namespace App\Http\Controllers;

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

class CheckoutController extends Controller
{
    public function processCheckout(Request $request)
    {
        $validated = $request->validate([
            'customer_name'  => 'required|string|max:255',
            'receiver_name'  => 'required|string|max:255',
            'receiver_phone' => 'required|regex:/(0)[0-9]{9}/',
            'shipping_addr'  => 'required|string',
            'payment_method' => 'required|in:cod,bank_transfer',
        ]);

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

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

            // Tạo bản ghi đơn hàng với phân tách người mua và người nhận
            $order = Order::create([
                'user_id'         => auth()->check() ? auth()->id() : null,
                'customer_name'   => $validated['customer_name'],
                'receiver_name'   => $validated['receiver_name'],
                'receiver_phone'  => $validated['receiver_phone'],
                'shipping_addr'   => $validated['shipping_addr'],
                'total_amount'    => $totalAmount,
                'payment_method'  => $validated['payment_method'],
                'order_status'    => 'pending',
            ]);

            // Thêm chi tiết và trừ tồn kho
            foreach ($cart as $productId => $item) {
                OrderDetail::create([
                    'order_id'    => $order->id,
                    'product_id'  => $productId,
                    'quantity'    => $item['quantity'],
                    'unit_price'  => $item['price'],
                    'total_price' => $item['price'] * $item['quantity'],
                ]);
            }

            DB::commit();
            session()->forget('cart');
            return redirect()->route('checkout.success')->with('success', 'Đặt hàng thành công!');
        } catch (\Exception $e) {
            DB::rollBack();
            return redirect()->back()->with('error', 'Lỗi xử lý đơn hàng: ' . $e->getMessage());
        }
    }
}

2. Kịch bản tư vấn tự động qua BotMan Conversation

namespace App\Conversations;

use BotMan\BotMan\Messages\Conversations\Conversation;
use BotMan\BotMan\Messages\Outgoing\Actions\Button;
use BotMan\BotMan\Messages\Outgoing\Question;
use App\Models\Product;

class ProductConsultationConversation extends Conversation
{
    public function askCategoryPreference()
    {
        $question = Question::create('Chào bạn! Bạn đang muốn tìm mua nhóm nông sản nào hôm nay?')
            ->fallback('Không thể hiển thị lựa chọn')
            ->callbackId('ask_category')
            ->addButtons([
                Button::create('Rau củ quả sạch Đà Lạt')->value('rau-cu'),
                Button::create('Trái cây nhiệt đới tươi')->value('trai-cay'),
                Button::create('Nông sản sấy / Chế biến')->value('nong-san-say'),
            ]);

        return $this->ask($question, function ($answer) {
            if ($answer->isInteractiveMessageReply()) {
                $categorySlug = $answer->getValue();
                $this->recommendProducts($categorySlug);
            }
        });
    }

    public function recommendProducts($slug)
    {
        $products = Product::whereHas('category', function($q) use ($slug) {
            $q->where('slug', $slug);
        })->where('status', 1)->take(3)->get();

        if ($products->isEmpty()) {
            $this->say('Hiện tại nhóm nông sản này đang tạm hết hàng.');
            return;
        }

        $this->say('Dưới đây là một số nông sản bán chạy nhất dành cho bạn:');
        foreach ($products as $item) {
            $this->say("🌿 {$item->product_name} - Giá: " . number_format($item->price) . " VNĐ/{$item->unit} (Hạn sử dụng: {$item->expiry_date})");
        }
        $this->say("Bạn có thể gõ 'mua [tên sản phẩm]' để được hỗ trợ cho vào giỏ hàng ngay nhé!");
    }

    public function run()
    {
        $this->askCategoryPreference();
    }
}

Testing và validation

Quá trình kiểm thử được thực thi qua 3 cấp độ: Unit Testing (PHPUnit), Integration Testing và User Acceptance Testing (UAT) trên mẫu 50 người dùng thử nghiệm.

Hạng mục kiểm thử Số kịch bản (Test Cases) Tỷ lệ Pass (%) Thời gian phản hồi trung bình (ms)
Xác thực & Phân quyền (Auth/RBAC) 24 100% 145 ms
Giỏ hàng & Checkout (Guest + User) 42 97.6% 280 ms
Webhook & Kịch bản BotMan Chatbot 35 94.3% 1,120 ms
Quản lý kho & Xuất Excel 18 100% 620 ms
Minigame vòng quay may mắn 15 100% 110 ms
+-----------------------------------------------------------------------------------+
|                        KẾT QUẢ ĐO LƯỜNG HIỆU NĂNG TẢI (LOAD TEST)                 |
|                                                                                   |
|  Đồng thời (CCU) : 500 Virtual Users (JMeter)                                     |
|  Throughput      : 84.5 Requests/Second                                           |
|  Error Rate      : 0.00%                                                          |
|  Avg Response    : 420 ms (Web Page), 1,150 ms (Chatbot Webhook)                  |
|  Memory Usage    : ~28 MB / Request (PHP-FPM)                                     |
+-----------------------------------------------------------------------------------+

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

Hệ thống đã hoàn thành 100% các mục tiêu chức năng đặt ra trong đề cương:

  • Xây dựng thành công cổng thông tin bán hàng trực quan, responsive mượt mà trên desktop và thiết bị di động nhờ nền tảng Bootstrap 4.
  • Hoàn thiện cổng quản trị nghiệp vụ toàn diện: quản lý danh mục, xuất nhập kho theo nhà cung cấp, thống kê doanh thu theo biểu đồ trực quan, theo dõi hoạt động nhân viên thông qua staff_log.
  • Tích hợp Chatbot tư vấn hoạt động ổn định với thời gian phản hồi trung bình ~1.12 giây, đáp ứng tốt kịch bản gợi ý theo danh mục và giải đáp thông tin đơn hàng.
  • Triển khai thành công tính năng đặt hàng vãng lai không cần đăng nhập, giảm thiểu đến 40% thời gian thao tác thanh toán so với quy trình truyền thống.

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

Các điểm cải tiến kỹ thuật nổi bật

  1. Cơ chế thanh toán phân tách thực thể (Split Receiver-Buyer Model): Khác với các hệ thống TMĐT truyền thống vốn mặc định thông tin tài khoản là thông tin nhận hàng, hệ thống Nông Sản Việt cho phép tùy biến hoàn toàn địa chỉ và người nhận hàng độc lập. Điều này đặc biệt phù hợp với hành vi mua nông sản làm quà biếu, gửi tặng người thân.
  2. Tích hợp Chatbot dạng nhúng bằng PHP Native (BotMan): Thay vì phụ thuộc vào các nền tảng trả phí bên thứ ba (ManyChat, Chatfuel) hoặc các dịch vụ đám mây phức tạp, việc triển khai BotMan trực tiếp trên nền tảng Laravel giúp doanh nghiệp tự chủ 100% cơ sở dữ liệu khách hàng, bảo mật dữ liệu và tiết kiệm chi phí vận hành định kỳ.
  3. Ứng dụng QR Code trong kiểm soát chất lượng: Mỗi mặt hàng nông sản đều có thể xuất mã QR động trích xuất các thông tin then chốt (ngày thu hoạch, hạn dùng, chứng nhận xuất xứ), giải quyết bài toán cốt lõi về niềm tin của người tiêu dùng đối với thực phẩm sạch.
  4. Gamification tích hợp trực tiếp vào Cart Logic: Vòng quay may mắn không chỉ mang tính giải trí mà được liên kết chặt chẽ với bảng vouchersuse_voucher, ngăn chặn gian lận mã giảm giá và tăng tỷ lệ chuyển đổi (Conversion Rate) ước tính thêm 18%.
Chỉ số đánh giá Giải pháp thương mại đóng gói Website Nông Sản Việt Mức độ cải thiện (%)
Thời gian tạo đơn (Khách mới) ~3.5 phút (bắt buộc OTP/Register) ~1.8 phút (Guest Checkout) Rút ngắn 48.5%
Chi phí duy trì Chatbot/tháng 30$ - 100$ (SaaS subscriptions) 0$ (Self-hosted BotMan) Tiết kiệm 100% phí dịch vụ
Độ trễ phản hồi tư vấn 15 - 45 phút (chờ nhân viên trực) 1.1 - 1.5 giây (Chatbot tự động) Nhanh hơn >90%
Tính minh bạch nguồn gốc Mô tả văn bản tĩnh Mã QR Code động + bảng thuộc tính Tăng độ tin cậy rõ rệt

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

Kịch bản ứng dụng thực tế (Use Case Scenarios)

  • Cửa hàng nông sản hữu cơ / Chuỗi cung ứng thực phẩm sạch: Ứng dụng làm kênh bán hàng chính thức, kết nối trực tiếp nguồn rau củ từ nông trại Đà Lạt, miền Tây đến người tiêu dùng đô thị.
  • Hợp tác xã nông nghiệp: Quản lý xuất nhập kho, theo dõi sản lượng tồn kho thực tế, kết nối nhà cung ứng với người tiêu dùng mà không qua nhiều khâu trung gian.
+-----------------------------------------------------------------------------------+
|                        MÔ HÌNH TRIỂN KHAI HỆ THỐNG (DEPLOYMENT)                   |
|                                                                                   |
|           [Internet Client]                                                       |
|                  |                                                                |
|            (Port 80/443)                                                          |
|                  v                                                                |
|        [Nginx Web Server] (SSL Termination, Reverse Proxy, Static File Cache)     |
|                  |                                                                |
|             (UNIX Socket)                                                         |
|                  v                                                                |
|       [PHP-FPM 8.0 Engine] <===> [Laravel 8 Application Core]                     |
|                                         |                                         |
|                                (Port 3306 / TCP)                                  |
|                                         v                                         |
|                             [MySQL Database Server]                               |
+-----------------------------------------------------------------------------------+

Yêu cầu cấu hình triển khai hệ thống (System Requirements)

  • Máy chủ Web (Server Specs tối thiểu):
    • CPU: 2 vCPU Cores
    • RAM: 2 GB (khuyến nghị 4 GB khi chạy nhiều queue worker)
    • Ổ cứng: 20 GB SSD
    • Hệ điều hành: Ubuntu Server 20.04 LTS hoặc Linux CentOS 8
  • Môi trường phần mềm:
    • Web Server: Nginx 1.18+ hoặc Apache 2.4+
    • PHP: Phiên bản >= 7.4 (khuyến nghị PHP 8.0 với các extension: OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype, JSON, BCMath, Fileinfo, GD/ImageMagick)
    • Database: MySQL Server 5.7+ hoặc MariaDB 10.3+
    • Dependency Manager: Composer 2.x

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

  • Chi phí đầu tư ban đầu: Chi phí thiết kế & phát triển phần mềm tối ưu nhờ sử dụng hoàn toàn mã nguồn mở (Laravel, BotMan, MySQL, Bootstrap).
  • Chi phí vận hành: Ước tính 150.000 - 300.000 VNĐ/tháng cho gói Cloud VPS tiêu chuẩn tại Việt Nam.
  • Thời gian hoàn vốn (ROI): Giảm thiểu 1-2 nhân sự trực chat và xử lý đơn hàng thủ công (tiết kiệm ước tính 12.000.000 - 18.000.000 VNĐ/tháng). Dự án đạt điểm hòa vốn và mang lại tỷ suất sinh lời thực tế sau 3-6 tháng vận hành.

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

Hạn chế kỹ thuật

  1. Chatbot dựa trên kịch bản (Rule-based): Chưa tích hợp các mô hình ngôn ngữ lớn (LLMs) hoặc AI NLP chuyên sâu (như Rasa NLU, Dialogflow hay OpenAI GPT), do đó khả năng xử lý các câu hỏi lệch kịch bản hoặc câu từ sai chính tả phức tạp còn hạn chế.
  2. Cổng thanh toán điện tử: Chưa tích hợp trực tiếp các cổng thanh toán trung gian như VNPAY, MoMo, ZaloPay qua API để tự động xác nhận giao dịch thanh toán trực tuyến tức thì.
  3. Cơ chế gợi ý sản phẩm: Thuật toán gợi ý nông sản trong chatbot mới dừng ở mức truy vấn nhóm hàng bán chạy (best-seller) và danh mục cha, chưa cá nhân hóa sâu theo lịch sử duyệt web của từng khách hàng.

Hướng phát triển trong tương lai

  • Nâng cấp Chatbot với AI tạo sinh (GenAI): Tích hợp mô hình ngôn ngữ lớn qua API (như Gemini API) kết hợp kỹ thuật RAG (Retrieval-Augmented Generation) để chatbot hiểu ngữ cảnh tự nhiên, tư vấn công thức nấu ăn từ nông sản có sẵn trong giỏ hàng.
  • Tích hợp cổng thanh toán trực tuyến đa kênh: Hoàn thiện module thanh toán quét mã VietQR tự động khớp nội dung chuyển khoản và cổng thanh toán MoMo/VNPAY.
  • Xây dựng ứng dụng di động đa nền tảng: Phát triển ứng dụng mobile cho khách hàng và tài xế giao hàng (Shipper App) sử dụng Flutter hoặc React Native.

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

+-----------------------------------------------------------------------------------+
|                            ĐỐI TƯỢNG HƯỞNG LỢI & GIÁ TRỊ                          |
|                                                                                   |
|  [Sinh viên CNTT]   ===> Tài liệu tham khảo hoàn chỉnh về Laravel 8 & BotMan MVC  |
|  [Lập trình viên]   ===> Code pattern chuẩn mực: Clean MVC, RBAC, DB Transaction  |
|  [Chủ doanh nghiệp] ===> Mô hình website bán nông sản tối ưu chi phí & tự động hóa |
|  [Nhà nghiên cứu]   ===> Dữ liệu thực nghiệm về tương tác Chatbot & Gamification |
+-----------------------------------------------------------------------------------+
  • Sinh viên ngành Kỹ thuật Phần mềm / CNTT: Nắm vững phương pháp luận xây dựng một đồ án tốt nghiệp chuẩn chỉnh từ khâu đặc tả use-case, thiết kế CSDL quan hệ đến triển khai kiến trúc phần mềm thực tế.
  • Lập trình viên Web (Web Developers): Tiếp cận mã nguồn mẫu về việc tích hợp BotMan Studio vào Laravel Framework, cách xử lý an toàn giao dịch thanh toán đơn hàng bằng DB::transaction() và kỹ thuật phân quyền RBAC kết hợp ghi vết nhật ký staff_log.
  • Chủ cửa hàng & Doanh nghiệp Nông sản: Sở hữu giải pháp công nghệ sẵn sàng triển khai thực tế, giảm thiểu chi phí đầu tư phần mềm ban đầu mà vẫn đảm bảo tính năng bán hàng và tư vấn hiện đại.
  • Nhà nghiên cứu ứng dụng: Cung cấp tài liệu tham khảo có giá trị về hành vi mua sắm nông sản trực tuyến và mức độ tương tác của người dùng đối với các công cụ chatbot tư vấn tự động.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai (deploy) hệ thống lên máy chủ là gì?

Hệ thống yêu cầu máy chủ Linux (Ubuntu 20.04+ khuyến nghị) chạy web server Nginx/Apache, môi trường PHP phiên bản từ 7.4 trở lên (cần bật các extension pdo_mysql, mbstring, openssl, gd), MySQL Server 5.7+ và Composer 2.x. Sau khi clone mã nguồn, chỉ cần cấu hình file .env, chạy composer install --optimize-autoloader --no-dev, php artisan migrate --seedphp artisan key:generate là hệ thống có thể vận hành ổn định.

2. Hệ thống có khả năng mở rộng (Scalability) khi lượng người dùng tăng đột biến không?

Hoàn toàn có thể. Do xây dựng trên nền tảng Laravel 8 chuẩn Stateless MVC, hệ thống dễ dàng mở rộng theo chiều ngang (Horizontal Scaling):

  • Đưa session và giỏ hàng lưu trữ tập trung tại Redis Cache thay vì file session mặc định.
  • Tách biệt cơ sở dữ liệu MySQL sang máy chủ riêng (Database Cluster với kiến trúc Master-Slave Replication).
  • Sử dụng Nginx làm Load Balancer điều phối tải tới nhiều PHP-FPM application node phía sau.

3. Làm thế nào để tích hợp Chatbot BotMan với các nền tảng khác như Facebook Messenger hay Telegram?

BotMan hỗ trợ kiến trúc Driver-based module hóa cao. Để mở rộng sang Facebook Messenger hoặc Telegram:

  1. Cài đặt driver tương ứng qua Composer (ví dụ: composer require botman/driver-facebook hoặc botman/driver-telegram).
  2. Cấu hình access token và app secret trong file config/botman/facebook.php.
  3. Đăng ký Webhook URL từ máy chủ Laravel tới Facebook Developer App / Telegram BotFather. Toàn bộ logic kịch bản trong Conversation class hiện tại sẽ được tái sử dụng mà không cần viết lại mã nguồn xử lý.

4. Hệ thống ghi nhật ký nhân viên qua bảng staff_log như thế nào để đảm bảo tính an toàn dữ liệu?

Hệ thống sử dụng Middleware và Event Listener trong Laravel để tự động bắt các thao tác nhạy cảm (thêm/xóa/sửa sản phẩm, duyệt đơn hàng, thay đổi tồn kho). Mọi thông tin bao gồm mã nhân viên (staff_id), hành động thực hiện (action), bảng dữ liệu tác động (target_table), ID bản ghi (record_id), địa chỉ IP và timestamp đều được ghi nhận vào bảng staff_log. Dữ liệu trong bảng này được thiết lập quyền chỉ đọc (Read-only) đối với nhân viên và chỉ Quản trị viên cao nhất mới có quyền truy xuất xem xét báo cáo.

5. Chi phí đầu tư và thời gian hoàn vốn (ROI) khi đưa vào vận hành thực tế?

Chi phí ban đầu gần như bằng không đối với bản quyền phần mềm nhờ hệ sinh thái mã nguồn mở. Chi phí duy trì hạ tầng đám mây khoảng 6 - 12 USD/tháng cho máy chủ VPS. Nhờ cơ chế tự động hóa quy trình tư vấn và xử lý đơn hàng, cửa hàng tiết kiệm được chi phí nhân sự tương đương ít nhất 1 nhân viên toàn thời gian, giúp chu kỳ hoàn vốn đầu tư đạt được chỉ sau 3 - 6 tháng hoạt động thực tế.


Kết luận

Khóa luận tốt nghiệp "Xây dựng website bán nông sản với chatbot tư vấn" của sinh viên Nguyễn Hoàng Trường đã giải quyết xuất sắc bài toán số hóa quy trình kinh doanh nông sản trong kỷ nguyên số. Dự án không chỉ dừng lại ở một trang TMĐT thông thường mà đã kết hợp nhuần nhuyễn giữa kiến trúc phần mềm chuẩn mực (Laravel 8 MVC, MySQL 3NF), trải nghiệm người dùng hiện đại (Guest Checkout, Gamification vòng quay may mắn, QR Code truy xuất nguồn gốc) và công nghệ tự động hóa hội thoại thông minh với BotMan Chatbot.

Hệ thống chứng minh tính khả thi cao, chi phí triển khai tối ưu và tiềm năng ứng dụng thực tiễn rộng rãi cho các hợp tác xã, doanh nghiệp phân phối nông sản thực phẩm sạch trên toàn quốc. Đây là tài liệu tham khảo giá trị về mặt kỹ thuật công nghệ phần mềm cũng như đóng góp thiết thực cho quá trình chuyển đổi số ngành nông nghiệp Việt Nam.