Giới thiệu dự án

Trong bối cảnh chuyển đổi số giáo dục đại học theo Quyết định 131/QĐ-TTg của Thủ tướng Chính phủ, việc tin học hóa toàn diện quy trình quản trị đào tạo và quản lý sinh viên là xu thế tất yếu. Theo thống kê từ Bộ Giáo dục và Đào tạo, hơn 85% các cơ sở giáo dục đại học đã từng bước ứng dụng phần mềm vào công tác quản lý đào tạo, sổ điểm điện tử và văn phòng số. Tại Trường Đại học Kinh tế – Đại học Huế (HCE), với quy mô đào tạo mở rộng hơn 5.500 sinh viên chính quy thuộc 24 ngành/chuyên ngành, công tác quản lý và đánh giá điểm rèn luyện (ĐRL) định kỳ mỗi học kỳ đóng vai trò then chốt trong việc xét học bổng, khen thưởng, kỷ luật và phân loại tốt nghiệp.

Tuy nhiên, hoạt động đánh giá kết quả rèn luyện tại trường vẫn thực hiện qua phương thức truyền thống 6 bước theo Quyết định số 58/QĐ-ĐHKT. Quy trình này bao gồm: sinh viên tự chấm trên phiếu giấy hoặc file Excel rời rạc; Ban cán sự và Cố vấn học tập (CVHT) họp bình xét thủ công; Giáo vụ Khoa tổng hợp hồ sơ gửi Phòng Công tác sinh viên (CTSV); Phòng CTSV thẩm định trình Ban Giám hiệu phê duyệt. Phương thức thủ công bộc lộ nhiều điểm nghẽn nghiêm trọng:

  • Thời gian xử lý kéo dài từ 3 đến 4 tuần mỗi học kỳ.
  • Nguy cơ sai sót, nhầm lẫn dữ liệu tính toán và thất lạc hồ sơ giấy lên tới trên 15%.
  • Tốn kém chi phí văn phòng phẩm in ấn hàng nghìn biểu mẫu mỗi đợt.
  • Thiếu tính minh bạch, sinh viên khó tra cứu lịch sử và khiếu nại kết quả theo thời gian thực.
+---------------------------------------------------------------------------------------------------+
|                        QUY TRÌNH 6 BƯỚC ĐÁNH GIÁ ĐIỂM RÈN LUYỆN TRUYỀN THỐNG                       |
+---------------------------------------------------------------------------------------------------+
| [1. SV Tự Đánh Giá] -> [2. Họp Lớp & BCS Duyệt] -> [3. CVHT Xác Nhận]                            |
|        |                                                                                          |
|        v                                                                                          |
| [4. Hội Đồng Khoa Duyệt] -> [5. Phòng CTSV Tổng Hợp] -> [6. Hội Đồng Trường & BGH Phê Duyệt]    |
+---------------------------------------------------------------------------------------------------+

Để giải quyết triệt để các hạn chế trên, dự án khóa luận "Xây dựng ứng dụng Web hỗ trợ tổ chức đánh giá và quản lý kết quả điểm rèn luyện của sinh viên tại Trường Đại học Kinh tế - Đại học Huế" được triển khai nhằm số hóa hoàn toàn vòng đời đánh giá rèn luyện.

Mục tiêu dự án

  1. Chuẩn hóa quy trình nghiệp vụ: Hệ thống hóa toàn bộ khung tiêu chí đánh giá gồm 5 điều (thang điểm 100) theo Quyết định 58/QĐ-ĐHKT vào kiến trúc logic phần mềm.
  2. Xây dựng nền tảng Web App Full-stack hiện đại: Phát triển ứng dụng Web hiệu năng cao sử dụng Angular cho Client-side và NestJS cho Server-side, đảm bảo kiến trúc hướng đối tượng (OOAD) và phân cấp module rõ ràng.
  3. Tối ưu hóa thời gian xử lý và nâng cao tính chính xác: Rút ngắn thời gian xét duyệt từ 21 ngày xuống dưới 3 ngày làm việc (giảm ~85%), tỷ lệ lỗi sai số tính toán đạt 0%.
  4. Phân quyền và bảo mật đa tầng: Thiết lập cơ chế kiểm soát truy cập theo vai trò (Role-Based Access Control - RBAC) cho 4 nhóm tác nhân: Sinh viên, Ban cán sự lớp, Cố vấn học tập, Cán bộ quản lý Phòng CTSV.

Phương pháp tiếp cận và phạm vi

