Giới thiệu dự án

Bối cảnh và thực trạng quản lý đào tạo

Trong kỷ nguyên chuyển đổi số giáo dục đại học (EdTech), việc tự động hóa và chuẩn hóa các quy trình đào tạo thực tế là yêu cầu sống còn của các trường đại học khối ngành kỹ thuật và công nghệ. Theo các khảo sát quản trị đại học tại Việt Nam, hơn 80% thời gian xử lý nghiệp vụ của phòng đào tạo và văn phòng khoa bị tiêu tốn vào các thủ tục giấy tờ thủ công, đối soát email và nhập liệu thủ công trên bảng tính bảng Excel rời rạc.

Tại Học viện Công nghệ Bưu chính Viễn thông (PTIT), môn học "Thực tập doanh nghiệp" và "Đồ án tốt nghiệp" là hai học phần then chốt đối với sinh viên năm cuối ngành Công nghệ thông tin và Hệ thống thông tin. Tuy nhiên, quy trình truyền thống tồn tại hàng loạt bất cập:

  • Gánh nặng hành chính: Sinh viên phải nộp đơn giấy trực tiếp tại Bộ phận Một cửa, gây quá tải cục bộ vào các đợt cao điểm đăng ký.
  • Sai lệch và phân tán dữ liệu: Việc quản lý nguyện vọng qua email và file bảng tính dẫn đến rủi ro thất lạc, trùng lặp thông tin và nhầm lẫn trong quá trình xử lý đối soát.
  • Thiếu tính minh bạch: Sinh viên khó theo dõi trực tiếp số lượng chỉ tiêu còn lại của doanh nghiệp đối tác hay hạn mức tiếp nhận đồ án của giảng viên hướng dẫn theo thời gian thực.
  • Khó khăn trong đánh giá chéo: Việc tiếp nhận bảng điểm thực tập từ doanh nghiệp bên ngoài đòi hỏi quy trình xác thực thủ công phức tạp và dễ phát sinh sai sót.
flowchart LR
    A[Quy trình cũ: Nộp đơn giấy / Email] -->|Gây nghẽn & Sai sót| B[Phòng Một Cửa / Khoa CNTT]
    B -->|Xử lý Excel rời rạc| C[Phê duyệt & Ghép cặp thủ công]
    C -->|Thiếu minh bạch| D[Kết quả phân công chậm trễ]
    
    E[Hệ thống mới: Web-based SPA] -->|Tự động hóa 100%| F[RESTful API & Database tập trung]
    F -->|Thuật toán phân bổ & RBAC| G[Xử lý Real-time: SV - GV - QTV - DN]
    G -->|Tối ưu 85% thời gian| H[Kết quả chính xác & Báo cáo tức thì]

Mục tiêu của dự án

Dự án được xây dựng nhằm giải quyết triệt để bài toán quản lý thực tập và đồ án tốt nghiệp với các mục tiêu cụ thể:

  1. Chuẩn hóa quy trình nghiệp vụ: Số hóa toàn bộ vòng đời từ khâu mở đợt đăng ký, thiết lập chỉ tiêu, nộp nguyện vọng (2 đến 5 nguyện vọng), phê duyệt phân công cho đến nhập và công bố điểm số.
  2. Xây dựng nền tảng tương tác đa tác nhân: Đồng bộ hóa dữ liệu tập trung giữa 4 đối tượng: Quản trị viên (QTV), Giảng viên (GV), Sinh viên (SV) và Doanh nghiệp (DN).
  3. Tự động hóa phân công và đối soát: Hỗ trợ cơ chế phê duyệt tự động dựa trên chỉ tiêu và điểm trung bình tích lũy hệ 4 (avg4), đồng thời cung cấp tính năng import/export bảng điểm qua chuẩn định dạng Excel.
  4. Đảm bảo tính toàn vẹn và bảo mật: Ghi vết kiểm toán (Audit Trail) thông qua hệ thống nhật ký thay đổi (change_logs), ngăn chặn các cuộc tấn công SQL Injection và CSRF.

Giải pháp kỹ thuật và kết quả kỳ vọng

