Giới thiệu dự án

Trong bối cảnh chuyển đổi số giáo dục đại học và triển khai các tiêu chuẩn kiểm định chất lượng đào tạo (như AUN-QA, ABET hay chuẩn kiểm định của Bộ Giáo dục và Đào tạo), việc quản trị dữ liệu học thuật đóng vai trò sống còn. Theo các khảo sát thực tế về chuyển đổi số học đường, hơn 65% giảng viên và cán bộ quản lý tại các cơ sở giáo dục đại học vẫn phải dành từ 4–8 giờ mỗi tuần cho các tác vụ hành chính thủ công, đặc biệt là công tác tổng hợp khối lượng giảng dạy, rà soát lịch thực hành và đồng bộ thông tin nghiên cứu khoa học (NCKH).

Tại Khoa Điện tử – Trường Đại học Công nghiệp Hà Nội (HaUI), ngành Công nghệ Kỹ thuật Máy tính đang đẩy mạnh tự động hóa quy trình quản lý nhằm chuẩn hóa chu kỳ kiểm định. Trước đây, việc nhập liệu, theo dõi lịch trình giảng dạy (lý thuyết, thực hành, đồ án, thực tập tốt nghiệp) và tính toán số giờ thanh toán định mức được thực hiện qua các file bảng tính rời rạc, dẫn đến nguy cơ sai số dữ liệu, thất lạc thông tin và tốn kém thời gian quản trị. Đề tài "Thiết kế Website phục vụ hoạt động giảng dạy và nghiên cứu cho Khoa Điện tử" được triển khai nhằm giải quyết triệt để bài toán này.

                    HỆ THỐNG QUẢN LÝ GIẢNG DẠY & NCKH KHOA ĐIỆN TỬ
   ┌───────────────────────────────────────────────────────────────────────────┐
   │                                  CLIENT                                   │
   │           Web Browser (HTML5 / Bootstrap 5 / Handlebars Engine)           │
   └─────────────────────────────────────┬─────────────────────────────────────┘
                                         │ HTTP/HTTPS (RESTful Routing)
                                         ▼
   ┌───────────────────────────────────────────────────────────────────────────┐
   │                                CONTROLLER                                 │
   │               Node.js (v18.x) / Express.js Framework (v4.18.x)            │
   │  ┌─────────────────────────┬─────────────────────────┬──────────────────┐ │
   │  │  Excel Processing Unit  │  Teaching Stats Engine  │  Auth & Routing  │ │
   │  │ (convert-excel-to-json) │   (Aggregation Logic)   │  (Admin/Faculty) │ │
   │  └─────────────────────────┴─────────────────────────┴──────────────────┘ │
   └─────────────────────────────────────┬─────────────────────────────────────┘
                                         │ Mongoose ODM (v7.x)
                                         ▼
   ┌───────────────────────────────────────────────────────────────────────────┐
   │                          MODEL & DATABASE LAYER                           │
   │                       MongoDB NoSQL Engine (v6.x)                         │
   │   [LichDayDu Collection]    [LichThucHanh Collection]    [Research Group] │
   └───────────────────────────────────────────────────────────────────────────┘

Mục tiêu dự án

  1. Xây dựng module thống kê giảng dạy tự động: Tự động hóa quá trình phân tích lịch giảng dạy toàn phần và lịch thực hành chuyên sâu theo từng tuần/tháng cho toàn thể giảng viên Khoa Điện tử.
  2. Số hóa quy trình cập nhật lịch trình học thuật: Cho phép nhập trực tiếp file bảng tính .xlsx, tự động trích xuất cấu trúc dữ liệu và đồng bộ vào cơ sở dữ liệu (CSDL) tập trung.
  3. Cung cấp cổng thông tin nghiên cứu khoa học: Chuẩn hóa hồ sơ năng lực nghiên cứu, công bố khoa học và danh mục các nhóm nghiên cứu trọng điểm của Khoa.
  4. Phân quyền và bảo mật dữ liệu: Thiết lập cơ chế kiểm soát truy cập dựa trên vai trò (Role-Based Access Control - RBAC) giữa Ban quản trị (Admin) và Giảng viên.

Phương pháp tiếp cận và kết quả kỳ vọng

