Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số giáo dục đại học (EdTech), việc quản lý quy trình đào tạo và đánh giá kết quả tốt nghiệp đòi hỏi tính chuẩn hóa, bảo mật và khả năng theo dõi tiến độ theo thời gian thực (real-time tracking). Theo các khảo sát quản lý đào tạo nội bộ, hơn 65% các khoa công nghệ thông tin tại các trường đại học vẫn còn phụ thuộc vào các kênh rời rạc như mạng xã hội (Zalo, Facebook), email và bảng tính Excel thủ công để quản lý đồ án tốt nghiệp. Phương thức này gây ra tình trạng phân mảnh thông tin, trôi tin nhắn phản hồi, thất lạc các phiên bản báo cáo (version control) và thiếu hụt dữ liệu thống kê tổng thể cho ban chủ nhiệm khoa.

Đề tài "Xây dựng hệ thống quản lý quá trình thực hiện đề tài đồ án tốt nghiệp và thực tập tốt nghiệp cho sinh viên Khoa Công nghệ thông tin, Trường Đại học Hải Phòng" do sinh viên Đặng Văn Quang thực hiện dưới sự hướng dẫn khoa học của PGS.TS Lê Đắc Nhường được triển khai nhằm giải quyết trực tiếp các điểm nghẽn nghiệp vụ trên.

+-----------------------------------------------------------------------------------+
|               QUY TRÌNH QUẢN LÝ ĐỒ ÁN TỐT NGHIỆP TRỰC TUYẾN                       |
|                                                                                   |
|  [Giảng viên]  ---> Khởi tạo danh sách Đề tài theo Đợt xét tốt nghiệp             |
|       |                                                                           |
|       v                                                                           |
|  [Sinh viên]   ---> Đăng ký Đề tài / Đề xuất đổi tên Đề tài (GV phê duyệt)        |
|       |                                                                           |
|       v                                                                           |
|  [Thực hiện]   ---> Nộp các Phiên bản Báo cáo (Versioning) & Cập nhật Tiến độ (%) |
|       |                                                                           |
|       v                                                                           |
|  [Tương tác]   ---> Giảng viên đánh giá, gửi Bình luận, Nhận xét trực tiếp        |
|       |                                                                           |
|       v                                                                           |
|  [Hội đồng]    ---> Quản trị viên (Admin) thành lập Hội đồng chấm & Phân công     |
+-----------------------------------------------------------------------------------+

Mục tiêu dự án

  1. Số hóa 100% quy trình đăng ký và quản lý đề tài: Xóa bỏ hoàn toàn thao tác đăng ký thủ công qua biểu mẫu giấy hoặc tệp Excel rời rạc.
  2. Theo dõi tiến độ và quản lý phiên bản tài liệu (Document Versioning): Cung cấp cơ chế lưu trữ lịch sử nộp bài, nhật ký chỉnh sửa và theo dõi phần trăm hoàn thành đồ án minh bạch giữa giảng viên và sinh viên.
  3. Phân quyền truy cập đa vai trò (Role-Based Access Control - RBAC): Đảm bảo kiểm soát bảo mật chặt chẽ giữa 3 nhóm tác nhân chính: Quản trị viên (Admin), Giảng viên hướng dẫn (Lecturer) và Sinh viên (Student).
  4. Tự động hóa quản lý hội đồng chấm và đợt xét tốt nghiệp: Hỗ trợ Khoa CNTT thiết lập đợt xét, phân bổ giảng viên vào hội đồng và xuất báo cáo tổng hợp.

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

  • Phạm vi ứng dụng: Áp dụng cho giảng viên, sinh viên các khóa thuộc Khoa Công nghệ thông tin - Trường Đại học Hải Phòng và liên kết cơ sở thực tập thực tế (VNPT IT Khu vực 4 - Chi nhánh Hải Phòng).
  • Giới hạn kỹ thuật: Hệ thống tập trung vào nền tảng Web Application, hỗ trợ định dạng tệp báo cáo chuẩn (.docx, .pdf, .zip), tích hợp xác thực mã hóa token và lưu trữ cơ sở dữ liệu quan hệ PostgreSQL.

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

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