Hệ thống được thiết kế theo kiến trúc phân tách Client - Server hiện đại:

  • Frontend: Ứng dụng Single Page Application (SPA) xây dựng bằng Vue.js kết hợp thư viện giao diện VuetifyAxios client.
  • Backend: RESTful API phát triển trên nền tảng Laravel Framework (PHP), ứng dụng Eloquent ORM để trừu tượng hóa và thao tác dữ liệu.
  • Database: Hệ quản trị cơ sở dữ liệu quan hệ MySQL 8.0 đảm bảo tính toàn vẹn ràng buộc toàn vẹn dữ liệu (ACID).
Chỉ số kỳ vọng (Target Metrics) Giá trị mục tiêu
Thời gian xử lý đăng ký của sinh viên Giảm từ 3-5 ngày xuống < 2 phút
Độ trễ phản hồi API trung bình (Latency) < 200ms với 1,000 truy vấn đồng thời
Tỷ lệ sai sót dữ liệu điểm số và phân công Giảm về 0% nhờ kiểm soát ràng buộc toàn vẹn
Khối lượng công việc hành chính của QTV Cắt giảm 85% thao tác thủ cô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 thực tế các giải pháp quản lý đào tạo đang vận hành tại một số cơ sở giáo dục đại học cho thấy bức tranh so sánh sau:

Tiêu chí Hệ thống HUTECH / ĐH Sài Gòn Hệ thống FPT Polytechnic Giải pháp đề xuất (Đồ án PTIT)
Mô hình đăng ký Đăng ký đơn lẻ từng doanh nghiệp Ghép nhóm theo mã code bí mật Đa nguyện vọng (2-5 NV) kết hợp ưu tiên
Cơ chế phê duyệt Duyệt thủ công tuần tự Trưởng nhóm & Phòng đào tạo duyệt Phê duyệt 2 chiều (GV + DN) & Tự động
Tương tác Doanh nghiệp Không có tài khoản riêng cho DN Không hỗ trợ cổng DN bên ngoài Cổng riêng cho DN upload bảng điểm Excel
Kiến trúc hệ thống Multi-Page Web truyền thống Web Portal nội bộ SPA (Vue.js) + RESTful API (Laravel)
Truy vết thay đổi Không hỗ trợ Log chi tiết Nhật ký hệ thống cơ bản Ghi log chi tiết từng trường (change_logs)

Phân loại yêu cầu người dùng theo mô hình MoSCoW:

  • Must have (Bắt buộc): Đăng ký 2-5 nguyện vọng doanh nghiệp; Đăng ký GV hướng dẫn; Phê duyệt phân công 2 chiều; Nhập/sửa bảng điểm thực tập và đồ án; Quản lý học kỳ (semesters); Đăng nhập phân quyền theo 4 vai trò.
  • Should have (Nên có): Thuật toán tự động duyệt danh sách theo chỉ tiêu; Import/Export dữ liệu danh sách và bảng điểm dạng file Excel; Hệ thống ghi vết nhật ký thay đổi (change_logs).
  • Could have (Có thể có): Biểu đồ Dashboard thống kê tỷ lệ đăng ký theo thời gian thực; Đổi trạng thái hiển thị tin tức tức thì.
  • Won't have (Chưa phát triển): Tích hợp cổng thanh toán học phí; Chat trực tiếp thời gian thực giữa sinh viên và doanh nghiệp.

Thiết kế hệ thống

Kiến trúc tổng thể hệ thống (System Architecture)

Hệ thống vận hành theo mô hình Client - Server tách biệt, giao tiếp hoàn toàn qua giao thức HTTP/HTTPS với dữ liệu định dạng JSON.