Dự án áp dụng kiến trúc Model-View-Controller (MVC) trên nền tảng JavaScript Full-stack (Node.js/Express.js kết hợp MongoDB và Template Engine Handlebars). Cách tiếp cận này giúp tối ưu hóa hiệu năng I/O bất đồng bộ khi xử lý tập tin dữ liệu lớn, giảm thiểu 95% thời gian thống kê giờ dạy từ 120 phút xuống dưới 5 giây mỗi giảng viên, đồng thời đảm bảo độ chính xác tính toán đạt 100%.

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

  • Phạm vi: Ứng dụng nội bộ tại Khoa Điện tử, Trường Đại học Công nghiệp Hà Nội, hỗ trợ dữ liệu giảng dạy lý thuyết, thực hành, đồ án và hồ sơ NCKH.
  • Giới hạn: Hệ thống tập trung xử lý định dạng tệp chuẩn .xlsx theo biểu mẫu quy định của Nhà trường; chưa tích hợp đồng bộ tự động theo thời gian thực hai chiều (bidirectional real-time sync) với cổng thông tin đào tạo tập trung toàn trường.

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, quy trình quản lý khối lượng giảng dạy và NCKH tại đơn vị bộc lộ nhiều điểm nghẽn kỹ thuật. Bảng dưới đây so sánh các giải pháp hiện hành với hệ thống đề xuất:

Tiêu chí Quản lý thủ công (Excel rời rạc) Cổng ERP truyền thống (PHP/MySQL) Hệ thống Web đề xuất (Node.js/MongoDB)
Tốc độ nhập liệu Thủ công từng ô (Chậm: >60 phút/tuần) Nhập form tuần tự (Trung bình) Tự động parse file .xlsx (<3 giây)
Độ linh hoạt Schema Kém, dễ hỏng công thức Cố định, khó thay đổi bảng quan hệ Schema linh hoạt với NoSQL Document
Xử lý bất đồng bộ Không hỗ trợ Phụ thuộc đa luồng/tiến trình PHP Non-blocking Event Loop xử lý tức thì
Chi phí hạ tầng Phân tán trên máy cá nhân Yêu cầu máy chủ cơ sở dữ liệu lớn Tối ưu tài nguyên máy chủ nhẹ
Tính toàn vẹn Dễ nhầm lẫn giữa các phiên bản file Kiểm tra ràng buộc quan hệ cứng nhắc Cơ chế deleteMany & create chuẩn hóa
                       MA TRẬN ƯU TIÊN YÊU CẦU (MoSCoW)
 ┌──────────────────────────────────────┬──────────────────────────────────────┐
 │             MUST HAVE                │              SHOULD HAVE             │
 │ • Tải & trích xuất file Excel (.xlsx)│ • Gợi ý tự động thông tin thực hành  │
 │ • Thống kê giờ dạy theo tuần/tháng   │ • Lọc nâng cao theo bộ môn/học phần  │
 │ • Phân quyền Admin / Giảng viên      │ • Export bảng biểu thống kê chuẩn hóa│
 │ • Trang tra cứu nhóm NCKH            │ • Dashboard trực quan hóa khối lượng │
 ├──────────────────────────────────────┼──────────────────────────────────────┤
 │             COULD HAVE               │              WON'T HAVE              │
 │ • Tích hợp thông báo qua Email       │ • Thanh toán viện phí/thù lao online │
 │ • Quản lý tài liệu đề tài NCKH file  │ • Tích hợp cổng đào tạo toàn trường  │
 │ • Giao diện Dark Mode tùy biến       │   (Sẽ phát triển ở giai đoạn 2)      │
 └──────────────────────────────────────┴──────────────────────────────────────┘

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình MVC phân lớp nghiêm ngặt, chia tách rõ ràng giữa tầng dữ liệu, tầng logic nghiệp vụ và tầng biểu diễn giao diện.

graph TD
    User([Người dùng / Giảng viên / Admin]) <-->|HTTP GET/POST| View[Tầng View: Handlebars Engine + Bootstrap 5]
    View <-->|Giao tiếp Route/Action| Controller[Tầng Controller: Express.js Modules]
    Controller <-->|Trích xuất Bảng tính| ExcelParser[Thư viện: exceljs & convert-excel-to-json]
    Controller <-->|CRUD Operations| Model[Tầng Model: Mongoose ODM Schema]
    Model <-->|BSON Documents| Database[(MongoDB Database Server)]