Bảng so sánh phương thức quản lý truyền thống và hệ thống chuyên biệt:

Tiêu chí Phương thức truyền thống (Zalo/Excel/Drive) Hệ thống LMS chung (Moodle/Blackboard) Hệ thống quản lý đồ án chuyên biệt (Đề tài)
Quản lý phiên bản nộp bài Kém (dễ ghi đè, nhầm lẫn phiên bản) Trung bình (chỉ nộp theo bài tập) Rất cao (lưu vết từng phiên bản, commit log)
Quy trình duyệt đổi đề tài Thủ công (qua đơn vị, giấy tờ) Không hỗ trợ luồng nghiệp vụ riêng Khép kín (Sinh viên gửi -> Giảng viên duyệt)
Tổ chức Hội đồng chấm Lập danh sách trên Excel thủ công Phức tạp, khó cấu hình phân ban Chuyên biệt hóa theo đợt xét và phân quyền
Bảo mật & Phân quyền Thấp (công khai trong nhóm chat) Cao nhưng cồng kềnh Tối ưu hóa theo vai trò sinh viên/giảng viên
Thời gian truy xuất dữ liệu > 15 phút (tìm kiếm lịch sử chat) 3 - 5 phút < 1 giây (tra cứu tức thì qua CSDL)

Phân tích yêu cầu theo mô hình MoSCoW

  • Must Have (Bắt buộc có):
    • Module xác thực phân quyền qua JWT Access Token.
    • Phân rã Use Case quản trị: Quản lý Khoa, Lớp, Sinh viên, Giảng viên, Đợt xét tốt nghiệp.
    • Luồng nghiệp vụ cốt lõi: Đăng ký đề tài, duyệt đổi tên đề tài, nộp phiên bản đồ án, cập nhật % tiến độ, bình luận phản hồi.
  • Should Have (Nên có):
    • Nhập dữ liệu hàng loạt danh sách sinh viên/giảng viên/đề tài qua định dạng Microsoft Excel (.xlsx).
    • Quản lý thông tin và cơ sở thực tập tốt nghiệp của sinh viên.
  • Could Have (Có thể mở rộng):
    • Dashboard phân tích số liệu trực quan bằng biểu đồ thống kê.
  • Won't Have (Chưa thực hiện trong phiên bản hiện tại):
    • Chấm điểm trực tuyến bằng chữ ký số và phòng họp hội đồng ảo tích hợp video conference.

Thiết kế hệ thống

Kiến trúc hệ thống được xây dựng theo mô hình phân lớp tách biệt Client - Server (Decoupled Architecture), giao tiếp thông qua giao thức RESTful API:

+----------------------------------------------------------------------+
|                     CLIENT LAYER (Angular 16+ SPA)                   |
|  [Admin Portal]       [Lecturer Workspace]       [Student Portal]    |
|  - Reactive Forms     - Route Guards (Auth)      - RxJS HTTP Client  |
+----------------------------------------------------------------------+
                                   |  HTTPS Requests (JSON / JWT)
                                   v
+----------------------------------------------------------------------+
|                 API GATEWAY & BUSINESS LAYER (ASP.NET Core WebAPI)   |
|  - Controllers: AuthController, TopicController, ProjectController   |
|  - Middlewares: Authentication, Exception Handling, CORS             |
|  - Services & DTOs: AutoMapper, FluentValidation                     |
|  - Data Access: Entity Framework Core (ORM)                          |
+----------------------------------------------------------------------+
                                   |  Npgsql Driver
                                   v
+----------------------------------------------------------------------+
|                     DATABASE LAYER (PostgreSQL 15)                   |
|  - Tables: Users, Students, Lecturers, Topics, Projects, Versions    |
|  - Relational Integrity: Foreign Keys, Indexes, Cascades             |
+----------------------------------------------------------------------+

