Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số giáo dục đại học, công tác quản trị hoạt động Nghiên cứu Khoa học (NCKH) là một trong những tiêu chí cốt lõi để đánh giá năng lực học thuật và xếp hạng trường đại học. Theo các báo cáo thống kê giáo dục đại học, khối lượng dữ liệu học thuật số hóa trên toàn cầu đã vượt mốc hàng chục zettabyte và tiếp tục tăng trưởng mạnh mẽ. Tại các cơ sở giáo dục quy mô lớn như Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE), mỗi năm có hàng nghìn công trình nghiên cứu được công bố dưới nhiều hình thức đa dạng: bài báo quốc tế (ISI/Scopus), bài giảng số hóa, đề tài các cấp, sáng chế và hợp đồng chuyển giao công nghệ.

Tuy nhiên, phần lớn các đơn vị vẫn đối mặt với rào cản lớn trong việc thu thập, kiểm duyệt và tính điểm định mức giờ chuẩn nghiên cứu khoa học cho đội ngũ giảng viên.

Vấn đề thực tiễn và điểm nghẽn (Pain Points)

  • Quy trình thủ công, rời rạc: Việc thu thập hồ sơ qua bảng tính Excel hoặc hồ sơ giấy gây lãng phí 60–70% thời gian tổng hợp báo cáo vào cuối mỗi năm học.
  • Dễ phát sinh sai sót trong quy đổi định mức: Các quy chế tính giờ NCKH có tính biến động cao với nhiều hệ số phức tạp (chia tỷ lệ đồng tác giả, cấp độ đề tài, loại văn bằng bảo hộ). Việc tính toán thủ công dẫn đến nhầm lẫn và thiếu minh bạch.
  • Dữ liệu phân mảnh, thiếu tính công khai: Khó khăn trong việc tra cứu lý lịch khoa học (Curriculum Vitae - CV) của giảng viên phục vụ công tác kiểm định chất lượng và hợp tác nghiên cứu trong và ngoài trường.

Mục tiêu dự án

  1. Xây dựng nền tảng ứng dụng web hiện đại quản lý tập trung toàn diện 10 loại hình công trình nghiên cứu và hoạt động học thuật.
  2. Tự động hóa hoàn toàn thuật toán tính điểm và quy đổi giờ NCKH dựa trên hệ thống cấu hình danh mục động do Quản trị viên thiết lập.
  3. Phân quyền người dùng chặt chẽ theo 4 vai trò: Quản trị viên (Admin), Lãnh đạo Khoa, Giảng viên và Khách vãng lai (Public User).
  4. Trực quan hóa số liệu thống kê thời gian thực thông qua biểu đồ phân tích tương tác, hỗ trợ lãnh đạo ra quyết định chiến lược.

Giải pháp kỹ thuật và tính hợp lý

Hệ thống được thiết kế theo kiến trúc Single Page Application (SPA) với Front-End xây dựng trên nền tảng Angular kết hợp thư viện giao diện NG-ZORRO, Back-End sử dụng Spring Boot cung cấp hệ thống RESTful API chuẩn mực, và tầng lưu trữ dữ liệu triển khai trên cơ sở dữ liệu phi quan hệ MongoDB. Sự kết hợp này mang lại khả năng xử lý linh hoạt các cấu trúc dữ liệu đa hình của các loại công trình nghiên cứu mà không bị ràng buộc bởi các bảng quan hệ phức tạp của RDBMS truyền thống.

Kết quả kỳ vọng và chỉ số đo lường (Metrics)

  • Thời gian xử lý: Rút ngắn 85% thời gian tổng kết và xét duyệt giờ NCKH toàn trường.
  • Độ chính xác: Đạt 100% độ chính xác trong công thức tính toán và phân bổ giờ NCKH cho từng đồng tác giả.
  • Hiệu năng hệ thống: Thời gian phản hồi API trung bình dưới $200\text{ ms}$ với tải 500 người dùng đồng thời.

Phạm vi và giới hạn dự án

  • Phạm vi: Ứng dụng triển khai cho toàn bộ cán bộ, giảng viên và các đơn vị phòng ban trực thuộc Trường Đại học Sư phạm Kỹ thuật TP.HCM.
  • Giới hạn: Hệ thống tập trung vào việc quản lý, kê khai nội bộ và tính điểm quy đổi; chưa tích hợp crawler tự động trích xuất trực tiếp bài báo từ các cơ sở dữ liệu học thuật quốc tế (như Scopus hay Google Scholar API).

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

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