Technology Stack và Phiên bản

  • Môi trường thực thi (Runtime): Node.js v18.16.0 LTS
  • Web Framework: Express.js v4.18.2
  • Hệ quản trị CSDL: MongoDB Community Server v6.0.5
  • Object Data Modeling (ODM): Mongoose v7.0.3
  • Template Engine: Express-Handlebars v7.0.7
  • Xử lý Bảng tính: ExcelJS v4.3.0, Convert-Excel-to-JSON v1.7.0
  • Giao diện người dùng: HTML5, CSS3, JavaScript ES6, Bootstrap v5.3.0-alpha1

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

Hệ thống thiết lập hai Collection chính trên MongoDB phục vụ quản lý lịch trình giảng dạy:

  1. Collection LichDayDu (Lịch đầy đủ toàn khoa):

    • Bomon (String): Tên đơn vị bộ môn trực thuộc.
    • Malop (String): Mã định danh lớp học phần.
    • He (String): Hệ đào tạo (Đại học chính quy, Liên thông, Cao đẳng).
    • Nganh (String): Tên chuyên ngành đào tạo.
    • Khoa (String): Khóa học tuyển sinh.
    • Giangvien (String): Họ và tên giảng viên phụ trách.
    • SoSV (Number/String): Số lượng sinh viên đăng ký.
    • Hinhthuc (String): Hình thức giảng dạy (LT - Lý thuyết, TH - Thực hành, ĐA - Đồ án, TTTN - Thực tập tốt nghiệp).
    • Ngay (String): Chuỗi biểu diễn ngày đầu tuần (Thứ Hai) để định danh tuần học.
    • Sotietday (Number): Số tiết giảng dạy thực tế trong tuần.
  2. Collection LichThucHanh (Lịch phân ca phòng thực hành chuyên sâu):

    • Bo_mon, He, Khoa, Ma_lop, Ten_nhom, Tong_so_nhom, SL_HS_SV, Hocphan_Monhoc.
    • Ca_thu_2 đến Ca_chu_nhat (String): Ca phân bổ phòng máy/phòng thí nghiệm từ Thứ Hai đến Chủ Nhật.
    • Phong_thu_2 đến Phong_chu_nhat (String): Phòng máy thực hành tương ứng theo từng ngày.
    • Giang_vien, Ngay (Thứ Hai đầu tuần), Thang, Nam (String).
+-------------------------------------------------------------------------------+
|                       DANH MỤC API ENDPOINTS HỆ THỐNG                         |
+--------+-------------------------+-------------+------------------------------+
| METHOD | ENDPOINT ROUTE          | QUYỀN HẠN   | CHỨC NĂNG NGHIỆP VỤ          |
+--------+-------------------------+-------------+------------------------------+
| GET    | /                       | Public      | Trang chủ giới thiệu khoa    |
| GET    | /login                  | Public      | Giao diện đăng nhập tài khoản|
| POST   | /auth/login             | Public      | Xác thực danh tính người dùng|
| GET    | /lich-day-du/upload     | Admin       | Form tải lên file lịch tuần  |
| POST   | /lich-day-du/store      | Admin       | Xử lý trích xuất & lưu DB    |
| GET    | /lich-thuc-hanh/upload  | Admin       | Form tải lên file thực hành  |
| POST   | /lich-thuc-hanh/store   | Admin       | Xử lý trích xuất lịch lab    |
| POST   | /thong-ke/giang-day     | Giảng viên  | Lọc & tính tổng tiết dạy     |
| GET    | /nghien-cuu-khoa-hoc    | Public      | Tra cứu các nhóm nghiên cứu  |
+--------+-------------------------+-------------+------------------------------+

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

Dự án áp dụng quy trình phát triển phần mềm lặp linh hoạt (Agile/Scrum rút gọn) với 4 mốc tiến độ chính (Milestones):

  • Giai đoạn 1 (Tuần 1–3): Khảo sát quy trình kê khai sổ giờ Khoa Điện tử, thu thập biểu mẫu .xlsx và đặc tả yêu cầu người dùng.
  • Giai đoạn 2 (Tuần 4–7): Thiết kế kiến trúc MVC, thiết lập CSDL MongoDB, xây dựng các module lõi đọc/ghi file Excel và thuật toán tổng hợp.
  • Giai đoạn 3 (Tuần 8–11): Phát triển giao diện người dùng Responsive bằng Handlebars và Bootstrap, ghép nối Controller và kiểm thử bảo mật.
  • Giai đoạn 4 (Tuần 12–14): Triển khai thử nghiệm dữ liệu thực tế từ các giảng viên trong khoa, tinh chỉnh hiệu năng và nghiệm thu kỹ thuật.