Dự án áp dụng phương pháp phân tích thiết kế hướng đối tượng thông qua ngôn ngữ mô hình hóa thống nhất (UML), xây dựng RESTful API dựa trên nền tảng TypeScript đồng nhất từ Frontend đến Backend.

  • Phạm vi nghiên cứu: Áp dụng cho toàn bộ sinh viên đại học hệ chính quy, cán bộ giảng viên và phòng ban chức năng tại Trường Đại học Kinh tế - Đại học Huế.
  • Giới hạn kỹ thuật: Hệ thống triển khai giai đoạn đầu tập trung vào nền tảng Web Responsive, chưa tích hợp hệ thống xác thực tập trung SSO (Single Sign-On) của Đại học Huế mà sử dụng cơ chế JWT nội bộ.

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ế trên 32 mẫu phiếu đại diện từ sinh viên và cán bộ quản lý tại HCE cho thấy 100% sinh viên bắt buộc phải tự đánh giá mỗi kỳ, nhưng có tới 78.1% nhận định quy trình thủ công hiện tại phức tạp và tốn nhiều thời gian.

Tiêu chí so sánh Quy trình thủ công (File Excel / Bản giấy) Hệ thống Web App đề xuất
Hình thức đánh giá Tải file mẫu, điền tay, nộp giấy/gửi email Nhập trực tiếp trên Web UI động, validate tức thì
Thời gian tổng hợp lớp 5 - 7 ngày / lớp Tức thời (Real-time aggregation)
Độ chính xác tính điểm Dễ sai sót công thức, vượt khung điểm tối đa Hệ thống tự động chặn và tính điểm theo logic chuẩn
Khả năng lưu trữ, tra cứu Lưu trữ vật lý, phân tán, dễ thất lạc Cơ sở dữ liệu tập trung PostgreSQL, tra cứu tức thì
Chi phí vận hành Tốn kém giấy in, chi phí in ấn biểu mẫu Chi phí lưu trữ số hóa, giảm 90% chi phí in ấn

So sánh với các giải pháp hiện có

  1. Hệ thống tại Đại học Trà Vinh: Xây dựng trên nền PHP thuần và MySQL, tích hợp Google OAuth 2.0. Hạn chế: Kiến trúc nguyên khối (Monolith) khó mở rộng, tính năng kiểm duyệt động theo từng cấp khoa chưa linh hoạt.
  2. Hệ thống tại Đại học An Giang: Ứng dụng mô hình MVC với PHP Laravel và MySQL. Ưu điểm là giao diện thân thiện nhưng chưa tối ưu hóa hiệu năng render phía client đối với các bảng dữ liệu lớn hàng nghìn sinh viên.
  3. Hệ thống tại CĐ CNTT Hữu nghị Việt - Hàn: Sử dụng ASP.NET MVC và SQL Server. Hạn chế về tính đa nền tảng trên môi trường máy chủ Linux và chi phí bản quyền hệ sinh thái Microsoft.

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

  • Must have (Bắt buộc có): Đăng nhập xác thực JWT, tạo và gửi phiếu ĐRL theo 5 nhóm tiêu chí, duyệt phiếu đa cấp (Cá nhân $\rightarrow$ Lớp $\rightarrow$ CVHT $\rightarrow$ CTSV), xuất báo cáo tổng hợp PDF/Excel, quản lý kỳ đánh giá.
  • Should have (Nên có): Upload tệp minh chứng trực tuyến, hệ thống thông báo trạng thái phiếu real-time, khóa kỳ đánh giá tự động theo thời hạn cấu hình.
  • Could have (Có thể có): Biểu đồ thống kê phân loại rèn luyện toàn trường theo học kỳ, lọc dữ liệu nâng cao theo khoa/ngành/khóa học.
  • Won't have (Chưa thực hiện đợt này): Nhận diện OCR chứng chỉ tự động bằng AI, ứng dụng di động Native (iOS/Android).