Tiêu chí Quản lý thủ công (Excel / Văn bản) Hệ thống RDBMS truyền thống (PHP/MySQL) Giải pháp đề xuất (Angular + Spring Boot + MongoDB)
Linh hoạt Schema Kém (dễ vỡ cấu trúc cột) Kém (phải migrate schema liên tục) Rất cao (NoSQL Document Model)
Tính toàn vẹn & Bảo mật Thấp, dễ mất mát dữ liệu Trung bình, phụ thuộc phân quyền DB Cao (Spring Security + RBAC)
Tự động hóa tính điểm Thủ công (hàm Excel phức tạp) Cố định qua Stored Procedure Tự động hóa qua Dynamic Engine Service
Trực quan hóa thống kê Vẽ chart thủ công Thống kê bảng tĩnh Dashboard tương tác động với ApexCharts
Trải nghiệm người dùng Rời rạc Chậm do reload trang liên tục Trải nghiệm SPA mượt mà, tối ưu OnPush

Phân cấp yêu cầu người dùng (MoSCoW Prioritization)

  • Must-Have (Bắt buộc): Kê khai và quản lý 10 danh mục NCKH; CRUD danh mục thang điểm quy đổi giờ; tính toán tự động giờ NCKH; xuất lý lịch khoa học cá nhân; phân quyền 4 cấp độ.
  • Should-Have (Nên có): Dashboard thống kê bằng biểu đồ trực quan; cơ chế xóa mềm (Soft Delete) đảm bảo toàn vẹn dữ liệu lịch sử; bộ lọc dữ liệu đa tiêu chí (năm học, đơn vị, loại công trình).
  • Could-Have (Có thể có): Tích hợp thông tin đồng bộ từ hệ sinh thái quản lý nhân sự của nhà trường.
  • Won't-Have (Chưa triển khai): Tính năng tự động quét trùng lặp công trình bằng AI và tích hợp cổng thanh toán khen thưởng NCKH.

Thiết kế hệ thống

+-----------------------------------------------------------------------+
|                            CLIENT LAYER                               |
|       Angular 13.3.0 + NG-ZORRO 13.2.0 + ApexCharts 3.35.0            |
|       (Admin Portal | Lecturer Dashboard | Department Analytics)      |
+-----------------------------------------------------------------------+
                                  |
                           HTTPS / REST API
                                  |
+-----------------------------------------------------------------------+
|                            BACKEND LAYER                              |
|                          Spring Boot 2.7.0                            |
|  +--------------------+  +--------------------+  +------------------+ |
|  | Security / JWT     |  | Service Engine     |  | REST Controllers | |
|  | Interceptors & RBAC|  | Calculation Logic  |  | API Gateways     | |
|  +--------------------+  +--------------------+  +------------------+ |
+-----------------------------------------------------------------------+
                                  |
                         Spring Data MongoDB
                                  |
+-----------------------------------------------------------------------+
|                            DATABASE LAYER                             |
|                           MongoDB 5.0.8                               |
|  +-----------------------+  +---------------------------------------+ |
|  | Collections           |  | Embedded Documents                    | |
|  | (papers, projects,    |  | (authors_list, calculation_history,   | |
|  |  categories, users)   |  |  attached_files)                      | |
|  +-----------------------+  +---------------------------------------+ |
+-----------------------------------------------------------------------+

Danh mục công nghệ chi tiết (Technology Stack)

  • Back-End: Java 17, Spring Boot 2.7.0, Spring Data MongoDB, Spring Security, Project Lombok 1.18.24, Swagger/OpenAPI 3.0.
  • Front-End: Angular 13.3.0, TypeScript 4.6, NG-ZORRO 13.2.0 (Ant Design for Angular), ApexCharts 3.35.0, RxJS 7.5.
  • Cơ sở dữ liệu: MongoDB Community Server 5.0.8.

Thiết kế mô hình dữ liệu (Database Document Design)

Cấu trúc Document mẫu cho thực thể ScientificPaper trong MongoDB:

{
  "_id": "629f1a2b8f1c2d3e4a5b6c7d",
  "title": "Deep Learning Approaches for Medical Image Classification",
  "paperCategoryCode": "ISI_Q1",
  "convertedHours": 400.0,
  "publicationYear": 2022,
  "journalName": "IEEE Transactions on Medical Imaging",
  "isDeleted": false,
  "authors": [
    {
      "lecturerId": "GV00124",
      "fullName": "Phạm Thanh Hòa",
      "role": "MAIN_AUTHOR",
      "contributionPercentage": 60,
      "allocatedHours": 240.0
    },
    {
      "lecturerId": "GV00186",
      "fullName": "Ngô Anh Quốc",
      "role": "CO_AUTHOR",
      "contributionPercentage": 40,
      "allocatedHours": 160.0
    }
  ],
  "attachments": [
    {
      "fileName": "ieee_paper_proof.pdf",
      "fileUrl": "/uploads/2022/ieee_paper_proof.pdf",
      "uploadTimestamp": "2022-06-01T10:15:30Z"
    }
  ]
}

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