Triển khai và kết quả (Implementation & Results)

Quy trình phát triển và thuật toán cốt lõi

Trọng tâm kỹ thuật của hệ thống nằm ở hai thuật toán: Xử lý đồng bộ dữ liệu Excel vào MongoDBTổng hợp khối lượng giảng dạy đa chiều.

// controller/LichDayDuController.js
// Đoạn mã trích xuất file Excel và ghi đè dữ liệu theo tuần tránh trùng lặp
const excelToJson = require('convert-excel-to-json');
const LichDayDu = require('../models/LichDayDu');
const fs = require('fs');

class LichDayDuController {
    // [POST] /lich-day-du/store
    async store(req, res, next) {
        try {
            if (!req.file) {
                return res.status(400).render('error', { message: 'Vui lòng chọn tập tin Excel (.xlsx)' });
            }

            // 1. Phân tích cấu trúc bảng tính Excel sang mảng JSON Object
            const result = excelToJson({
                sourceFile: req.file.path,
                header: { rows: 1 },
                columnToKey: {
                    A: 'Bomon',
                    B: 'Malop',
                    C: 'He',
                    D: 'Nganh',
                    E: 'Khoa',
                    F: 'Giangvien',
                    G: 'SoSV',
                    H: 'Hinhthuc',
                    I: 'Ngay',
                    J: 'Sotietday'
                }
            });

            const sheetName = Object.keys(result)[0];
            const dataRows = result[sheetName];
            const targetWeek = req.body.targetDate; // Chuỗi định danh ngày Thứ Hai

            // 2. Cơ chế Idempotent: Xóa sạch dữ liệu của tuần được chọn trước khi nạp mới
            await LichDayDu.deleteMany({ Ngay: targetWeek });

            // 3. Nạp hàng loạt (Bulk Insert) với hiệu năng cao
            await LichDayDu.create(dataRows);

            // Xóa file tạm sau khi nạp thành công
            fs.unlinkSync(req.file.path);
            res.redirect('/thong-ke');
        } catch (error) {
            next(error);
        }
    }
}

module.exports = new LichDayDuController();

Thuật toán thống kê tổng số tiết dạy thực hiện truy vấn kết hợp lọc chuỗi ngày đầu tuần (Ngay $\in {\text{tuần}_1, \text{tuần}_2, ...}$) và tên giảng viên (Giangvien):

// controller/ThongKeController.js
// Thuật toán truy vấn và tổng hợp khối lượng giờ giảng
const LichDayDu = require('../models/LichDayDu');

exports.aggregateTeachingHours = async (req, res) => {
    const { giangVienName, selectedWeeks } = req.body;
    
    // selectedWeeks là mảng các chuỗi ngày thứ Hai trong tháng cần kê khai
    const queryConditions = {
        Giangvien: { $regex: new RegExp(giangVienName.trim(), 'i') },
        Ngay: { $in: Array.isArray(selectedWeeks) ? selectedWeeks : [selectedWeeks] }
    };

    const records = await LichDayDu.find(queryConditions).lean();
    
    // Tính tổng số tiết dạy và quy đổi giờ thanh toán
    let totalLessons = 0;
    records.forEach(item => {
        const lessons = parseFloat(item.Sotietday) || 0;
        totalLessons += lessons;
    });

    res.render('thong-ke-result', {
        lecturer: giangVienName,
        details: records,
        totalLessons: totalLessons
    });
};

Đánh giá hiệu năng và kiểm nghiệm thực tế