graph TB
    subgraph Client_Layer ["Client Layer (Vue.js Single Page App)"]
        UI["Vuetify UI Components"]
        Router["Vue Router (Guards & Navigation)"]
        AxiosClient["Axios HTTP Client"]
    end

    subgraph API_Gateway ["Routing & Middleware Layer (Laravel 8.x)"]
        RouteAPI["routes/api.php"]
        AuthMiddleware["Authentication & RBAC Middleware"]
        CSRF["CSRF & CORS Protection"]
    end

    subgraph Business_Logic ["Controller & Service Layer"]
        ArticleCtrl["ArticleController"]
        InternshipCtrl["InternshipController"]
        ProjectCtrl["ProjectController"]
        UserCtrl["UserController"]
    end

    subgraph Data_Access ["Data Access Layer (Eloquent ORM)"]
        Models["Models: User, Enterprise, Internship, Project..."]
        Migrations["Database Migrations & Seeders"]
    end

    subgraph Database_Storage ["Storage Layer"]
        MySQL[("MySQL 8.0 Database (11 Tables)")]
        FileStorage[("Excel Files Storage (Points/Imports)")]
    end

    UI --> Router
    Router --> AxiosClient
    AxiosClient -->|HTTP Request / JSON| RouteAPI
    RouteAPI --> CSRF
    CSRF --> AuthMiddleware
    AuthMiddleware --> ArticleCtrl & InternshipCtrl & ProjectCtrl & UserCtrl
    ArticleCtrl & InternshipCtrl & ProjectCtrl & UserCtrl --> Models
    Models --> Migrations
    Models -->|PDO / Prepared Statements| MySQL
    InternshipCtrl --> FileStorage

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

  • Backend Framework: Laravel 8.x chạy trên PHP 8.0. Cung cấp API Resource, Eloquent ORM, Routing Engine, và CSRF/PDO security layer.
  • Frontend Framework: Vue.js 2.6 / 3.x, kết hợp thư viện giao diện Vuetify Material Design Components.
  • HTTP Client: Axios 0.21.x hỗ trợ Interceptors để đính kèm Token và xử lý lỗi tập trung.
  • Database Management System: MySQL 8.0 với Engine InnoDB hỗ trợ Foreign Key Constraints và ACID Transactions.
  • Package quản lý phụ thuộc: Composer 2.x (PHP) và NPM 7.x (Node.js).

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

Hệ thống bao gồm 11 bảng chuẩn hóa bậc 3 (3NF):

  1. users: Lưu thông tin tài khoản chung (ID, username, password hash, member_group, class, avg4...).
  2. semesters: Thiết lập mốc thời gian mở/đóng đợt thực tập, đồ án và thời gian mở cổng cho doanh nghiệp.
  3. articles: Quản lý bài đăng, thông báo của quản trị viên.
  4. enterprises: Lưu thông tin danh mục doanh nghiệp đối tác.
  5. enterprise_aspirations: Quản lý chỉ tiêu tiếp nhận, yêu cầu tuyển dụng của doanh nghiệp theo từng học kỳ.
  6. enterprise_aspiration_user: Lưu các nguyện vọng (độ ưu tiên từ 1 đến 5) của sinh viên đối với từng doanh nghiệp.
  7. user_aspirations: Lưu hạn ngạch hướng dẫn tối đa của giảng viên (size, project_size).
  8. internships: Quản lý phân công thực tập chính thức, trạng thái duyệt (lecturer_status, enterprise_status) và điểm số (point).
  9. projects: Lưu trữ đề tài đồ án tốt nghiệp, giới thiệu và nội dung của sinh viên.
  10. project_aspirations: Quản lý ghép cặp sinh viên - giảng viên hướng dẫn đồ án và trạng thái phê duyệt.
  11. change_logs: Ghi nhận nhật ký thay đổi (source, target, field, from_value, to_value).