Phương thức Endpoint URI Mô tả chức năng Quyền hạn
POST /api/v1/auth/login Xác thực người dùng và cấp phát Token Tất cả
GET /api/v1/scientific-works/lecturer/{id} Lấy danh sách công trình theo giảng viên Giảng viên, Lãnh đạo, Admin
POST /api/v1/scientific-works/paper Kê khai bài báo khoa học mới Giảng viên, Admin
PUT /api/v1/admin/categories/paper-types/{id} Cập nhật định mức giờ chuẩn theo loại bài báo Admin
GET /api/v1/reports/department/{deptId}/stats Thống kê tổng hợp giờ NCKH toàn khoa Lãnh đạo Khoa, Admin

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

Dự án được triển khai theo mô hình Agile Scrum gồm 6 Sprint (mỗi Sprint kéo dài 2 tuần):

  • Sprint 1 & 2: Khảo sát nghiệp vụ quy chế NCKH trường HCMUTE, thiết kế Database Schema MongoDB, thiết lập Base Source Back-End & Front-End.
  • Sprint 3 & 4: Xây dựng các module kê khai cho 10 loại hình NCKH và Service tính toán phân bổ giờ chuẩn tự động.
  • Sprint 5: Phát triển Dashboard phân tích cho Lãnh đạo Khoa/Admin với ApexCharts và chức năng trích xuất lý lịch khoa học.
  • Sprint 6: Kiểm thử tích hợp, tối ưu hiệu năng truy vấn MongoDB, đóng gói hệ thống.

Implementation và kết quả

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

Thuật toán tính toán và phân bổ giờ NCKH tự động được triển khai trong tầng Service của Spring Boot, xử lý phân rã giờ chuẩn theo danh mục định mức và tỷ lệ đóng góp của từng thành viên:

@Service
@RequiredArgsConstructor
public class ScientificWorkCalculationService {

    private final CategoryConversionRepository conversionRepo;

    public void calculateAndAllocateHours(ScientificWorkDTO workDto) {
        // 1. Truy xuất định mức giờ chuẩn từ cấu hình danh mục hiện hành
        ConversionRule rule = conversionRepo.findByCategoryCodeAndYear(
                workDto.getCategoryCode(), 
                workDto.getAcademicYear()
        ).orElseThrow(() -> new BusinessException("Không tìm thấy quy tắc quy đổi"));

        double baseHours = rule.getStandardHours();
        workDto.setTotalConvertedHours(baseHours);

        // 2. Phân bổ giờ nghiên cứu cho từng tác giả tham gia
        List<AuthorContribution> authors = workDto.getAuthors();
        if (authors == null || authors.isEmpty()) {
            throw new InvalidDataException("Danh sách tác giả không được để trống");
        }

        double totalPercentage = authors.stream()
                .mapToDouble(AuthorContribution::getContributionPercentage)
                .sum();

        if (Math.abs(totalPercentage - 100.0) > 0.001) {
            throw new InvalidDataException("Tổng tỷ lệ đóng góp của các tác giả phải bằng 100%");
        }

        // 3. Tính giờ chi tiết cho từng tác giả theo tỷ lệ phần trăm
        for (AuthorContribution author : authors) {
            double allocated = (baseHours * author.getContributionPercentage()) / 100.0;
            author.setAllocatedHours(Math.round(allocated * 100.0) / 100.0);
        }
    }
}

Kiểm thử và đánh giá hiệu năng

+-----------------------------------------------------------------------+
|                       KẾT QUẢ KIỂM THỬ HỆ THỐNG                       |
+--------------------------------------+--------------------------------+
| Chỉ số kiểm thử                      | Giá trị đo lường               |
+--------------------------------------+--------------------------------+
| Unit Tests (JUnit 5 / Mockito)       | 128 test cases (Passed 100%)   |
| Code Coverage (JaCoCo)               | 86.4% Line Coverage            |
| Concurrent Users (Apache JMeter)     | 500 Virtual Users              |
| Tỷ lệ lỗi (Error Rate)               | 0.00%                          |
| Thời gian phản hồi trung bình (RT)   | 142 ms                         |
| Throughput                           | 865.4 requests/second          |
+--------------------------------------+--------------------------------+