Technology Stack & Thông số kỹ thuật

  • Frontend Framework: Angular v16.2.0 (Single Page Application - SPA), TypeScript 5.1, CSS3/SCSS, Bootstrap 5.
  • Backend Framework: C# ASP.NET Core 7.0 / 8.0 WebAPI (kiến trúc RESTful API, Repository Pattern).
  • Cơ sở dữ liệu (RDBMS): PostgreSQL 15.x kết hợp Entity Framework Core (EF Core 7.x) làm ORM.
  • Xác thực & Bảo mật: JSON Web Token (JWT) Access Token, thuật toán băm mật khẩu BCrypt hoặc PBKDF2, chuẩn hóa CORS Policy.
  • Công cụ phát triển: Visual Studio 2022, Visual Studio Code, pgAdmin 4, Postman API Tester.

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

Hệ thống chuẩn hóa dữ liệu theo dạng chuẩn 3NF với các thực thể chính:

  1. Users (Id, Username, PasswordHash, FullName, UserCode, Role, CreatedAt)
  2. Students (Id, StudentCode, FullName, DateOfBirth, PhoneNumber, Email, ClassId)
  3. Lecturers (Id, LecturerCode, FullName, Degree, PhoneNumber, Email, DepartmentId)
  4. GraduationBatches (Id, BatchCode, BatchName, AcademicYear, StartDate, EndDate)
  5. Topics (Id, TopicCode, TopicName, Description, LecturerId, BatchId, Status, Deadline)
  6. Projects (Id, ProjectCode, TopicId, StudentId, CurrentProgress, CouncilId, Status)
  7. ProjectVersions (Id, ProjectId, VersionNumber, FilePath, Note, ProgressPercentage, SubmittedAt)
  8. Councils (Id, CouncilCode, CouncilName, BatchId, Location, DefenseDate)
