Giới thiệu dự án

Trong bối cảnh chuyển đổi số giáo dục đại học và sự gián đoạn của các kỳ thi tập trung do đại dịch COVID-19, việc đảm bảo tính liên tục, minh bạch và chính xác trong khâu đánh giá năng lực người học trở thành yêu cầu cấp thiết. Theo thống kê từ Bộ Giáo dục và Đào tạo trong giai đoạn 2020–2022, hơn 85% cơ sở giáo dục đại học tại Việt Nam phải chuyển hướng sang hình thức kiểm tra trực tuyến. Tuy nhiên, phần lớn các đơn vị gặp phải điểm nghẽn nghiêm trọng về hạ tầng quản lý bài thi tự luận: tình trạng quá tải server vào những phút cuối nộp bài, phân mảnh file làm bài, và thiếu cơ chế xác thực giám thị tập trung.

Đề tài "Xây dựng hệ thống hỗ trợ kiểm tra và thi trực tuyến" được thực hiện tại Trường Đại học An Giang (AGU) nhằm giải quyết triệt để bài toán tổ chức và quản lý thi tự luận trực tuyến. Đề tài tập trung xây dựng nền tảng phần mềm chuyên biệt, khép kín từ khâu lập danh mục kỳ thi, phân bổ ca thi/phòng thi, phân quyền giám thị, tích hợp phòng giám sát trực tuyến đến khâu thu bài, lưu trữ và sao lưu dữ liệu bài làm.

                           HỆ THỐNG THI TRỰC TUYẾN AGU
                                        │
    ┌───────────────────┬───────────────┴───────────────┬───────────────────┐
    ▼                   ▼                               ▼                   ▼
Quản trị & HĐT     Cán bộ coi thi                   Thư ký               Sinh viên
- Phân ca/phòng    - Điểm danh Zoom                - Thu bài tập trung   - Xác thực ca thi
- Quản lý đề       - Cấp mật khẩu ca thi           - Xuất dữ liệu        - Xem đề & làm bài
- Cấp quyền thi lại- Giám sát trạng thái nộp       - Kiểm tra tính đủ    - Nộp đa file (PDF/Ảnh)

Mục tiêu nghiên cứu cụ thể

  1. Chuẩn hóa quy trình nghiệp vụ: Số hóa toàn diện quy trình tổ chức thi tự luận trực tuyến theo quy chế đào tạo tín chỉ tại Trường Đại học An Giang.
  2. Khắc phục lỗi nộp và lưu trữ bài: Xây dựng cơ chế upload đa tệp tin (multi-file upload) với cấu trúc lưu trữ phân cấp theo mã kỳ thi, ca thi, phòng thi và mã số sinh viên (MSSV).
  3. Tối ưu hóa công tác giám sát: Tích hợp liên kết phòng điểm danh trực tuyến (Zoom Meeting), quản lý mật khẩu mở đề thi động theo ca và theo dõi trạng thái nộp bài theo thời gian thực (real-time state tracking).
  4. Bảo mật và toàn vẹn dữ liệu: Thiết lập phân quyền truy cập đa tầng (Role-Based Access Control - RBAC), ngăn chặn gian lận thời gian làm bài ở tầng client và hỗ trợ sao lưu dự phòng tự động qua Google Drive API.

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

  • Phạm vi áp dụng: Hình thức thi tự luận trực tiếp trên nền web kết hợp giám sát trực tuyến qua camera phòng thi tại Trường Đại học An Giang.
  • Giới hạn kỹ thuật: Hệ thống tập trung tối ưu hóa cho bài thi tự luận (nộp file hình ảnh, PDF, tài liệu nén). Module thi trắc nghiệm tự động chấm điểm và module nhận diện khuôn mặt qua AI nằm ngoài phạm vi của phiên bản này.

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

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

Trước khi xây dựng hệ thống, các giải pháp tổ chức thi tự luận trực tuyến tại các đơn vị giáo dục bộc lộ nhiều điểm hạn chế khi vận hành quy mô lớn:

Tiêu chí đánh giá Google Classroom / Form Hệ thống LMS Moodle chuẩn Hệ thống thi trực tuyến AGU (Đề tài)
Cơ chế nộp bài Cho phép đính kèm file nhưng không gom nhóm tự động theo cấu trúc phòng/ca thi Phức tạp trong cấu hình nộp bài tự luận phân phòng Upload đa file đồng thời, tự động đặt tên chuẩn [MSSV]_[HocPhan]_[CaThi]
Xem trước bài làm Phải mở từng liên kết Drive riêng lẻ, tốn tài nguyên máy Yêu cầu tải bài về máy mới đọc được định dạng ảnh Preview trực tiếp file bài làm (PDF/JPG/PNG) ngay trên giao diện web của CBCT/Thư ký
Quản lý phòng thi Rời rạc, không liên kết trực tiếp mã phòng với link điểm danh Quản lý theo khóa học, không tối ưu cho ca thi ghép Quản lý trực quan: 1 Ca thi $\rightarrow$ Nhiều Phòng thi $\rightarrow$ Gán Đề/CBCT/SV linh hoạt
Cơ chế cấp quyền làm lại Không có cơ chế kiểm soát riêng cho từng thí sinh gặp sự cố Phải mở lại quyền nộp cho cả nhóm hoặc can thiệp DB CBCT/Thư ký cấp quyền "Làm bài lại" trực tiếp từ giao diện với 1 cú click

Phân loại yêu cầu người dùng (Mô hình MoSCoW)

  • Must have (Bắt buộc): Đăng nhập xác thực bằng tài khoản nội bộ/Gmail AGU; phân quyền 5 nhóm tác nhân (Admin, HĐT, Thư ký, CBCT, Sinh viên); tạo ca thi có mật khẩu; nộp đa tệp tin; đồng hồ đếm ngược đồng bộ máy chủ; xem và tải bài thi theo phòng.
  • Should have (Cần có): Nhập/xuất danh sách thí sinh, phòng thi, ca thi hàng loạt qua tệp tin Excel; preview bài thi trực tiếp không cần download; kích hoạt chế độ bảo trì hệ thống.
  • Could have (Có thể có): Tự động đồng bộ bản sao lưu toàn bộ bài thi lên Google Drive; gửi cảnh báo trạng thái thi qua email.
  • Won't have (Chưa làm trong phiên bản này): AI giám sát hành vi bất thường của thí sinh qua webcam; module sinh đề trắc nghiệm tự động.

Thiết kế hệ thống

Hệ thống được phát triển trên nền tảng kiến trúc Model-View-Controller (MVC) nhằm phân tách rõ ràng giữa tầng xử lý logic nghiệp vụ, giao diện người dùng và tầng thao tác cơ sở dữ liệu.

graph TD
    Client[Client Browser: HTML5 / CSS3 / JS / Blade Engine] -->|HTTP Request / RESTful API| WebServer[Web Server: Apache / Nginx]
    WebServer --> Route[Laravel Routing & Security Middleware]
    Route --> AuthModule[Authentication & RBAC Manager]
    Route --> Controller[Controller Layer: Exam, Room, Submission Logic]
    Controller --> Eloquent[Eloquent ORM Data Abstraction Layer]
    Eloquent --> MySQL[(MySQL 8.0 Relational Database)]
    Controller --> FileSystem[Local Secure File Storage]
    Controller --> CloudBackup[Google Drive API v3 Backup Service]
    Controller --> ZoomAPI[Zoom Meeting Integration Module]

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

  • Ngôn ngữ lập trình Backend: PHP (phiên bản 7.4 / 8.0) với cú pháp hướng đối tượng chặt chẽ.
  • Framework: Laravel 8.x – tận dụng Eloquent ORM, Blade Template Engine, CSRF Protection, và Artisan CLI.
  • Hệ quản trị cơ sở dữ liệu: MySQL 8.0 (hỗ trợ InnoDB engine, tối ưu hóa khóa ngoại và quan hệ toàn vẹn dữ liệu).
  • Giao diện Frontend: HTML5, CSS3, JavaScript, Bootstrap 5, AJAX hỗ trợ tải dữ liệu bất đồng bộ.
  • Tích hợp bên ngoài: Maatwebsite/Laravel-Excel 3.1, Google Client API v3, Zoom Web SDK.

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

Cơ sở dữ liệu được chuẩn hóa đạt dạng chuẩn 3NF, bao gồm các bảng cốt lõi phục vụ quản lý kỳ thi:

-- Bảng quản lý Ca thi (Exam Shifts)
CREATE TABLE `ca_thi` (
  `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `ky_thi_id` INT UNSIGNED NOT NULL,
  `ten_ca_thi` VARCHAR(100) NOT NULL,
  `ngay_thi` DATE NOT NULL,
  `gio_bat_dau` TIME NOT NULL,
  `mat_khau_ca_thi` VARCHAR(255) NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (`ky_thi_id`) REFERENCES `ky_thi`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng quản lý Bài thi của Sinh viên (Exam Submissions)
CREATE TABLE `bai_thi` (
  `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `sinh_vien_id` INT UNSIGNED NOT NULL,
  `phong_thi_id` INT UNSIGNED NOT NULL,
  `de_thi_id` INT UNSIGNED NOT NULL,
  `thoi_gian_bat_dau` DATETIME NOT NULL,
  `thoi_gian_ket_thuc` DATETIME NULL,
  `trang_thai` ENUM('dang_lam', 'da_nop', 'duoc_lam_lai') DEFAULT 'dang_lam',
  `ghi_chu` TEXT NULL,
  UNIQUE KEY `unique_attempt` (`sinh_vien_id`, `phong_thi_id`, `de_thi_id`),
  FOREIGN KEY (`sinh_vien_id`) REFERENCES `sinh_vien`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Bảng lưu trữ chi tiết các tệp tin đính kèm của bài thi (Submission Files)
CREATE TABLE `du_lieu_bai_thi` (
  `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `bai_thi_id` INT UNSIGNED NOT NULL,
  `duong_dan_file` VARCHAR(255) NOT NULL,
  `ten_file_goc` VARCHAR(255) NOT NULL,
  `kich_thuoc_file` INT UNSIGNED NOT NULL,
  `dinh_dang` VARCHAR(20) NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (`bai_thi_id`) REFERENCES `bai_thi`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

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

Dự án áp dụng mô hình phát triển phần mềm lặp linh hoạt (Agile Scrum) kết hợp phương pháp nghiên cứu thực nghiệm:

[Khảo sát thực tế tại AGU] ──> [Đặc tả Use Case & DB] ──> [Sprint 1: Core & Auth]
                                                                  │
[Sprint 3: Nghiệm thu & Backup] <── [Sprint 2: Room & Submission] <┘
  • Giai đoạn 1 (Tuần 1–4): Khảo sát thực tế các văn bản quy định tổ chức thi trực tuyến tại AGU; thu thập biểu mẫu điểm danh, biên bản coi thi; thiết kế sơ đồ Use Case, ERD và luồng dữ liệu.
  • Giai đoạn 2 (Tuần 5–10): Xây dựng module lõi (Quản trị danh mục, phân bổ phòng thi, xác thực người dùng, tích hợp Zoom).
  • Giai đoạn 3 (Tuần 11–14): Phát triển module thi trực tuyến: xử lý thời gian thực, upload đa file, bảo mật tệp tin đề thi và giao diện thu bài tập trung cho Thư ký/CBCT.
  • Giai đoạn 4 (Tuần 15–16): Kiểm thử chấp nhận người dùng (UAT), đánh giá hiệu năng chịu tải và hoàn thiện tài liệu kỹ thuật.

Implementation và kết quả

Quy trình phát triển và hiện thực hóa mã nguồn

Hệ thống giải quyết hai bài toán kỹ thuật phức tạp nhất trong thi tự luận: xử lý upload đa file an toànkiểm soát thời gian làm bài chống gian lận client-side.

1. Xử lý tải lên đa tệp tin và lưu trữ phân cấp (Laravel Controller Logic)

Đoạn mã sau hiện thực logic nhận nhiều file từ sinh viên, kiểm tra định dạng hợp lệ, đổi tên file theo định dạng chuẩn để tránh trùng lặp, lưu vào hệ thống tệp tin và cập nhật cơ sở dữ liệu:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\BaiThi;
use App\Models\DuLieuBaiThi;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Carbon\Carbon;

class SubmissionController extends Controller
{
    public function submitExam(Request $request)
    {
        $request->validate([
            'bai_thi_id' => 'required|exists:bai_thi,id',
            'files.*' => 'required|file|mimes:pdf,jpg,jpeg,png,docx,zip|max:20480', // Giới hạn 20MB/file
        ]);

        $baiThi = BaiThi::findOrFail($request->bai_thi_id);

        // Kiểm tra tính hợp lệ về thời gian làm bài từ phía Server
        $now = Carbon::now();
        $hanNopBai = Carbon::parse($baiThi->thoi_gian_bat_dau)->addMinutes($baiThi->deThi->thoi_gian_lam_bai + 5); // 5 phút bù giờ nộp bài

        if ($now->greaterThan($hanNopBai) && $baiThi->trang_thai !== 'duoc_lam_lai') {
            return response()->json(['error' => 'Đã quá thời gian nộp bài quy định!'], 422);
        }

        DB::beginTransaction();
        try {
            if ($request->hasFile('files')) {
                foreach ($request->file('files') as $index => $file) {
                    $originalName = $file->getClientOriginalName();
                    $extension = $file->getClientOriginalExtension();
                    $customFileName = sprintf(
                        "%s_%s_part%d_%s.%s",
                        $baiThi->sinhVien->ma_sinh_vien,
                        $baiThi->phongThi->ma_phong,
                        $index + 1,
                        time(),
                        $extension
                    );

                    $path = $file->storeAs("submissions/{$baiThi->phong_thi_id}", $customFileName, 'public');

                    DuLieuBaiThi::create([
                        'bai_thi_id' => $baiThi->id,
                        'duong_dan_file' => $path,
                        'ten_file_goc' => $originalName,
                        'kich_thuoc_file' => $file->getSize(),
                        'dinh_dang' => $extension,
                    ]);
                }
            }

            $baiThi->update([
                'thoi_gian_ket_thuc' => $now,
                'trang_thai' => 'da_nop',
            ]);

            DB::commit();
            return response()->json(['success' => 'Nộp bài thi thành công!'], 200);
        } catch (\Exception $e) {
            DB::rollBack();
            return response()->json(['error' => 'Lỗi lưu trữ bài thi: ' . $e->getMessage()], 500);
        }
    }
}

2. Đồng bộ thời gian và ngăn chặn thao tác đóng mở tab trình duyệt

Để ngăn chặn việc sinh viên tua ngược đồng hồ máy khách (Client Clock Tampering) hoặc đóng trình duyệt để kéo dài thời gian:

  • Mốc thời gian bắt đầu làm bài (thoi_gian_bat_dau) được ghi nhận cố định tại máy chủ khi sinh viên nhập chính xác mật khẩu ca thi.
  • Thời gian còn lại được tính toán động theo công thức: $$\text{Remaining Time} = (\text{Start Time} + \text{Duration}) - \text{Current Server Time}$$
  • Khi thí sinh truy cập lại trang, hệ thống tự động tải lại đồng hồ đếm ngược dựa trên mốc thời gian lưu trong CSDL thay vì khởi tạo lại từ đầu.

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

Hệ thống đã trải qua quá trình kiểm thử toàn diện về chức năng và hiệu năng chịu tải trước khi đưa vào ứng dụng thực tế:

                  KẾT QUẢ KIỂM THỬ TẢI HỆ THỐNG (500 CCU)
  100% ┌────────────────────────────────────────────────────────────┐
       │ HTTP 200 OK (Thành công): 99.8%                            │
   50% ├────────────────────────────────────────────────────────────┤
       │ Response Time < 1.5s: 94.2%                                │
    0% └────────────────────────────────────────────────────────────┘
       0s                          1.2s (Avg)                     3.0s
  • Kiểm thử chức năng (Functional Testing): Đạt 100% tỷ lệ pass trên 45 kịch bản kiểm thử (use cases) liên quan đến phân quyền, phân phòng, nộp bài 2 bước và tính năng cấp quyền làm bài lại.
  • Kiểm thử hiệu năng (Stress Testing):
    • Sử dụng công cụ Apache JMeter giả lập 500 người dùng đồng thời (Concurrent Users - CCU) gửi yêu cầu truy vấn đề thi và upload tệp tin bài làm (kích thước trung bình 8MB/tệp).
    • Thời gian phản hồi trung bình (Average Response Time): 1.25 giây trong điều kiện tải cao điểm.
    • Tỷ lệ xử lý thành công (Throughput): Đạt 99.8% không phát sinh lỗi timeout kết nối cơ sở dữ liệu.

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

Hệ thống đã hoàn thiện toàn bộ các chức năng đề ra trong đề cương nghiên cứu:

  1. Phân hệ Quản trị & HĐT: Quản lý toàn bộ danh mục khoa, ngành, học phần, sinh viên, cán bộ; import dữ liệu tự động từ file Excel; lập lịch thi và phân bổ phòng thi tự động.
  2. Phân hệ Giám thị (CBCT) & Thư ký: Xem danh sách phòng thi theo ca; truy cập nhanh link điểm danh Zoom; điểm danh trực tiếp trên web; theo dõi tiến độ nộp bài theo thời gian thực; xem bài nộp trực tiếp và tải trọn gói bài thi của cả phòng dưới dạng file nén ZIP.
  3. Phân hệ Thí sinh: Giao diện thi tối giản, hiển thị đề thi định dạng PDF sắc nét; đồng hồ đếm ngược chuẩn xác; quy trình nộp bài 2 bước rõ ràng (Bước 1: Nộp file tạm thời; Bước 2: Xác nhận hoàn tất bài thi).

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

  1. Cơ chế xác thực nộp bài 2 bước (Two-Step Submission Verification):
    • Bước 1 (Xác nhận nộp): Sinh viên tải tệp tin lên hệ thống. Bài làm được lưu ở trạng thái chờ duyệt, cho phép thí sinh xóa hoặc tải tệp thay thế nếu phát hiện sai sót.
    • Bước 2 (Hoàn tất & Khóa bài): Thí sinh xác nhận nộp lần cuối, hệ thống lập tức khóa quyền chỉnh sửa, chuyển trạng thái sang da_nop và hiển thị dấu thời gian (timestamp) làm căn cứ đối soát.
  2. Loại bỏ quy trình tải bài thủ công cho cán bộ chấm thi: Cải tiến vượt bậc so với các nền tảng trước đây: CBCT và Thư ký có thể đọc bài trực tiếp trên trình duyệt nhờ module Render nhúng (hỗ trợ tệp đa định dạng), giúp giảm 80% thời gian xử lý bài sau giờ thi.
  3. Khả năng phục hồi sự cố linh hoạt (Fault Tolerance): Tính năng "Cấp quyền làm bài lại" được phân quyền trực tiếp cho Thư ký/CBCT ngay tại giao diện phòng thi, xử lý tức thì các sự cố mất điện, đứt cáp mạng của sinh viên mà không cần can thiệp thủ công vào CSDL.
  4. Tối ưu hóa chi phí vận hành: Ứng dụng mã nguồn mở hoàn toàn miễn phí (PHP, Laravel, MySQL), loại bỏ chi phí bản quyền phần mềm đắt đỏ cho nhà trường.

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

Kịch bản triển khai thực tế

Hệ thống đã được thử nghiệm và triển khai tại Trường Đại học An Giang phục vụ các đợt thi kết thúc học phần trực tuyến với quy mô hơn 1.200 sinh viên tham gia trên 35 phòng thi song song.

       QUY TRÌNH VẬN HÀNH PHÒNG THI TRỰC TUYẾN
┌────────────────────────────────────────────────────────┐
│ TRƯỚC GIỜ THI (T - 30 PHÚT)                            │
│ 1. CBCT vào phòng thi Zoom qua link nhúng              │
│ 2. Sinh viên đăng nhập, vào phòng điểm danh            │
│ 3. CBCT đối chiếu CCCD/Thẻ sinh viên trên webcam       │
├────────────────────────────────────────────────────────┤
│ TRONG GIỜ THI (T - 00 PHÚT)                            │
│ 4. CBCT công bố "Mật khẩu ca thi"                      │
│ 5. Sinh viên nhập mật khẩu để mở đề & bắt đầu tính giờ │
│ 6. CBCT theo dõi trạng thái làm bài trên màn hình      │
├────────────────────────────────────────────────────────┤
│ KẾT THÚC GIỜ THI (T + HẾT GIỜ)                         │
│ 7. Sinh viên nộp đa file bài làm & xác nhận kết thúc   │
│ 8. Thư ký kiểm tra đủ số lượng bài, tải file nén ZIP   │
└────────────────────────────────────────────────────────┘

Yêu cầu cấu hình triển khai hạ tầng

  • Máy chủ Web (Production Server):
    • CPU: 4 vCPU (Intel Xeon hoặc AMD EPYC).
    • RAM: 8 GB DDR4 (tối thiểu 4 GB khả dụng cho PHP-FPM).
    • Ổ cứng: 100 GB SSD NVMe (đảm bảo tốc độ I/O khi nhiều thí sinh cùng ghi file).
    • Hệ điều hành: Ubuntu Server 20.04 LTS / CentOS 8.
    • Web Server: Nginx 1.18+ hoặc Apache 2.4+ với module mod_rewrite.
  • Phía Client (Người dùng):
    • Máy tính cá nhân kết nối Internet ổn định ($\ge 5$ Mbps).
    • Trình duyệt web hiện đại: Google Chrome 90+, Mozilla Firefox 88+, Microsoft Edge 90+.
    • Webcam và Microphone hoạt động phục vụ điểm danh và giám sát qua Zoom.

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

Hạn chế hiện tại

  • Hệ thống mới chỉ tập trung tối ưu cho hình thức thi tự luận, chưa hỗ trợ ngân hàng câu hỏi trắc nghiệm tự đảo đề.
  • Việc giám sát tính trung thực của thí sinh vẫn phụ thuộc vào sự quan sát của CBCT qua màn hình Zoom, chưa có cảnh báo tự động khi thí sinh rời khỏi khung hình hoặc chuyển tab trình duyệt.
  • Cơ chế lưu trữ file bài thi mặc định vẫn nằm trên máy chủ cục bộ (local storage), đòi hỏi dung lượng ổ cứng lớn khi tổ chức các kỳ thi tập trung toàn trường.

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

  1. Tích hợp module thi trắc nghiệm thông minh: Xây dựng ngân hàng đề thi trắc nghiệm có khả năng xáo trộn câu hỏi, xáo trộn đáp án và chấm điểm tự động ngay khi nộp bài.
  2. Ứng dụng Trí tuệ nhân tạo (AI Proctoring): Nhúng module AI theo dõi cử chỉ khuôn mặt qua webcam, phát hiện âm thanh lạ hoặc phát hiện nhiều khuôn mặt trong phòng thi để đưa ra cảnh báo tự động cho giám thị.
  3. Tích hợp hệ thống xác thực tập trung (Single Sign-On - SSO): Kết nối với hệ thống CAS/LDAP của Trường Đại học An Giang để đồng bộ dữ liệu người dùng mà không cần nhập thủ công bằng Excel.
  4. Kiến trúc lưu trữ đám mây phân tán: Mở rộng tầng Storage sang Amazon S3 hoặc Google Cloud Storage để nâng cao khả năng mở rộng lưu trữ bài thi không giới hạn.

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

                              GIÁ TRỊ HỆ THỐNG MANG LẠI
  ┌───────────────────────┬───────────────────────┬───────────────────────┐
  ▼                       ▼                       ▼                       ▼
Sinh viên               Cán bộ coi thi          Nhà trường / HĐT        Lập trình viên
- Nộp bài an toàn       - Giảm 80% thời gian    - Tiết kiệm 75% chi     - Mô hình MVC chuẩn
- Giao diện trực quan     tổng hợp bài thi        phí in ấn & phôi đề   - Mã nguồn mở, dễ
- Xác thực 2 bước       - Điểm danh tích hợp    - Lưu trữ số hóa an toàn  tái sử dụng
  • Sinh viên: Trải nghiệm thi cử thuận tiện, minh bạch; xóa bỏ nỗi lo mất bài nhờ cơ chế nộp đa tệp tin kèm biên nhận nộp bài hiển thị tức thì.
  • Cán bộ coi thi & Giảng viên: Giảm thiểu đáng kể áp lực hành chính trong phòng thi; thao tác điểm danh, giám sát và thu bài diễn ra tập trung trên một giao diện thống nhất.
  • Nhà trường & Hội đồng thi: Tiết kiệm hàng trăm triệu đồng chi phí in ấn đề thi, giấy thi hàng năm; dữ liệu bài thi được số hóa chuẩn mực, phục vụ công tác thanh tra, kiểm định chất lượng đào tạo dễ dàng.
  • Cộng đồng phát triển phần mềm: Dự án cung cấp một kiến trúc tham chiếu mẫu (Reference Architecture) hoàn chỉnh về việc ứng dụng Laravel Framework trong việc giải quyết các bài toán chuyển đổi số giáo dục quy mô vừa và nhỏ.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống lên môi trường thực tế là gì?

Hệ thống yêu cầu máy chủ chạy hệ điều hành Linux (khuyến nghị Ubuntu Server 20.04 LTS), cài đặt ngăn xếp LEMP/LAMP gồm PHP $\ge 7.4$ (bật các extension pdo_mysql, mbstring, fileinfo, gd), MySQL $\ge 8.0$ và Composer để quản trị các thư viện phụ thuộc.

2. Hệ thống xử lý thế nào khi có hàng nghìn sinh viên cùng nộp bài ở phút cuối?

Hệ thống sử dụng cơ chế xử lý file bất đồng bộ kết hợp tối ưu hóa truy vấn Indexing trong MySQL. Khi sinh viên nộp bài, tệp tin được stream trực tiếp vào thư mục lưu trữ tĩnh mà không nạp toàn bộ vào RAM, kết hợp cấu hình max_execution_timeupload_max_filesize hợp lý trên PHP-FPM để loại bỏ hiện tượng nghẽn cổ chai.

3. Làm thế nào để đảm bảo thí sinh không can thiệp vào mã nguồn JavaScript để kéo dài thời gian làm bài?

Toàn bộ logic tính toán thời gian được xác thực ở tầng Backend (Server-Side Validation). Khi thí sinh nhấn nút nộp bài, hệ thống sẽ so sánh thời điểm nhận Request tại Server với mốc thoi_gian_bat_dau + thoi_gian_lam_bai trong CSDL. Mọi Request gửi lên sau thời gian này (cộng thêm 5 phút dự phòng truyền tải mạng) đều bị hệ thống từ chối tự động.

4. Hệ thống có cơ chế bảo vệ bài thi trước nguy cơ hỏng hóc phần cứng máy chủ không?

Hệ thống tích hợp module sao lưu tự động (Backup Module) qua Google Drive API v3. Định kỳ sau mỗi ca thi, quản trị viên có thể kích hoạt tính năng sao lưu tự động để đồng bộ cơ sở dữ liệu cùng toàn bộ tệp tin bài làm lên kho lưu trữ đám mây an toàn.

5. Chi phí đầu tư và bảo trì phần mềm được ước tính ra sao?

Do xây dựng trên nền tảng mã nguồn mở (PHP, Laravel, MySQL), chi phí phần mềm là 0 đồng. Nhà trường chỉ cần chi trả chi phí thuê hạ tầng máy chủ ảo (Cloud VPS) với chi phí ước tính chỉ từ 500.000 – 1.500.000 VNĐ/tháng trong các đợt cao điểm thi cử, mang lại hiệu quả hoàn vốn đầu tư (ROI) rất cao so với chi phí in ấn truyền thống.


Kết luận

Khóa luận "Xây dựng hệ thống hỗ trợ kiểm tra và thi trực tuyến" của tác giả Trương Như Ý (Trường Đại học An Giang) đã giải quyết thành công bài toán thực tiễn cấp bách trong công tác tổ chức thi tự luận trực tuyến. Bằng việc ứng dụng kiến trúc MVC hiện đại của Laravel Framework kết hợp cùng hệ quản trị cơ sở dữ liệu MySQL, hệ thống không chỉ khắc phục triệt để các hạn chế về nộp và gom bài thi mà còn mở ra quy trình làm việc chuẩn hóa, an toàn cho Hội đồng thi, Cán bộ coi thi và sinh viên.

Thành công của đề tài khẳng định tính khả thi cao trong việc tự chủ phát triển các giải pháp phần mềm nội bộ tại các trường đại học, góp phần đẩy mạnh tiến trình chuyển đổi số toàn diện trong giáo dục và đào tạo. Hệ thống sẵn sàng mở rộng và tích hợp thêm các công nghệ tiên tiến như AI Proctoring để tiếp tục nâng cao chất lượng đánh giá người học trong tương lai.