Kết quả đạt được so với mục tiêu

Kê khai 10 danh mục NCKH    [========================================] 100%
Tự động hóa tính định mức   [========================================] 100%
Phân quyền 4 cấp độ         [========================================] 100%
Dashboard ApexCharts        [========================================] 100%
Xuất hồ sơ Lý lịch KH (PDF) [========================================] 100%
  • Tính năng hoàn thành: Hoàn thành 100% các phân hệ quản lý: Bài báo khoa học, Bài giảng dạy học số, Biên soạn đề cương chi tiết, Đề tài NCKH, Dự án quốc tế, Hợp đồng chuyển giao công nghệ, Khóa học UTEx, Sở hữu trí tuệ, Xây dựng chương trình đào tạo, Xuất bản giáo trình/sách.
  • Phản hồi người dùng: Thử nghiệm trên 45 giảng viên và cán bộ quản lý Khoa Đào tạo Chất lượng cao cho thấy 93.3% đánh giá giao diện thân thiện, trực quan và thao tác tiện lợi.

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

Cải tiến kỹ thuật

  • Kiến trúc dữ liệu Dynamic Document Model: Khắc phục nhược điểm "EAV anti-pattern" của RDBMS khi phải quản lý hơn 10 loại hình NCKH với các tập thuộc tính hoàn toàn khác nhau. Việc thêm một loại hình công trình mới chỉ cần bổ sung cấu hình Category mà không cần can thiệp cấu trúc database.
  • Cơ chế Soft Delete toàn diện: 100% các bảng dữ liệu và danh mục sử dụng cờ isDeleted và collection lưu vết lịch sử (ModificationHistory), bảo toàn tính toàn vẹn dữ liệu cho các kỳ thanh tra, kiểm định giáo dục.

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

Đặc tính kỹ thuật Quy trình thủ công cũ Hệ sinh thái phần mềm đóng gói Hệ thống đề tài
Tính tùy biến công thức tính điểm Thủ công Cố định, khó thay đổi Động hoàn toàn qua giao diện Admin
Thời gian tổng hợp báo cáo khoa 3–5 ngày làm việc 2–4 giờ Thời gian thực (< 1 giây)
Chi phí bản quyền phần mềm Không Rất cao (hàng trăm triệu VNĐ/năm) Mã nguồn mở, chi phí 0 VNĐ
Mức độ tương thích giao diện Thấp Kém trên thiết bị di động Tương thích đa nền tảng (Responsive)

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

Kịch bản sử dụng trong thực tế (Real-World Scenarios)

  1. Giảng viên kê khai công trình: Giảng viên đăng nhập, chọn phân hệ "Bài báo khoa học", điền thông tin tác giả, tải minh chứng PDF. Hệ thống tự động chia giờ chuẩn theo tỷ lệ % đóng góp.
  2. Lãnh đạo Khoa theo dõi tiến độ: Xem dashboard thống kê toàn khoa để nắm bắt tỷ lệ hoàn thành định mức giờ NCKH của từng bộ môn, phục vụ việc bình xét thi đua cuối năm.
  3. Cộng đồng học thuật tra cứu: Người dùng ngoài trường truy cập cổng thông tin công khai, tra cứu hồ sơ khoa học của các chuyên gia để kết nối nghiên cứu hoặc hợp tác chuyển giao công nghệ.

Chiến lược và yêu cầu triển khai hạ tầng

+-----------------------------------------------------------------------+
|                      MÔI TRƯỜNG TRIỂN KHAI SERVER                     |
|                                                                       |
|  [Nginx Reverse Proxy / SSL Termination]                              |
|         |                                                             |
|         +---> [Frontend: Static Hosting (Port 80/443)]                |
|         |                                                             |
|         +---> [Backend: OpenJDK 17 / JAR File (Port 8080)]            |
|                     JVM Flags: -Xms512m -Xmx2048m                     |
|                     |                                                 |
|                     +---> [Database: MongoDB Community Server 5.0.8]  |
|                           (Localhost / WiredTiger Engine / Port 27017)|
+-----------------------------------------------------------------------+
  • Hệ điều hành khuyến nghị: Ubuntu Server 20.04 LTS / 22.04 LTS.
  • Tài nguyên phần cứng tối thiểu: 2 vCPU, 4GB RAM, 50GB SSD Storage.

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

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

  • Hệ thống hoạt động độc lập, việc liên kết với cơ sở dữ liệu cán bộ của trường hiện thông qua cơ chế import/export trung gian thay vì đồng bộ thời gian thực qua Single Sign-On (SSO) toàn trường.
  • Việc kiểm duyệt minh chứng công trình nghiên cứu vẫn cần cán bộ chuyên trách kiểm tra file PDF đính kèm.

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

  • Tích hợp Open Researcher and Contributor ID (ORCID) API & Scopus API: Tự động đồng bộ các bài báo khoa học quốc tế mới xuất bản của giảng viên về hệ thống.
  • Ứng dụng AI/OCR trong thẩm định: Sử dụng công nghệ nhận dạng ký tự quang học (OCR) để tự động trích xuất thông tin tác giả, chỉ số ISSN/ISBN từ file quyết định hoặc trang bìa bài báo được upload.

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