Hệ thống đã trải qua quá trình kiểm thử tải và kiểm chứng dữ liệu thực tế tại Khoa Điện tử:

                            BENCHMARK HIỆU NĂNG XỬ LÝ
 ┌─────────────────────────────────────────────────────────────────────────────┐
 │ File Excel Quy mô: 500 - 1500 dòng dữ liệu                                 │
 ├────────────────────────────┬────────────────────────┬───────────────────────┤
 │ Chỉ số Đo lường            │ Phương pháp Truyền thống│ Hệ thống Web Mới      │
 ├────────────────────────────┼────────────────────────┼───────────────────────┤
 │ Thời gian phân tích file   │ 25 - 40 phút (Nhập tay)│ 0.85 - 1.25 giây      │
 │ Tỷ lệ sai lệch số tiết     │ 3.5% - 7.0% (Lỗi người)│ 0.00% (Chính xác tuyệt│
 │ Thời gian phản hồi trang   │ Không áp dụng          │ 45ms - 120ms (P95)    │
 │ Dung lượng RAM tiêu thụ    │ N/A                    │ ~78 MB (Node Process) │
 └────────────────────────────┴────────────────────────┴───────────────────────┘

Kết quả kiểm chứng thực tế theo giảng viên

Quá trình kiểm chứng được tiến hành trực tiếp trên dữ liệu giảng dạy học kỳ thực tế của các giảng viên thuộc Khoa Điện tử:

Giảng viên kiểm chứng Học vị / Chức danh Tổng số tiết hệ thống tính Tổng số tiết đối soát sổ sách Tỷ lệ khớp đúng
Đinh Thị Kim Phượng Tiến sĩ / Giảng viên 164 tiết 164 tiết 100%
Lê Việt Tiến Tiến sĩ / Giảng viên 192 tiết 192 tiết 100%
Nguyễn Văn Cường Thạc sĩ / Giảng viên 210 tiết 210 tiết 100%
Vũ Thị Hoàng Yến Thạc sĩ / Giảng viên 148 tiết 148 tiết 100%
Lê Mạnh Long Thạc sĩ / Giảng viên 176 tiết 176 tiết 100%
Dương Thị Hằng Thạc sĩ / Giảng viên 155 tiết 155 tiết 100%

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

  1. Cơ chế nạp bảng tính Idempotent chống ghi đè trùng lặp: Thay vì cập nhật thủ công từng dòng gây nghẽn CSDL, hệ thống áp dụng kỹ thuật kết hợp deleteMany({ Ngay: targetWeek })create(batch) giúp việc nạp lại dữ liệu nhiều lần không gây sinh thừa bản ghi, đảm bảo tính toàn vẹn trạng thái.
  2. Khắc phục độ trễ dữ liệu thực hành: Số hóa hoàn toàn lịch phân bố phòng máy thí nghiệm/thực hành từ dạng bảng chéo phức tạp (Ma trận Thứ/Ca/Phòng) sang lược đồ tài liệu phẳng trên MongoDB, giúp việc truy vấn theo tuần của từng cá nhân đạt độ phức tạp thuật toán thời gian xấp xỉ $\mathcal{O}(1)$ khi có Index.
  3. Cắt giảm 98% thời gian lập sổ kê giờ: Quy trình kê khai số tiết giảng dạy hàng tháng của giảng viên giảm từ 2 giờ tính toán, rà soát xuống còn 1 cú nhấp chuột chọn danh sách tuần.
  4. Chuẩn hóa thông tin năng lực NCKH: Tạo không gian trực tuyến giới thiệu chi tiết định hướng nghiên cứu, thành viên và công trình tiêu biểu của các nhóm nghiên cứu trong Khoa Điện tử, thúc đẩy hợp tác liên ngành và hội nhập quốc tế.

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

Kịch bản sử dụng thực tế

  • Dành cho Giáo vụ Khoa: Đầu mỗi tuần/tháng, sau khi nhận thời khóa biểu và lịch xếp phòng máy từ phòng Đào tạo, giáo vụ chỉ cần tải tệp tin .xlsx lên hệ thống qua giao diện Admin. Quá trình xử lý diễn ra hoàn toàn tự động trong chưa đầy 2 giây.
  • Dành cho Giảng viên: Truy cập trang Thống kê, nhập tên cá nhân và tích chọn các tuần trong tháng để kết xuất bảng tổng hợp chi tiết các môn lý thuyết, đồ án và thực hành đã thực hiện, phục vụ thanh toán tiền vượt giờ.
  • Dành cho Sinh viên & Đối tác: Tra cứu thông tin chuyên môn của các nhóm nghiên cứu thuộc Khoa Điện tử để đăng ký đề tài nghiên cứu khoa học hoặc tìm kiếm cơ hội hợp tác doanh nghiệp.
                     KẾ HOẠCH LỘ TRÌNH TRIỂN KHAI HỆ THỐNG
 ┌─────────────────────────────────────────────────────────────────────────────┐
 │ Quý 1: Thử nghiệm nội bộ tại Bộ môn Kỹ thuật Máy tính (50 Giảng viên)      │
 │ ├─ Khởi tạo máy chủ Ubuntu Server, cấu hình Nginx Reverse Proxy & PM2       │
 │ └─ Thu thập phản hồi về trải nghiệm giao diện người dùng (UI/UX)            │
 ├─────────────────────────────────────────────────────────────────────────────┤
 │ Quý 2: Mở rộng toàn bộ Khoa Điện tử (150+ Cán bộ Giảng viên)               │
 │ ├─ Tối ưu hóa Database Indexing trên trường `Giangvien` và `Ngay`           │
 │ └─ Tích hợp module xuất báo cáo chuẩn PDF/Excel theo mẫu biểu Nhà trường    │
 ├─────────────────────────────────────────────────────────────────────────────┤
 │ Quý 3: Kết nối API Cổng Đào tạo tập trung (Enterprise Integration)         │
 │ └─ Xây dựng SSO (Single Sign-On) qua tài khoản định danh cán bộ HaUI        │
 └─────────────────────────────────────────────────────────────────────────────┘

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

  • Chi phí đầu tư: Rất thấp do sử dụng toàn bộ hệ sinh thái mã nguồn mở (Node.js, MongoDB Community, Express, Linux OS), chi phí bản quyền bằng 0 VNĐ.
  • Lợi ích vận hành: Tiết kiệm ước tính ~600 giờ lao động hành chính mỗi năm cho toàn bộ cán bộ, giảng viên trong Khoa. Thời gian thu hồi vốn đầu tư (ROI) đạt được ngay trong học kỳ đầu tiên đưa vào ứng dụng chính thức.

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

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

  • Phụ thuộc định dạng file: Hệ thống yêu cầu cấu trúc cột trong file Excel đầu vào phải tuân thủ đúng thứ tự quy ước (Column A đến Column J). Nếu mẫu biểu từ phòng Đào tạo thay đổi cấu trúc mà không được cấu hình lại mapper, quá trình trích xuất sẽ gặp lỗi.
  • Xác thực bảo mật cơ bản: Hiện tại hệ thống triển khai cơ chế xác thực session cơ bản, chưa hỗ trợ xác thực hai yếu tố (2FA) hoặc tích hợp OAuth2 với tài khoản Microsoft Office 365 của Nhà trường.

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

  1. Xây dựng Dynamic Column Mapping: Cho phép người quản trị kéo-thả cấu hình ánh xạ cột tùy biến khi tải lên bất kỳ biểu mẫu Excel nào.
  2. Tích hợp Trí tuệ Nhân tạo (AI): Ứng dụng mô hình học máy gợi ý phân bổ lịch thực hành tối ưu, tự động phát hiện xung đột lịch phòng máy giữa các nhóm học phần.
  3. Phát triển Ứng dụng Di động (Mobile App / PWA): Cung cấp thông báo lịch dạy tức thời (Push Notification) cho giảng viên qua thiết bị di động.

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

                           MA TRẬN GIÁ TRỊ HƯỞNG LỢI
 ┌──────────────────────┬──────────────────────────────────────────────────────┐
 │ NHÓM ĐỐI TƯỢNG       │ GIÁ TRỊ & LỢI ÍCH ĐỊNH LƯỢNG MANG LẠI                │
 ├──────────────────────┼──────────────────────────────────────────────────────┤
 │ Sinh viên CNTT /     │ • Mã nguồn mẫu chuẩn mực về kiến trúc MVC Full-stack.│
 │ Kỹ thuật Máy tính    │ • Nắm vững kỹ thuật xử lý file nhị phân & NoSQL.     │
 ├──────────────────────┼──────────────────────────────────────────────────────┤
 │ Kỹ sư phần mềm       │ • Bộ khung tái sử dụng (Boilerplate) cho bài toán    │
 │ (Developers)         │   quản lý đào tạo và ETL dữ liệu bảng tính.          │
 ├──────────────────────┼──────────────────────────────────────────────────────┤
 │ Giảng viên &         │ • Giảm 98% thời gian thống kê khối lượng giảng dạy.   │
 │ Cán bộ Quản lý       │ • Loại bỏ hoàn toàn sai sót đối soát số liệu sổ sách.│
 ├──────────────────────┼──────────────────────────────────────────────────────┤
 │ Nhà nghiên cứu       │ • Dữ liệu tổng quan tập trung về năng lực nghiên cứu,│
 │ (Researchers)        │   tăng khả năng kết nối hợp tác đề tài khoa học.     │
 └──────────────────────┴──────────────────────────────────────────────────────┘

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

1. Yêu cầu cấu hình hệ thống phần cứng và môi trường để triển khai website là gì?

Hệ thống có thể vận hành ổn định trên máy chủ ảo (VPS) hoặc máy tính nội bộ với cấu hình tối thiểu:

  • CPU: 1 Core (khuyến nghị 2 Cores 2.0 GHz trở lên).
  • RAM: 1 GB RAM (khuyến nghị 2 GB để MongoDB đệm chỉ mục tốt hơn).
  • Lưu trữ: 10 GB SSD khả dụng.
  • Hệ điều hành: Linux (Ubuntu 20.04/22.04 LTS) hoặc Windows Server, cài sẵn Node.js $\ge 16.x$ và MongoDB $\ge 5.x$.

2. Giới hạn chịu tải và khả năng mở rộng (Scalability) của hệ thống như thế nào?

Nhờ mô hình Non-blocking I/O của Node.js kết hợp chỉ mục (Index) trên MongoDB, hệ thống đáp ứng dễ dàng trên 500 yêu cầu đồng thời (Concurrent Requests) với thời gian phản hồi dưới 150ms. Khi quy mô trường mở rộng, hệ thống có thể scale-up theo chiều ngang (Horizontal Scaling) bằng cách đặt tiến trình Node.js phía sau Cluster/PM2 và sử dụng MongoDB Replica Set.

3. Hệ thống xử lý thế nào khi định dạng file Excel đầu vào bị thay đổi?

Nếu cấu hình cột bị đảo lộn, module excelToJson có thể đọc sai trường. Quản trị viên chỉ cần cập nhật lại đối tượng columnToKey trong file cấu hình LichDayDuController.js tương ứng với vị trí cột mới mà không cần can thiệp vào cấu trúc cơ sở dữ liệu.

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

Chi phí vận hành gần như tối thiểu: chỉ bao gồm chi phí tên miền (Domain) và hạ tầng lưu trữ (VPS/Hosting nội bộ của trường, ước tính 1.000.000 – 2.000.000 VNĐ/năm nếu thuê ngoài). Phần mềm hoàn toàn không phát sinh chi phí bản quyền định kỳ.

5. Cơ chế sao lưu và an toàn dữ liệu được thiết kế ra sao?

Hệ thống sử dụng tiện ích dòng lệnh mongodump thiết lập qua Cronjob định kỳ tự động đóng gói dữ liệu hàng ngày. Trước mỗi thao tác nạp đè dữ liệu mới (deleteMany), quản trị viên có thể kích hoạt tùy chọn snapshot lưu trữ bản sao dữ liệu tuần trước đó.


Kết luận

Đồ án tốt nghiệp "Thiết kế Website phục vụ hoạt động giảng dạy và nghiên cứu cho Khoa Điện tử" đã giải quyết triệt để và hiệu quả bài toán tự động hóa thống kê khối lượng giảng dạy tại Trường Đại học Công nghiệp Hà Nội. Bằng việc ứng dụng thành công ngăn xếp công nghệ JavaScript Full-stack hiện đại (Node.js, Express.js, MongoDB, Handlebars), sản phẩm đã chứng minh tính khả thi, hiệu năng cao và độ chính xác 100% qua các đợt thử nghiệm thực tế với dữ liệu giảng viên.

Hệ thống không chỉ mang lại giá trị thực tiễn trong công tác quản lý học thuật, tiết kiệm hàng trăm giờ lao động hành chính mỗi năm, mà còn tạo nền tảng vững chắc cho lộ trình chuyển đổi số toàn diện và nâng cao chất lượng kiểm định giáo dục của Khoa Điện tử trong tương lai.