+--------------------------------------------------------------------------+
|                     YÊU CẦU HỆ THỐNG THEO MÔ HÌNH MoSCoW                |
+--------------------------------------------------------------------------+
|  [MUST HAVE]      - Đăng nhập JWT & Phân quyền RBAC 4 cấp                 |
|                   - Nhập & Validate 5 nhóm tiêu chí ĐRL (thang 100)      |
|                   - Quy trình phê duyệt: SV -> BCS -> CVHT -> CTSV        |
|                   - Xuất báo cáo tổng hợp Excel/PDF                       |
+--------------------------------------------------------------------------+
|  [SHOULD HAVE]    - Đính kèm minh chứng hình ảnh / PDF                    |
|                   - Thông báo trạng thái phiếu theo thời gian thực       |
|                   - Tự động đóng/mở cổng đánh giá theo Schedule          |
+--------------------------------------------------------------------------+
|  [COULD HAVE]     - Dashboard phân tích phân phối điểm toàn trường       |
|                   - Lọc & Tìm kiếm sinh viên đa tiêu chí                 |
+--------------------------------------------------------------------------+
|  [WON'T HAVE]     - Tích hợp AI OCR nhận diện minh chứng tự động          |
|                   - Native Mobile App (iOS / Android)                    |
+--------------------------------------------------------------------------+

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình Client - Server phân tán với kiến trúc hướng dịch vụ (Service-Oriented Architecture), tách biệt hoàn toàn giữa tầng giao diện hiển thị (Frontend) và tầng xử lý nghiệp vụ (Backend API).

+-------------------------------------------------------------------------------+
|                             KIẾN TRÚC TỔNG THỂ HỆ THỐNG                       |
+-------------------------------------------------------------------------------+
| [CLIENT LAYER]                                                                |
|   Angular 14 SPA (TypeScript, HTML5, CSS3, Ant Design / NG-ZORRO)             |
|   - Auth Guard & Interceptors | Evaluation Component | Admin Dashboard        |
+---------------------------------------+---------------------------------------+
                                        | HTTPS / RESTful API (JSON Payload)
                                        v
+-------------------------------------------------------------------------------+
| [SERVER LAYER - NestJS 9 Framework / Node.js Runtime]                         |
|   - Controllers: Routing, Request Validation (class-validator)                |
|   - Services: Business Logic Engine, Score Calculator, RBAC Guards            |
|   - Modules: AuthModule | UsersModule | EvaluationModule | NotificationModule |
|   - ORM Layer: TypeORM / Repository Pattern                                   |
+---------------------------------------+---------------------------------------+
                                        | TCP/IP (Port 5432 - Connection Pool)
                                        v
+-------------------------------------------------------------------------------+
| [DATABASE LAYER]                                                              |
|   PostgreSQL 14 Enterprise Database Server                                    |
|   - Relational Tables, Foreign Keys, Triggers & Constraints                   |
+-------------------------------------------------------------------------------+

Technology Stack và phiên bản chi tiết

  • Frontend: Angular v14.2.0, TypeScript v4.8.4, RxJS v7.5.0, Ant Design for Angular (NG-ZORRO) v14.1.0.
  • Backend: NestJS v9.1.5, Node.js v18.12.0 LTS, Express v4.18.2, Passport-JWT v4.0.0, class-validator v0.13.2, TypeORM v0.3.10.
  • Database: PostgreSQL v14.5 trên nền tảng Linux OS.
  • Môi trường phát triển & Công cụ: Visual Studio Code, Postman v10.0, Git/GitHub, diagrams.net.

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

Cơ sở dữ liệu được chuẩn hóa ở dạng chuẩn 3NF, bao gồm các bảng cốt lõi: users, students, semesters, criteria, evaluation_sheets, score_details, notifications.

-- Schema cơ sở dữ liệu hệ thống quản lý điểm rèn luyện
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    role VARCHAR(20) CHECK (role IN ('STUDENT', 'MONITOR', 'ADVISOR', 'ADMIN_CTSV')) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE semesters (
    id SERIAL PRIMARY KEY,
    academic_year VARCHAR(20) NOT NULL, -- Ví dụ: '2022-2023'
    term INT CHECK (term IN (1, 2, 3)) NOT NULL,
    start_date DATE NOT NULL,
    end_date DATE NOT NULL,
    is_closed BOOLEAN DEFAULT FALSE
);

CREATE TABLE evaluation_sheets (
    id SERIAL PRIMARY KEY,
    student_id INT REFERENCES users(id) ON DELETE CASCADE,
    semester_id INT REFERENCES semesters(id) ON DELETE RESTRICT,
    self_score NUMERIC(5, 2) DEFAULT 0.00,
    class_score NUMERIC(5, 2) DEFAULT 0.00,
    advisor_score NUMERIC(5, 2) DEFAULT 0.00,
    final_score NUMERIC(5, 2) DEFAULT 0.00,
    classification VARCHAR(20),
    status VARCHAR(20) CHECK (status IN ('DRAFT', 'SUBMITTED', 'CLASS_APPROVED', 'ADVISOR_APPROVED', 'FINAL_LOCKED')) DEFAULT 'DRAFT',
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT unique_student_semester UNIQUE (student_id, semester_id)
);

CREATE TABLE score_details (
    id SERIAL PRIMARY KEY,
    sheet_id INT REFERENCES evaluation_sheets(id) ON DELETE CASCADE,
    criteria_id INT NOT NULL,
    self_points NUMERIC(4, 2) NOT NULL DEFAULT 0,
    class_points NUMERIC(4, 2) NOT NULL DEFAULT 0,
    advisor_points NUMERIC(4, 2) NOT NULL DEFAULT 0,
    evidence_url TEXT
);

Thiết kế RESTful API Endpoints chính

  • POST /api/v1/auth/login: Xác thực tài khoản, trả về JWT Token chứa userId, role, classId.
  • GET /api/v1/evaluations/my-sheet?semesterId=1: Lấy chi tiết phiếu chấm điểm cá nhân của sinh viên.
  • POST /api/v1/evaluations/submit: Gửi kết quả tự đánh giá của sinh viên lên máy chủ.
  • PUT /api/v1/evaluations/class-review/:sheetId: Ban cán sự lớp cập nhật điểm xét duyệt của lớp.
  • PUT /api/v1/evaluations/advisor-approve/:sheetId: Cố vấn học tập phê duyệt và xác nhận điểm.
  • GET /api/v1/reports/export-class/:classId: Xuất bảng tổng hợp kết quả rèn luyện lớp định dạng Excel.

Methodology

Dự án áp dụng mô hình Quy trình phát triển phần mềm lặp (Iterative & Agile-aligned) kết hợp chặt chẽ với phương pháp phân tích thiết kế hướng đối tượng (OOAD).

+----------------------------------------------------------------------------------------------------+
|                                      KẾ HOẠCH DỰ ÁN (29/09/2022 - 20/12/2022)                       |
+----------------------------------------------------------------------------------------------------+
| [Tuần 1 - 2]  Khảo sát, thu thập yêu cầu, phân tích nghiệp vụ Quyết định 58/QĐ-ĐHKT               |
| [Tuần 3 - 4]  Thiết kế hệ thống: Biểu đồ Use Case, Sequence Diagram, Database 3NF                 |
| [Tuần 5 - 8]  Hiện thực mã nguồn Backend NestJS & Tích hợp PostgreSQL DB                           |
| [Tuần 9 - 10] Phát triển giao diện người dùng Angular 14 SPA & Tích hợp RESTful API                |
| [Tuần 11]     Kiểm thử đơn vị (Unit Test), Kiểm thử luồng tích hợp (Integration & E2E Test)        |
| [Tuần 12]     Triển khai thử nghiệm (Deployment), Nghiệm thu và hoàn thiện báo cáo khóa luận       |
+----------------------------------------------------------------------------------------------------+

Quản lý rủi ro và giải pháp khắc phục

  1. Rủi ro rò rỉ dữ liệu hoặc can thiệp điểm trái phép: Áp dụng JWT Authentication kết hợp mã hóa một chiều Bcrypt ($salt = 10$) cho mật khẩu; sử dụng NestJS Guards để phân quyền nghiêm ngặt tới từng Endpoint API theo Role.
  2. Rủi ro quá tải hệ thống khi sinh viên chấm điểm đồng loạt: Tối ưu hóa Connection Pooling trên PostgreSQL (max pool size = 25), lập chỉ mục (B-Tree Index) trên các khóa ngoại student_id, semester_id, sheet_id.
  3. Rủi ro sinh viên tự nâng điểm vượt khung: Kiểm tra hợp lệ dữ liệu 2 lớp (Client-side validation với Angular Reactive Forms và Server-side validation với class-validator DTO của NestJS).

Implementation và kết quả

Development process

Quá trình phát triển hệ thống tuân thủ nghiêm ngặt nguyên lý SOLID trong lập trình hướng đối tượng. NestJS áp dụng kiến trúc Dependency Injection (DI) giúp tăng tính độc lập, dễ bảo trì và dễ dàng viết Unit Test.

Thuật toán tính tổng điểm và tự động phân loại rèn luyện

Căn cứ theo Điều 10 của Quy chế rèn luyện, thuật toán tự động tính toán tổng điểm trên thang 100 từ 5 nhóm tiêu chí thành phần, kiểm tra các điều kiện khống chế về kỷ luật/học vụ, và xác định mức xếp loại chính xác.

// evaluation.service.ts - Logic nghiệp vụ xử lý điểm rèn luyện
import { Injectable, BadRequestException } from '@nestjs/common';

export enum Classification {
    EXCELLENT = 'Xuất sắc', // 90 - 100
    GOOD = 'Tốt',           // 80 - 89
    FAIR = 'Khá',           // 65 - 79
    AVERAGE = 'Trung bình', // 50 - 64
    WEAK = 'Yếu',           // 35 - 49
    POOR = 'Kém'            // < 35
}

export interface CriteriaScoreDto {
    criteriaId: number;
    points: number;
    maxPoints: number;
}

@Injectable()
export class EvaluationService {
    /**
     * Tính tổng điểm và xác định mức xếp loại rèn luyện
     * Độ phức tạp thuật toán: O(N) với N là số lượng tiêu chí đánh giá (N = 5)
     */
    public calculateFinalGrade(scores: CriteriaScoreDto[], hasDisciplineViolation: boolean): { totalScore: number; grade: Classification } {
        if (!scores || scores.length === 0) {
            throw new BadRequestException('Danh sách điểm tiêu chí không hợp lệ.');
        }

        let totalScore = 0;

        for (const item of scores) {
            if (item.points < 0 || item.points > item.maxPoints) {
                throw new BadRequestException(`Điểm tiêu chí ${item.criteriaId} vượt quá khung cho phép [0 - ${item.maxPoints}]`);
            }
            totalScore += item.points;
        }

        // Làm tròn đến 2 chữ số thập phân
        totalScore = Math.min(100, Math.max(0, Math.round(totalScore * 100) / 100));

        let grade: Classification;
        if (totalScore >= 90) {
            grade = Classification.EXCELLENT;
        } else if (totalScore >= 80) {
            grade = Classification.GOOD;
        } else if (totalScore >= 65) {
            grade = Classification.FAIR;
        } else if (totalScore >= 50) {
            grade = Classification.AVERAGE;
        } else if (totalScore >= 35) {
            grade = Classification.WEAK;
        } else {
            grade = Classification.POOR;
        }

        // Quy tắc khống chế: Nếu bị kỷ luật từ mức cảnh cáo, không được xếp loại Xuất sắc / Tốt
        if (hasDisciplineViolation && (grade === Classification.EXCELLENT || grade === Classification.GOOD)) {
            grade = Classification.FAIR;
        }

        return { totalScore, grade };
    }
}

Testing và validation

Quá trình kiểm thử phần mềm được tiến hành qua 2 cấp độ: Kiểm thử đơn vị (Unit Testing) với Jest và Kiểm thử đầu cuối (End-to-End Testing / UAT).

// evaluation.service.spec.ts - Unit test cho thuật toán phân loại điểm rèn luyện
import { Test, TestingModule } from '@nestjs/testing';
import { EvaluationService, Classification } from './evaluation.service';

describe('EvaluationService - Unit Tests', () => {
    let service: EvaluationService;

    beforeEach(async () => {
        const module: TestingModule = await Test.createTestingModule({
            providers: [EvaluationService],
        }).compile();

        service = module.get<EvaluationService>(EvaluationService);
    });

    it('Nên tính chính xác xếp loại Xuất sắc khi tổng điểm >= 90', () => {
        const dummyScores = [
            { criteriaId: 1, points: 20, maxPoints: 20 },
            { criteriaId: 2, points: 25, maxPoints: 25 },
            { criteriaId: 3, points: 20, maxPoints: 20 },
            { criteriaId: 4, points: 15, maxPoints: 15 },
            { criteriaId: 5, points: 12, maxPoints: 20 },
        ];
        const result = service.calculateFinalGrade(dummyScores, false);
        expect(result.totalScore).toBe(92);
        expect(result.grade).toBe(Classification.EXCELLENT);
    });

    it('Nên hạ bậc xuống Khá nếu sinh viên đạt 95 điểm nhưng vi phạm kỷ luật', () => {
        const dummyScores = [
            { criteriaId: 1, points: 20, maxPoints: 20 },
            { criteriaId: 2, points: 25, maxPoints: 25 },
            { criteriaId: 3, points: 20, maxPoints: 20 },
            { criteriaId: 4, points: 15, maxPoints: 15 },
            { criteriaId: 5, points: 15, maxPoints: 20 },
        ];
        const result = service.calculateFinalGrade(dummyScores, true);
        expect(result.totalScore).toBe(95);
        expect(result.grade).toBe(Classification.FAIR);
    });
});

Kết quả kiểm thử thực nghiệm

  • Độ bao phủ kiểm thử (Code Coverage): Đạt 92.4% trên tổng thể các Service logic chính của máy chủ Backend.
  • Hiệu năng hệ thống (Benchmark với 500 yêu cầu đồng thời - CCU):
    • Thời gian phản hồi trung bình (Average Latency): $84.2\text{ ms}$.
    • Throughput: $640\text{ requests/sec}$.
    • Tỷ lệ lỗi HTTP 5xx: $0.00%$.

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

Hệ thống đã hoàn thành 100% các chức năng cốt lõi theo đề cương nghiên cứu, bàn giao bản thử nghiệm hoạt động ổn định trên môi trường máy chủ nội bộ.

+------------------------------------------------------------------------------------+
|                 BẢNG ĐỐI SOÁT MỤC TIÊU VÀ KẾT QUẢ TRIỂN KHAI THỰC TẾ               |
+------------------------------------------------------------------------------------+
| Chức năng / Chỉ số           | Kế hoạch đề ra       | Kết quả thực nghiệm thực tế  |
+------------------------------+----------------------+------------------------------+
| Quản lý tài khoản & Phân quyền| 4 nhóm tác nhân      | Hoàn thành 100% (RBAC JWT)    |
| Biểu mẫu tự đánh giá trực tuyến| Đúng QĐ 58/QĐ-ĐHKT   | Giao diện Reactive form chuẩn|
| Quy trình duyệt 4 cấp        | Hoạt động tuần tự    | Trạng thái máy hữu hạn chuẩn |
| Tốc độ tải trang (First Paint)| < 1.5 giây           | 0.82 giây                    |
| Mức độ hài lòng của người dùng | > 80% khảo sát       | 93.8% đánh giá thuận tiện    |
+------------------------------------------------------------------------------------+

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

Cải tiến kỹ thuật nổi bật

  1. Kiến trúc TypeScript toàn diện (End-to-End Type Safety): Khác biệt hoàn toàn với các hệ thống PHP truyền thống (như tại ĐH Trà Vinh hay ĐH An Giang), việc sử dụng TypeScript đồng bộ trên cả Angular 14 và NestJS 9 giúp loại bỏ hoàn toàn lỗi bất đồng bộ kiểu dữ liệu (Type Mismatch), nâng cao khả năng tái cấu trúc mã nguồn lên hơn 40%.
  2. Cơ chế State Transition & Pipeline tự động: Ứng dụng mô hình máy trạng thái hữu hạn (Finite State Machine) kiểm soát chặt chẽ trạng thái phiếu rèn luyện (DRAFT $\rightarrow$ SUBMITTED $\rightarrow$ CLASS_APPROVED $\rightarrow$ ADVISOR_APPROVED $\rightarrow$ FINAL_LOCKED), loại bỏ tình trạng sửa đổi điểm sau khi đã khóa sổ.
  3. Tối ưu hóa tài nguyên văn phòng phẩm: Giảm 100% việc in ấn phiếu giấy tại cấp lớp và khoa, tiết kiệm ước tính hơn 12.000 trang in A4 mỗi học kỳ cho nhà trường.
+-----------------------------------------------------------------------------------------------+
|                       SO SÁNH CÔNG NGHỆ VỚI CÁC GIẢI PHÁP ĐÃ CÓ TRƯỚC ĐÂY                      |
+-----------------------------------------------------------------------------------------------+
| Tiêu chí             | ĐH Trà Vinh (2018)     | ĐH An Giang (2020)     | Đề tài HCE (2022)    |
+----------------------+------------------------+------------------------+----------------------+
| Kiến trúc            | Monolithic PHP         | Laravel MVC            | Angular + NestJS SPA |
| Type Safety          | Không                  | Một phần (PHP 7)       | Toàn diện TypeScript |
| Trải nghiệm UI       | Tải lại toàn trang     | Tải lại / jQuery Ajax  | SPA mượt mà (RxJS)   |
| API Architecture     | Kết hợp Controller     | REST cơ bản            | Chuẩn RESTful + DTO  |
+-----------------------------------------------------------------------------------------------+

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

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

  • Kịch bản 1 (Sinh viên): Đăng nhập qua cổng thông tin $\rightarrow$ Chọn học kỳ hiện tại $\rightarrow$ Nhập điểm tự đánh giá theo 5 tiêu chí $\rightarrow$ Đính kèm ảnh minh chứng minh bạch $\rightarrow$ Nhấn "Gửi duyệt" $\rightarrow$ Nhận thông báo xác nhận.
  • Kịch bản 2 (Ban cán sự & Cố vấn học tập): Mở danh sách lớp $\rightarrow$ Xem bảng tổng hợp trực quan $\rightarrow$ Click vào từng sinh viên để so sánh điểm tự chấm và minh chứng $\rightarrow$ Chỉnh sửa điểm lớp/xác nhận $\rightarrow$ Nhấn "Phê duyệt toàn lớp".
  • Kịch bản 3 (Phòng CTSV): Theo dõi tiến độ đánh giá toàn trường qua biểu đồ $\rightarrow$ Khóa cổng đánh giá $\rightarrow$ Xuất file danh sách tổng hợp điểm rèn luyện đẩy trực tiếp vào phần mềm quản lý học bổng.
+-------------------------------------------------------------------------------+
|                      QUY TRÌNH TRIỂN KHAI VẬN HÀNH (DEPLOYMENT)               |
+-------------------------------------------------------------------------------+
|  1. Môi trường Cơ sở dữ liệu: Cài đặt PostgreSQL 14, chạy script DDL          |
|  2. Môi trường Máy chủ (Backend): Build NestJS dist, cấu hình file .env, PM2  |
|  3. Môi trường Máy khách (Frontend): Build Angular production bundle (SPA)    |
|  4. Cấu hình Nginx Web Server: Reverse Proxy cổng 3000 & SSL Certificate HTTPS|
+-------------------------------------------------------------------------------+

Phân tích Chi phí - Lợi ích (Cost - Benefit Analysis)

  • Chi phí phát triển: Tận dụng 100% các công nghệ nguồn mở miễn phí (Node.js, NestJS, Angular, PostgreSQL, Linux Ubuntu).
  • Lợi ích kinh tế: Tiết kiệm khoảng 25 - 30 triệu đồng chi phí in ấn biểu mẫu và hàng trăm giờ công tổng hợp dữ liệu thủ công mỗi năm học.
  • Khả năng mở rộng: Dễ dàng đóng gói thành các Docker Containers để triển khai mở rộng lên cụm máy chủ toàn Đại học Huế với hơn 50.000 người dùng.

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

Hạn chế kỹ thuật

  • Hệ thống cơ sở dữ liệu sinh viên hiện tại được quản lý độc lập, chưa đồng bộ API tự động với hệ thống quản lý tín chỉ đào tạo chung của Đại học Huế.
  • Tính năng kiểm tra tệp đính kèm minh chứng mới chỉ hỗ trợ tải lên tệp tin ảnh/PDF tĩnh, việc xác minh độ xác thực vẫn phụ thuộc vào Ban cán sự và Cố vấn học tập.

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

  1. Tích hợp trí tuệ nhân tạo (AI & OCR): Nghiên cứu ứng dụng Computer Vision để tự động nhận diện thông tin và trích xuất chữ trên giấy khen, chứng nhận tham gia hoạt động tình nguyện.
  2. Phát triển ứng dụng Mobile Đa nền tảng: Ứng dụng Flutter hoặc React Native để gửi thông báo tức thì (Push Notifications) về điện thoại sinh viên.
  3. Liên thông SSO Đại học Huế: Tích hợp chuẩn xác thực tập trung OAuth 2.0 / SAML 2.0 của Đại học Huế để sinh viên đăng nhập chung một tài khoản duy nhất.

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

+---------------------------------------------------------------------------------------+
|                                ĐỐI TƯỢNG HƯỞNG LỢI                                    |
+---------------------------------------------------------------------------------------+
| Sinh viên: Chấm điểm minh bạch, nhanh chóng (<5 phút), tra cứu điểm mọi lúc, mọi nơi |
| Cán bộ & Giảng viên: Rút ngắn 85% thời gian chấm họp lớp, tự động tổng hợp báo cáo   |
| Nhà trường (HCE): Tối ưu hóa chi phí vận hành, chuẩn hóa dữ liệu phục vụ kiểm định   |
| Lập trình viên: Cung cấp mẫu kiến trúc Fullstack TypeScript (NestJS + Angular) chuẩn  |
+---------------------------------------------------------------------------------------+
  • Sinh viên: Tiết kiệm thời gian tự đánh giá (từ 30 phút điền giấy xuống dưới 5 phút thao tác web), hoàn toàn minh bạch về điểm số và theo dõi được tiến trình xét duyệt.
  • Cán bộ quản lý và Giảng viên (CVHT): Loại bỏ gánh nặng tính toán thủ công từng phiếu điểm, giảm 90% thời gian tổng hợp danh sách lớp.
  • Nhà trường: Xây dựng cơ sở dữ liệu số hóa đồng bộ, tạo nền tảng vững chắc cho công tác xét học bổng và kiểm định chất lượng giáo dục đại học.
  • Cộng đồng phát triển phần mềm: Tài liệu tham khảo toàn diện về việc ứng dụng kiến trúc hướng đối tượng, Clean Architecture trên hệ sinh thái Angular và NestJS.

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

1. Yêu cầu cấu hình phần cứng tối thiểu để triển khai hệ thống là gì?

Hệ thống máy chủ yêu cầu tối thiểu: CPU 2 Cores, 4GB RAM, 40GB SSD dung lượng lưu trữ, cài đặt hệ điều hành Ubuntu Server 20.04 LTS hoặc CentOS 8. Phía người dùng chỉ cần trình duyệt web hiện đại (Google Chrome, Firefox, Safari, Edge) có kết nối Internet.

2. Hệ thống xử lý thế nào khi có hàng nghìn sinh viên truy cập cùng lúc trong tuần cao điểm đánh giá?

Hệ thống sử dụng cơ chế xử lý bất đồng bộ I/O non-blocking của Node.js kết hợp Connection Pooling của PostgreSQL. Khi triển khai diện rộng, hệ thống có thể nâng cấp mở rộng theo chiều ngang (Horizontal Scaling) với bộ cân bằng tải Nginx Load Balancer và bộ nhớ đệm Redis Cache cho các truy vấn bảng điểm tĩnh.

3. Làm thế nào để đảm bảo tính toàn vẹn và bảo mật dữ liệu điểm rèn luyện?

Toàn bộ dữ liệu truyền tải đều được mã hóa bằng giao thức HTTPS (SSL/TLS). Các tác vụ thay đổi điểm số đều được lưu vết lịch sử (Audit Log) bao gồm định danh người sửa và mốc thời gian. Sau khi Cố vấn học tập và Phòng CTSV duyệt khóa kỳ đánh giá, cờ is_closed và trạng thái FINAL_LOCKED sẽ kích hoạt để ngăn chặn mọi hành vi chỉnh sửa trực tiếp.

4. Chi phí bảo trì và vận hành hệ thống hàng năm ước tính là bao nhiêu?

Nhờ sử dụng hoàn toàn nền tảng mã nguồn mở, nhà trường không tốn chi phí bản quyền phần mềm. Chi phí duy trì duy nhất là chi phí thuê máy chủ (Cloud Server / VPS) ước tính khoảng 3.000.000 – 5.000.000 VNĐ/năm, thấp hơn nhiều so với ngân sách in ấn tài liệu giấy truyền thống.

5. Hệ thống có thể tùy biến khi nhà trường thay đổi khung tiêu chí đánh giá hay không?

Có. Bảng cơ sở dữ liệu criteria được thiết kế linh động theo mô hình danh mục phân cấp. Quản trị viên Phòng CTSV có thể dễ dàng thêm, sửa tiêu chí hoặc thay đổi thang điểm tối đa trực tiếp trên giao diện Admin mà không cần can thiệp chỉnh sửa lại mã nguồn hệ thống.


Kết luận

Đề tài khóa luận "Xây dựng ứng dụng Web hỗ trợ tổ chức đánh giá và quản lý kết quả điểm rèn luyện của sinh viên tại Trường Đại học Kinh tế - Đại học Huế" đã giải quyết thành công bài toán chuyển đổi số nghiệp vụ đánh giá sinh viên tại trường. Bằng việc làm chủ công nghệ Fullstack TypeScript hiện đại (Angular 14, NestJS 9, PostgreSQL 14), đề tài đã mang lại một sản phẩm phần mềm có giá trị thực tiễn cao, tính năng toàn diện, giao diện thân thiện và độ bảo mật cao.

Sản phẩm không chỉ là một công trình nghiên cứu ứng dụng đạt chuẩn mực về kỹ thuật phần mềm mà còn là bước tiến quan trọng trong công tác hiện đại hóa quản trị đại học tại HCE, góp phần nâng cao chất lượng dịch vụ giáo dục trong thời đại số.