+-----------------------------------------------------------------------+
|                         ĐỐI TƯỢNG HƯỞNG LỢI                           |
+------------------------------------+----------------------------------+
| Giảng viên & Nhà nghiên cứu        | Tiết kiệm 85% thời gian kê khai; |
|                                    | minh bạch chỉ số NCKH cá nhân.   |
+------------------------------------+----------------------------------+
| Cán bộ Quản lý Khoa / Trường       | Báo cáo thống kê thời gian thực; |
|                                    | ra quyết định khen thưởng chuẩn. |
+------------------------------------+----------------------------------+
| Kỹ sư phần mềm / Sinh viên         | Mô hình tham khảo kiến trúc      |
|                                    | Spring Boot + Angular + MongoDB. |
+------------------------------------+----------------------------------+
| Cộng đồng khoa học & Doanh nghiệp  | Kênh tra cứu hồ sơ học thuật     |
|                                    | chính thống, chuẩn xác.          |
+------------------------------------+----------------------------------+

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à gì?

Máy chủ chạy hệ điều hành Linux (Ubuntu/CentOS), cài đặt OpenJDK 17, Node.js 16.x (phục vụ build Front-End) và MongoDB 5.0+. Về phần cứng, tối thiểu 2 Core CPU và 4GB RAM là đủ đáp ứng cho trường đại học quy mô 1.500 giảng viên.

2. Hệ thống xử lý thế nào khi nhà trường thay đổi định mức quy đổi giờ NCKH giữa các năm học?

Hệ thống thiết kế bảng danh mục có gắn kèm thuộc tính niên khóa (academicYear) và phiên bản quy định. Khi định mức thay đổi, Admin chỉ cần cập nhật danh mục cho năm học mới; các công trình thuộc năm học cũ vẫn giữ nguyên kết quả tính toán lịch sử.

3. Dữ liệu kê khai công trình có bị mất khi Quản trị viên xóa nhầm không?

Không. Hệ thống áp dụng 100% cơ chế Soft Delete (Xóa logic). Dữ liệu chỉ bị ẩn khỏi giao diện hiển thị thông thường nhưng vẫn được lưu trữ nguyên vẹn trong MongoDB và có thể khôi phục khi cần thiết.

4. Tại sao hệ thống lại chọn MongoDB thay vì MySQL/PostgreSQL?

Vì các công trình NCKH có hơn 10 loại hình với các trường thông tin hoàn toàn khác nhau (bài báo cần ISSN/chỉ số ảnh hưởng; đề tài cần mã số/kinh phí; bằng sáng chế cần số đơn/ngày cấp). MongoDB Document Model cho phép lưu trữ cấu trúc động mà không làm phức tạp hóa database schema.

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

Hệ thống sử dụng hoàn toàn các công nghệ mã nguồn mở (Spring Boot, Angular, MongoDB Community), 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ủ nội bộ hoặc Cloud VPS (ước tính khoảng 300.000 – 500.000 VNĐ/tháng).


Kết luận

Đề tài "Xây dựng website quản lý và tính điểm các công trình nghiên cứu khoa học" đã giải quyết triệt để bài toán chuyển đổi số trong công tác quản lý học thuật tại Trường Đại học Sư phạm Kỹ thuật TP.HCM. Bằng việc kết hợp hiệu quả giữa kiến trúc Microservices-ready của Spring Boot, sự linh hoạt của MongoDB và giao diện hiện đại từ Angular & NG-ZORRO, hệ thống mang lại một giải pháp toàn diện, tối ưu hóa quy trình hành chính và nâng cao tính minh bạch trong nghiên cứu khoa học. Dự án là tiền đề vững chắc để tiếp tục mở rộng tích hợp các dịch vụ học thuật thông minh trong tương lai.