-- Trích đoạn cấu trúc bảng lưu trữ phiên bản đồ án tốt nghiệp
CREATE TABLE ProjectVersions (
    Id SERIAL PRIMARY KEY,
    ProjectId INT NOT NULL REFERENCES Projects(Id) ON DELETE CASCADE,
    VersionNumber VARCHAR(20) NOT NULL,
    FilePath VARCHAR(500) NOT NULL,
    ProgressPercentage INT CHECK (ProgressPercentage >= 0 AND ProgressPercentage <= 100),
    Note TEXT,
    SubmittedAt TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_project_versions_project_id ON ProjectVersions(ProjectId);

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 lặp linh hoạt (Agile - Scrum rút gọn) kết hợp thu thập số liệu thực địa:

  • Khảo sát nghiệp vụ: Thu thập tài liệu quy trình quản lý tốt nghiệp từ Khoa CNTT - Trường ĐH Hải Phòng và tham chiếu mô hình thực tập tại VNPT IT Hải Phòng.
  • Sprint 1 (Tuần 1-3): Phân tích yêu cầu, thiết kế biểu đồ ca sử dụng (Use Case Diagram), biểu đồ tuần tự (Sequence Diagram) và thiết kế Schema PostgreSQL.
  • Sprint 2 (Tuần 4-8): Xây dựng Backend API (.NET Core) cho module xác thực, quản lý danh mục (Khoa, Lớp, Người dùng) và quản trị Đợt tốt nghiệp.
  • Sprint 3 (Tuần 9-13): Xây dựng giao diện Frontend Angular, tích hợp luồng nghiệp vụ: Đăng ký đề tài, duyệt đổi tên đề tài, nộp phiên bản báo cáo và bình luận nhận xét.
  • Sprint 4 (Tuần 14-16): Kiểm thử hệ thống (Unit Test, Integration Test, UAT), đánh giá hiệu năng và triển khai môi trường staging.

Implementation và kết quả

Quá trình phát triển và Code Snippets

Hệ thống tuân thủ chặt chẽ nguyên tắc Clean Code và Dependency Injection trong .NET Core WebAPI.

1. Backend Controller: Quản lý phiên bản đồ án và cập nhật tiến độ (C# ASP.NET Core)

[Authorize]
[ApiController]
[Route("api/[controller]")]
public class ProjectController : ControllerBase
{
    private readonly IProjectService _projectService;
    public ProjectController(IProjectService projectService)
    {
        _projectService = projectService;
    }

    [HttpPost("{projectId}/versions")]
    [Authorize(Roles = "Student")]
    public async Task<IActionResult> UploadVersion(int projectId, [FromForm] UploadVersionDto dto)
    {
        if (dto.ProgressPercentage < 0 || dto.ProgressPercentage > 100)
        {
            return BadRequest(new { Message = "Tiến độ phải nằm trong khoảng từ 0% đến 100%." });
        }

        var result = await _projectService.AddNewVersionAsync(projectId, dto, User.Identity.Name);
        if (!result.IsSuccess)
        {
            return BadRequest(new { Message = result.ErrorMessage });
        }

        return Ok(new { Message = "Cập nhật phiên bản đồ án thành công.", Data = result.Data });
    }
}

2. Frontend Data Service: Tương tác API và quản lý Token (Angular TypeScript)

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { environment } from 'src/environments/environment';

export interface ProjectVersionModel {
  projectId: number;
  versionNumber: string;
  progressPercentage: number;
  note: string;
  file: File;
}

@Injectable({
  providedIn: 'root'
})
export class ProjectService {
  private readonly apiUrl = `${environment.apiBaseUrl}/api/project`;

  constructor(private http: HttpClient) {}

  uploadProjectVersion(data: ProjectVersionModel): Observable<any> {
    const formData = new FormData();
    formData.append('versionNumber', data.versionNumber);
    formData.append('progressPercentage', data.progressPercentage.toString());
    formData.append('note', data.note);
    formData.append('file', data.file);

    return this.http.post<any>(`${this.apiUrl}/${data.projectId}/versions`, formData);
  }
}

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

Hệ thống được kiểm thử toàn diện qua 3 tầng: Unit Testing (xUnit trên .NET), API Testing (Postman Test Scripts) và Kiểm thử chấp nhận người dùng (User Acceptance Testing - UAT).

+--------------------------------------------------------------------+
|               KẾT QUẢ KIỂM THỬ TẢI & ĐỘ TRỄ HỆ THỐNG               |
|                                                                    |
|  Yêu cầu đồng thời (Concurrency) : 500 RPS (Requests Per Second)  |
|  Thời gian phản hồi TB (Latency)  : 112 ms                         |
|  Tỷ lệ thành công (Success Rate)  : 99.85%                         |
|  Mức độ bao phủ kiểm thử (Coverage): 88.5% (Core Business Logic)    |
+--------------------------------------------------------------------+
  • Thống kê kiểm thử chức năng:

    • Thực hiện 48 Test Cases bao quát toàn bộ 14 kịch bản Use Case chính.
    • Tỷ lệ Pass đạt 100% sau 2 vòng kiểm thử hồi quy (Regression Testing).
    • Khắc phục triệt để 12 lỗi phát sinh (trong đó có 3 lỗi phân quyền token và 2 lỗi tải lên tệp lớn).
  • Kiểm thử hiệu năng (Benchmark Metrics):

    • Tải trang ban đầu (Initial Page Load): < 1.8 giây nhờ cấu hình Lazy Loading Module trong Angular.
    • Thời gian xử lý truy vấn API trung bình: 85ms - 130ms trên tập dữ liệu mô phỏng 5.000 sinh viên và 300 giảng viên.

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

Hệ thống hoàn thành 100% các tính năng đề ra theo đề cương nghiên cứu:

  1. Module Đăng nhập & Xác thực: Cấp phát JWT Token an toàn, tự động phân luồng giao diện theo vai trò (Admin/Lecturer/Student).
  2. Module Quản trị hệ thống: Quản lý Khoa, Lớp, Tài khoản, phân bổ Đợt xét tốt nghiệp và thành lập Hội đồng chấm thi.
  3. Module Quản lý Đề tài: Giảng viên đăng ký danh sách đề tài (hỗ trợ nhập Excel); Sinh viên duyệt danh sách, đăng ký trực tuyến hoặc đề xuất đổi tên đề tài với luồng phê duyệt 1 chạm từ giảng viên.
  4. Module Quản lý Đồ án & Tiến độ: Sinh viên tải lên các phiên bản đồ án (V1.0, V1.1,...), ghi chú tiến độ; Giảng viên xem chi tiết tài liệu, gửi phản hồi/bình luận trực tiếp ngay trên hệ thống.
  5. Module Quản lý Thực tập: Đăng ký và theo dõi thông tin cơ sở thực tập của sinh viên.

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

  1. Chuẩn hóa luồng tương tác 2 chiều (Bidirectional Interaction Framework): Khắc phục triệt để việc thất lạc thông tin phản hồi trên Zalo/Facebook bằng module bình luận tích hợp gắn liền với từng phiên bản đồ án.
  2. Kiểm soát phiên bản học thuật (Academic Document Versioning): Xây dựng cấu trúc dữ liệu lưu vết lịch sử nộp bài tương tự cơ chế Git thu gọn, giúp giảng viên so sánh sự tiến bộ giữa các bản thảo đồ án của sinh viên qua từng tuần.
  3. Cơ chế đề xuất đổi tên đề tài tự động hóa: Giảm thời gian phê duyệt thay đổi tên đề tài từ 3-5 ngày làm việc theo thủ tục giấy tờ truyền thống xuống còn dưới 1 phút trên môi trường số.
  4. Tối ưu hóa năng suất quản lý: Giảm 75% thời gian tổng hợp báo cáo cho ban thư ký khoa khi lập danh sách hội đồng chấm và theo dõi tiến độ toàn khóa.

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

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

Hệ thống được thiết kế phù hợp để tích hợp vào hạ tầng số của Khoa CNTT - Trường Đại học Hải Phòng:

[Khoa CNTT - Trường ĐH Hải Phòng]

Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit & ROI Analysis)

  • Chi phí hạ tầng tối thiểu: Nhờ sử dụng công nghệ mã nguồn mở hoàn toàn (PostgreSQL, .NET Core Linux Runtime, Angular), hệ thống có thể vận hành mượt mà trên một máy chủ VPS Cloud tiêu chuẩn (2 vCPU, 4GB RAM, chi phí ~250.000 - 400.000 VNĐ/tháng).
  • Hiệu quả kinh tế & xã hội: Tiết kiệm hàng ngàn trang in ấn báo cáo nháp, loại bỏ 100% chi phí giấy tờ hành chính và rút ngắn tổng thời gian xử lý thủ tục tốt nghiệp của giảng viên và ban chủ nhiệm khoa.

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

Hạn chế kỹ thuật

  • Chưa tích hợp cơ chế phát hiện đạo văn (Plagiarism Detection) tự động khi sinh viên tải tài liệu lên.
  • Chưa có thông báo đẩy theo thời gian thực (Real-time Push Notification) qua WebSockets/SignalR mà vẫn dựa trên cơ chế HTTP Polling/Reload.
  • Chưa hỗ trợ xem trước (Preview) trực tuyến các định dạng tệp phức tạp mà yêu cầu tải về máy cục bộ.

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

  1. Tích hợp SignalR: Xây dựng thông báo tức thời (Real-time notification) khi giảng viên nhận xét hoặc duyệt đề tài.
  2. Ứng dụng AI/NLP: Tự động phân tích tính tương đồng của tên đề tài nhằm tránh trùng lặp giữa các năm học.
  3. Mở rộng tích hợp SSO (Single Sign-On): Kết nối đồng bộ với hệ thống thông tin đào tạo (Portal ĐH Hải Phòng) qua chuẩn OAuth2/SAML.

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

  • Sinh viên Khoa CNTT: Tiếp cận môi trường làm việc đồ án chuyên nghiệp, nắm rõ tiến độ yêu cầu, nhận phản hồi kịp thời từ giảng viên mà không lo thất lạc báo cáo.
  • Giảng viên hướng dẫn: Quản lý tập trung toàn bộ sinh viên mình phụ trách trên một màn hình Dashboard duy nhất, dễ dàng theo dõi sự cải thiện của từng phiên bản tài liệu.
  • Ban Chủ nhiệm Khoa & Quản trị viên: Nắm bắt báo cáo thống kê tức thời (số lượng đề tài đã nhận, tiến độ chung của đợt xét), điều phối hội đồng chấm đồ án chính xác và khoa học.
  • Lập trình viên & Sinh viên nghiên cứu: Tài liệu tham khảo hoàn chỉnh về cách áp dụng Clean Architecture, RESTful API với C# .NET Core, Angular và hệ quản trị PostgreSQL trong bài toán quản lý thực tế.

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

1. Yêu cầu cấu hình phần cứng và phần mềm để triển khai hệ thống (System Requirements)?

  • Máy chủ (Server): Ubuntu Server 20.04/22.04 LTS hoặc Windows Server; cài đặt .NET Runtime 7.0/8.0, PostgreSQL 14+, Nginx/IIS làm Reverse Proxy. Phần cứng tối thiểu: 2 Core CPU, 4GB RAM, 20GB SSD lưu trữ.
  • Máy trạm (Client): Bất kỳ máy tính hoặc thiết bị di động có trình duyệt web hiện đại (Google Chrome, Microsoft Edge, Firefox, Safari) có hỗ trợ JavaScript/HTML5.

2. Hệ thống xử lý thế nào khi có hàng trăm sinh viên cùng đăng ký đề tài tại một thời điểm (Concurrency Handling)?

Hệ thống sử dụng cơ chế Database Transaction và ràng buộc khóa duy nhất (Unique Constraint) trong PostgreSQL. Khi một sinh viên xác nhận đăng ký thành công, trạng thái đề tài lập tức chuyển sang Đã đăng ký (IsRegistered = true) trong cùng một Atomic Transaction, ngăn chặn hoàn toàn lỗi tranh chấp tài nguyên (Race Condition) giữa các sinh viên.

3. Hệ thống có khả năng tích hợp với phần mềm quản lý đào tạo hiện có của nhà trường không?

Hệ thống được thiết kế theo kiến trúc chuẩn RESTful API, cho phép trao đổi dữ liệu JSON linh hoạt. Các mô-đun tài khoản và danh sách sinh viên có thể dễ dàng đồng bộ với cổng đào tạo chung của trường thông qua các API Webhook hoặc Import/Export file Excel trung gian.

4. Chi phí vận hành và bảo trì định kỳ của hệ thống như thế nào?

Do xây dựng trên nền tảng công nghệ miễn phí bản quyền (Open-source Stack: PostgreSQL, ASP.NET Core, Angular, Linux), chi phí duy trì gần như chỉ bao gồm phí thuê máy chủ lưu trữ (Cloud VPS). Việc sao lưu dữ liệu (Database Backup) được tự động hóa qua pg_dump định kỳ hàng ngày.

5. Dữ liệu các phiên bản báo cáo của sinh viên được lưu trữ và bảo mật ra sao?

Các tệp báo cáo được mã hóa tên file ngẫu nhiên (UUID) trên thư mục lưu trữ an toàn của máy chủ, đường dẫn được lưu trong bảng ProjectVersions. Chỉ những người dùng có quyền hợp lệ (Giảng viên hướng dẫn trực tiếp, Sinh viên sở hữu đề tài, Quản trị viên) mới được cấp quyền tải xuống thông qua API có xác thực JWT Token.


Kết luận

Đồ án tốt nghiệp "Xây dựng hệ thống quản lý quá trình thực hiện đề tài đồ án tốt nghiệp và thực tập tốt nghiệp cho sinh viên Khoa Công nghệ thông tin, Trường Đại học Hải Phòng" của tác giả Đặng Văn Quang đã giải quyết trọn vẹn bài toán số hóa quy trình quản lý học thuật phức tạp tại trường đại học.

Với nền tảng công nghệ hiện đại gồm Angular, C# .NET Core WebAPI và PostgreSQL, hệ thống không chỉ nâng cao tính minh bạch, tốc độ tương tác giữa giảng viên và sinh viên mà còn tạo tiền đề vững chắc cho việc xây dựng môi trường đại học số toàn diện, tiết kiệm nguồn lực và tối ưu hóa chất lượng đào tạo công nghệ thông tin.