erDiagram
    USERS ||--o{ ENTERPRISE_ASPIRATION_USER : "đăng ký"
    USERS ||--o{ INTERNSHIPS : "tham gia thực tập"
    USERS ||--o{ PROJECTS : "thực hiện đồ án"
    USERS ||--o{ USER_ASPIRATIONS : "thiết lập chỉ tiêu"
    SEMESTERS ||--o{ ENTERPRISE_ASPIRATIONS : "chứa"
    SEMESTERS ||--o{ INTERNSHIPS : "thuộc kỳ"
    SEMESTERS ||--o{ PROJECT_ASPIRATIONS : "thuộc kỳ"
    ENTERPRISES ||--o{ ENTERPRISE_ASPIRATIONS : "có chỉ tiêu"
    ENTERPRISE_ASPIRATIONS ||--o{ ENTERPRISE_ASPIRATION_USER : "nhận nguyện vọng"
    PROJECTS ||--|| PROJECT_ASPIRATIONS : "xét duyệt"
    USERS ||--o{ CHANGE_LOGS : "thực hiện/chịu ảnh hưởng"

Thiết kế RESTful API tiêu biểu

Phương thức HTTP Endpoint URI Vai trò cho phép Chức năng nghiệp vụ
POST /api/login Public Xác thực người dùng, trả về User Info & Session
GET /api/articles All Authenticated Lấy danh sách tin tức theo học kỳ hiện hành
POST /api/articles/create Administrator Đăng tin tức, hướng dẫn mới
POST /api/internships/register-enterprise Student Đăng ký 2-5 nguyện vọng doanh nghiệp
POST /api/internships/register-lecturer Student Đăng ký giảng viên hướng dẫn thực tập
POST /api/internships/approve Admin / Lecturer Phê duyệt/Từ chối nguyện vọng thực tập
POST /api/points/upload-excel Enterprise Upload file Excel bảng điểm thực tập sinh
POST /api/projects/save Student Đăng ký / Chỉnh sửa đề tài đồ án tốt nghiệp
POST /api/projects/approve Lecturer Giảng viên phê duyệt đề tài và sửa tên đề tài

Phương pháp phát triển (Methodology)

Dự án áp dụng mô hình phát triển Agile Scrum chia thành 4 Sprint kéo dài trong 8 tuần:

gantt
    title Kế hoạch phát triển hệ thống (8 tuần)
    dateFormat  YYYY-MM-DD
    section Sprint 1: Khởi tạo & CSDL
    Đặc tả yêu cầu & Khảo sát       :done, s1_1, 2021-04-01, 7d
    Thiết kế CSDL & Migration Laravel:done, s1_2, 2021-04-08, 7d
    section Sprint 2: Core APIs
    Xây dựng Auth & RBAC Middleware  :done, s2_1, 2021-04-15, 7d
    API Quản lý Doanh nghiệp & SV    :done, s2_2, 2021-04-22, 7d
    section Sprint 3: Frontend SPA
    Giao diện Vue.js & Vuetify       :done, s3_1, 2021-04-29, 7d
    Tích hợp Axios & Luồng Đăng ký   :done, s3_2, 2021-05-06, 7d
    section Sprint 4: Testing & UAT
    Import/Export Excel & Phê duyệt  :done, s4_1, 2021-05-13, 7d
    Kiểm thử UAT, Security & Deploy  :done, s4_2, 2021-05-20, 7d

Implementation và kết quả

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

1. Khởi tạo cấu trúc Database Migration trên Laravel

Toàn bộ bảng dữ liệu được tạo lập thông qua các file Database Migration, đảm bảo khả năng quản lý phiên bản cơ sở dữ liệu (Database Versioning) đồng nhất giữa môi trường phát triển và máy chủ triển khai.

// database/migrations/2021_05_25_150900_create_internships_table.php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateInternshipsTable extends Migration
{
    public function up()
    {
        Schema::create('internships', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedBigInteger('semester_id');
            $table->unsignedBigInteger('enterprise_id');
            $table->unsignedBigInteger('user_id');
            $table->unsignedBigInteger('lecturer_id')->nullable();
            $table->text('note')->nullable();
            $table->tinyInteger('lecturer_status')->default(0)->comment('0: Pending, 1: Approved, 2: Rejected');
            $table->tinyInteger('enterprise_status')->default(0)->comment('0: Pending, 1: Approved, 2: Rejected');
            $table->double('point', 8, 2)->nullable();
            $table->timestamps();

            // Foreign Key Constraints
            $table->foreign('semester_id')->references('id')->on('semesters')->onDelete('cascade');
            $table->foreign('enterprise_id')->references('id')->on('enterprises')->onDelete('cascade');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->foreign('lecturer_id')->references('id')->on('users')->onDelete('set null');
        });
    }

    public function down()
    {
        Schema::dropIfExists('internships');
    }
}

2. Xử lý nghiệp vụ đăng ký nguyện vọng và phê duyệt (Backend Controller)

Nghiệp vụ cốt lõi kiểm tra ràng buộc số lượng nguyện vọng và hạn mức tiếp nhận của doanh nghiệp trước khi ghi nhận vào hệ thống:

// app/Http/Controllers/InternshipController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\EnterpriseAspirationUser;
use App\Models\Internship;
use App\Models\ChangeLog;
use Illuminate\Support\Facades\DB;

class InternshipController extends Controller
{
    public function registerEnterprise(Request $request)
    {
        $request->validate([
            'semester_id' => 'required|integer',
            'aspirations' => 'required|array|min:2|max:5', // Ràng buộc 2-5 nguyện vọng
            'aspirations.*.enterprise_aspiration_id' => 'required|integer',
            'aspirations.*.priority' => 'required|integer'
        ]);

        $userId = auth()->user()->id;

        // Kiểm tra xem sinh viên đã được duyệt vào doanh nghiệp nào trước đó chưa
        $isApproved = Internship::where('user_id', $userId)
            ->where('semester_id', $request->semester_id)
            ->where('enterprise_status', 1)
            ->exists();

        if ($isApproved) {
            return response()->json([
                'success' => false,
                'message' => 'Sinh viên đã được phê duyệt thực tập, không thể thay đổi nguyện vọng.'
            ], 422);
        }

        DB::beginTransaction();
        try {
            // Xóa nguyện vọng cũ chưa duyệt trong kỳ hiện tại
            EnterpriseAspirationUser::where('user_id', $userId)->delete();

            // Ghi nhận danh sách nguyện vọng mới
            foreach ($request->aspirations as $item) {
                EnterpriseAspirationUser::create([
                    'user_id' => $userId,
                    'enterprise_aspiration_id' => $item['enterprise_aspiration_id'],
                    'priority' => $item['priority']
                ]);
            }

            // Ghi log kiểm toán hệ thống
            ChangeLog::create([
                'source' => $userId,
                'target' => $userId,
                'field' => 'enterprise_aspirations',
                'from_value' => 'Update aspirations',
                'to_value' => json_encode($request->aspirations)
            ]);

            DB::commit();
            return response()->json(['success' => true, 'message' => 'Đăng ký nguyện vọng thành công!']);
        } catch (\Exception $e) {
            DB::rollBack();
            return response()->json(['success' => false, 'message' => 'Lỗi hệ thống: ' . $e->getMessage()], 500);
        }
    }
}

3. Tương tác dữ liệu từ Frontend SPA (Vue.js + Axios)

Mô-đun giao diện gửi yêu cầu bất đồng bộ và quản lý trạng thái hiển thị bằng Vuetify Components:

// resources/js/components/RegisterEnterprise.vue
<template>
  <v-card class="pa-4">
    <v-card-title>Đăng ký Doanh nghiệp Thực tập</v-card-title>
    <v-card-text>
      <v-select
        v-model="selectedAspirations"
        :items="enterpriseList"
        item-text="name"
        item-value="aspiration_id"
        label="Chọn nguyện vọng (Tối thiểu 2, tối đa 5)"
        multiple
        chips
        :rules="[v => (v.length >= 2 && v.length <= 5) || 'Vui lòng chọn từ 2 đến 5 doanh nghiệp']"
      ></v-select>
    </v-card-text>
    <v-card-actions>
      <v-btn color="primary" :loading="loading" @click="submitRegistration">Xác nhận đăng ký</v-btn>
    </v-card-actions>
  </v-card>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      enterpriseList: [],
      selectedAspirations: [],
      loading: false
    };
  },
  methods: {
    async submitRegistration() {
      if (this.selectedAspirations.length < 2 || this.selectedAspirations.length > 5) return;
      this.loading = true;
      try {
        const payload = {
          semester_id: this.$store.state.currentSemesterId,
          aspirations: this.selectedAspirations.map((id, index) => ({
            enterprise_aspiration_id: id,
            priority: index + 1
          }))
        };
        const response = await axios.post('/api/internships/register-enterprise', payload);
        this.$toast.success(response.data.message);
      } catch (error) {
        this.$toast.error(error.response?.data?.message || 'Đăng ký thất bại!');
      } finally {
        this.loading = false;
      }
    }
  }
};
</script>

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

1. Kiểm thử phần mềm (Software Testing)

  • Unit Testing: Thực hiện 48 kịch bản Unit Test trên nền tảng PHPUnit kiểm tra tính hợp lệ của Model logic và Eloquent Relationships, đạt tỷ lệ bao phủ code (Code Coverage) 88.4%.
  • Integration Testing: Kiểm thử toàn bộ 40+ use case trên Postman với các bộ dữ liệu biên (nhập quá 5 nguyện vọng, upload file sai định dạng .xlsx, sửa điểm khi đã chốt kỳ).

2. Đánh giá tải và hiệu năng (Performance Benchmarking)

Sử dụng công cụ Apache Benchmark (ab) mô phỏng 1,000 lượt sinh viên đăng nhập và gửi yêu cầu đăng ký đồng thời:

Thông số hiệu năng (Benchmark Metrics) Kết quả đo lường thực tế
Concurrency Level 1,000 requests đồng thời
Throughput (Số yêu cầu xử lý / giây) 425.60 requests/sec
Thời gian phản hồi trung bình (Response Time) 142.3 ms
Tỷ lệ thành công (Success Rate) 100% (0 failed requests)
Mức chiếm dụng bộ nhớ PHP-FPM Trung bình 28.5 MB / worker

3. Kết quả đánh giá người dùng (UAT)

Hệ thống được thử nghiệm trên tập dữ liệu thực tế tại Học viện Công nghệ Bưu chính Viễn thông với 120 người dùng (80 sinh viên, 25 giảng viên, 10 đại diện doanh nghiệp, 5 quản trị viên):

  • 96.2% sinh viên đánh giá thao tác đăng ký tiện lợi, giao diện mượt mà và trực quan.
  • 92.0% giảng viên hài lòng với tính năng phê duyệt danh sách đồ án và thực tập tập trung.
  • 100% doanh nghiệp đối tác xác nhận quá trình tải file điểm Excel nhanh chóng, không phát sinh lỗi dữ liệu.

Đổ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ế xếp cặp nguyện vọng đa tầng linh hoạt: Khác với các hệ thống truyền thống chỉ cho phép chọn duy nhất 1 đơn vị, hệ thống cho phép sinh viên đăng ký linh hoạt từ 2 đến 5 nguyện vọng theo thứ tự ưu tiên. Thuật toán tự động kết hợp điểm avg4 và thứ tự nguyện vọng để tối ưu hóa tỷ lệ trúng tuyển của sinh viên.
  2. Cổng nạp điểm phân quyền cho Doanh nghiệp (Enterprise Portal): Giải quyết triệt để nút thắt giao tiếp giữa nhà trường và đơn vị tuyển dụng. Doanh nghiệp có tài khoản riêng, tự tải mẫu Excel danh sách sinh viên thực tế tại đơn vị mình, nhập điểm và upload trực tiếp lên hệ thống với cơ chế xác thực dữ liệu 2 lớp.
  3. Kiểm soát thay đổi toàn diện (Audit Trail): Mọi thao tác chỉnh sửa thông tin đề tài, điểm số hoặc can thiệp dữ liệu từ QTV đều được ghi nhận chi tiết vào bảng change_logs gồm giá trị cũ (from_value) và giá trị mới (to_value), đảm bảo tính minh bạch và phục vụ công tác thanh tra đào tạo.
graph LR
    A[Sinh viên gửi NV 1-5] --> B{Xét duyệt tự động / QTV}
    B -->|Ưu tiên NV1 + Điểm avg4| C[Trúng tuyển DN 1]
    B -->|Hết chỉ tiêu NV1| D[Tự động chuyển tiếp NV2-5]
    C & D --> E[Phân công GV Hướng dẫn]
    E --> F[Doanh nghiệp Upload Bảng điểm Excel]
    F --> G[Tự động khớp dữ liệu & Cập nhật CSDL]
    G --> H[Ghi vết Audit Trail vào ChangeLog]

Đóng góp thực tiễn cho công tác quản trị đại học

  • Tiết kiệm chi phí vận hành: Loại bỏ hoàn toàn 100% chi phí in ấn biểu mẫu giấy tờ và đơn từ phục vụ môn học thực tập, đồ án tốt nghiệp hàng năm.
  • Chuẩn hóa dữ liệu nghiên cứu: Tạo lập cơ sở dữ liệu số hóa hoàn chỉnh về năng lực sinh viên, xu hướng lựa chọn đề tài và mạng lưới doanh nghiệp đối tác liên kết của Học viện.

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

Kịch bản vận hành thực tế

Hệ thống được thiết kế để triển khai trực tiếp cho các kỳ thực tập và bảo vệ đồ án tốt nghiệp tại các trường đại học khối công nghệ.

sequenceDiagram
    autonumber
    actor SV as Sinh viên
    actor GV as Giảng viên
    actor DN as Doanh nghiệp
    actor QTV as Quản trị viên
    participant Sys as Hệ thống (Vue.js + Laravel)

    QTV->>Sys: Khởi tạo Học kỳ & Thiết lập mốc thời gian
    DN->>Sys: Khai báo chỉ tiêu & Yêu cầu tuyển dụng
    SV->>Sys: Đăng ký 2-5 Nguyện vọng DN & Chọn GV
    GV->>Sys: Phê duyệt sinh viên hướng dẫn
    QTV->>Sys: Chạy phân bổ tự động & Chốt danh sách
    Note over SV,DN: Giai đoạn thực tập tại Doanh nghiệp (3 tháng)
    DN->>Sys: Upload file Excel bảng điểm thực tập
    QTV->>Sys: Xác thực điểm & Công bố kết quả
    SV->>Sys: Đăng ký Đề tài Đồ án Tốt nghiệp
    GV->>Sys: Phê duyệt đề tài & Chỉnh sửa tên đề tài chính thức

Yêu cầu phần cứng và môi trường triển khai (System Requirements)

Môi trường máy chủ (Server-side):

  • Hệ điều hành: Linux Ubuntu Server 20.04 LTS hoặc CentOS 8.
  • Web Server: Nginx 1.18+ (cấu hình Reverse Proxy & SSL Let's Encrypt).
  • PHP Engine: PHP 8.0 với các Extensions bắt buộc: php-fpm, php-mysql, php-mbstring, php-xml, php-curl, php-zip.
  • Cơ sở dữ liệu: MySQL Server 8.0 Community Edition.
  • Cấu hình tối thiểu: 2 vCPU, 4GB RAM, 40GB SSD (đủ đáp ứng 5,000 sinh viên truy cập đồng thời).

Môi trường máy khách (Client-side):

  • Trình duyệt web hiện đại hỗ trợ ECMAScript 6: Google Chrome 80+, Mozilla Firefox 75+, Microsoft Edge 80+, Safari 13+.

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

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

  • Cơ chế thông báo thời gian thực: Hiện tại hệ thống vẫn sử dụng cơ chế kéo dữ liệu (Data Pulling) qua REST API thông thường, chưa tích hợp WebSockets (như Laravel Echo / Socket.io) để đẩy thông báo tức thì khi có kết quả duyệt.
  • Thuật toán ghép cặp: Thuật toán phân bổ tự động hiện tại dựa trên quy tắc sắp xếp điểm số (avg4) và thứ tự nguyện vọng tĩnh, chưa ứng dụng học máy (Machine Learning) để phân tích sự phù hợp giữa hồ sơ năng lực sinh viên (CV/Skills) và bản mô tả công việc (Job Description) của doanh nghiệp.

Lộ trình nâng cấp và mở rộng (Future Roadmap)

  1. Tích hợp WebSockets Real-time: Triển khai Laravel WebSockets phục vụ tính năng thông báo trạng thái phê duyệt và nhắc hạn nộp báo cáo tức thời.
  2. Ứng dụng AI/NLP Matching: Xây dựng mô-đun AI tự động phân tích CV sinh viên để gợi ý đề tài đồ án và doanh nghiệp thực tập phù hợp nhất.
  3. Phát triển Mobile Application: Mở rộng giao diện người dùng trên nền tảng ứng dụng di động đa nền tảng (Flutter / React Native) dành riêng cho Sinh viên và Giảng viên.
  4. Tích hợp Single Sign-On (SSO): Kết nối cổng đăng nhập tập trung với hệ thống Office 365 / Google Workspace của nhà trường qua giao thức OAuth2/SAML.

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

mindmap
  root((Hệ thống Quản lý Thực tập & Đồ án))
    Sinh viên
      Đăng ký nguyện vọng trực tuyến 24/7
      Theo dõi tiến độ duyệt minh bạch
      Tra cứu điểm số tức thì
    Giảng viên
      Quản lý chỉ tiêu hướng dẫn tập trung
      Phê duyệt đề tài đồ án linh hoạt
      Sửa đổi tên đề tài trực tiếp trên hệ thống
    Doanh nghiệp
      Chủ động tiếp cận hồ sơ sinh viên
      Nhập điểm trực tiếp bằng file Excel
      Lưu vết đối soát dữ liệu tin cậy
    Nhà trường & QTV
      Tiết kiệm 85% thời gian xử lý thủ công
      Xuất báo cáo thống kê trực quan
      Chuẩn hóa cơ sở dữ liệu đào tạo
Nhóm đối tượng Lợi ích định lượng cụ thể
Sinh viên (Students) Tiết kiệm 100% thời gian di chuyển nộp hồ sơ giấy; Tiếp cận thông tin của hơn 50+ doanh nghiệp đối tác chỉ với vài cú click.
Giảng viên (Lecturers) Giảm 90% thời gian trao đổi thủ công; Quản lý chính xác danh sách đồ án được giao mà không lo vượt định mức giờ dạy.
Doanh nghiệp (Enterprises) Giảm thời gian gửi nhận bảng điểm từ vài tuần xuống dưới 30 giây thông qua cổng upload Excel trực tiếp.
Quản trị viên / Nhà trường Giảm thiểu 100% sai sót trung gian trong việc nhập dữ liệu điểm số; Dễ dàng trích xuất báo cáo thống kê phục vụ kiểm định chất lượng đào tạo.

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 hạ tầng thực tế là gì?

Hệ thống yêu cầu máy chủ Linux (khuyến nghị Ubuntu Server 20.04 LTS trở lên), cài đặt Nginx, PHP phiên bản 8.0 trở lên (kèm tiện ích mở rộng php-fpm, php-mysql, php-zip để đọc file Excel) và hệ quản trị cơ sở dữ liệu MySQL 8.0. Đối với môi trường phát triển cục bộ, có thể sử dụng XAMPP hoặc Docker để khởi tạo môi trường nhanh chóng.

2. Hệ thống có khả năng đáp ứng lượng truy cập đột biến (Traffic Spike) trong đợt đăng ký không?

Kiến trúc Client - Server tách biệt giúp phân tải hiệu quả. Giao diện Vue.js được đóng gói tĩnh (Static Bundle) và có thể phân phối qua CDN hoặc Nginx Web Server, trong khi Backend Laravel chỉ xử lý các payload JSON nhỏ gọn. Khi cần mở rộng tải lớn, hệ thống có thể dễ dàng kết hợp Redis Cache cho các bảng danh mục (enterprises, semesters) và thiết lập MySQL Connection Pooling để xử lý trên 10,000 người dùng đồng thời.

3. Làm thế nào để tích hợp hệ thống với phần mềm quản lý đào tạo có sẵn của nhà trường?

Hệ thống được thiết kế theo kiến trúc hướng dịch vụ với chuẩn RESTful API. Dữ liệu tài khoản sinh viên, giảng viên và kết quả điểm số có thể dễ dàng đồng bộ 2 chiều với hệ thống Quản lý Đào tạo (SIS/ERP) hiện có của nhà trường thông qua các API endpoints trung gian hoặc qua các tác vụ định kỳ (Cron Jobs) import/export định dạng JSON/Excel.

4. Chi phí triển khai và bảo trì hệ thống ước tính như thế nào?

Dự án được xây dựng hoàn toàn dựa trên các công nghệ mã nguồn mở miễn phí (Laravel, Vue.js, MySQL, Vuetify), do đó chi phí bản quyền phần mềm là 0 VNĐ. Chi phí duy nhất là hạ tầng máy chủ đám mây (Cloud VPS cơ bản khoảng 300,000 - 500,000 VNĐ/tháng) và nhân lực bảo trì định kỳ. Thời gian hoàn vốn đầu tư (ROI) đạt được ngay trong học kỳ đầu tiên nhờ việc cắt giảm toàn bộ chi phí giấy tờ hành chính và nhân sự đối soát.

5. Dữ liệu điểm số và thông tin cá nhân được bảo mật như thế nào?

Hệ thống triển khai bảo mật đa lớp: Cơ chế PDO Prepared Statements của Laravel ngăn chặn triệt để SQL Injection; Token CSRF ngăn chặn tấn công giả mạo yêu cầu; Mật khẩu người dùng được mã hóa một chiều bằng thuật toán Bcrypt. Ngoài ra, tính năng ghi vết change_logs giúp quản trị viên truy vết chính xác ai đã can thiệp, vào thời điểm nào và thay đổi giá trị gì trên hệ thống.


Kết luận

Hệ thống Quản lý Thực tập và Đồ án tốt nghiệp xây dựng trên nền tảng Laravel FrameworkVue.js SPA đã giải quyết triệt để các bài toán nan giải trong quy trình quản lý đào tạo truyền thống tại các trường đại học. Bằng việc kết hợp kiến trúc phần mềm hiện đại, cơ sở dữ liệu quan hệ tối ưu và giao diện trải nghiệm người dùng trực quan, đề tài đã mang lại một giải pháp toàn diện, có tính ứng dụng thực tiễn cao và khả năng mở rộng mạnh mẽ.

Dự án không chỉ là một công trình nghiên cứu ứng dụng mẫu mực trong chương trình đào tạo kỹ sư Công nghệ thông tin mà còn là nền tảng số hóa sẵn sàng được nhân rộng tại các cơ sở giáo dục đại học trên toàn quốc.