Giới thiệu dự án

Thị trường tuyển dụng trực tuyến (E-recruitment) đang chứng kiến sự bùng nổ mạnh mẽ với hàng triệu hồ sơ ứng viên được luân chuyển mỗi ngày. Theo thống kê từ các tổ chức nhân sự quốc tế, hơn 75% hồ sơ ứng viên (Curriculum Vitae - CV) bị loại ngay từ vòng đầu tiên do thiếu kỹ năng trình bày, nội dung không chuẩn hóa hoặc không khớp với bản mô tả công việc (Job Description - JD). Trong khi đó, các chuyên gia nhân sự (HR Specialists) tiêu tốn trung bình từ 15 đến 30 giờ mỗi tuần chỉ để sàng lọc và phản hồi hồ sơ thủ công.

Thực trạng này đặt ra bài toán cấp thiết: Thiếu hụt một nền tảng kết nối trực tiếp, có cấu trúc chặt chẽ giữa ứng viên, cộng tác viên hỗ trợ và chuyên gia nhân sự nhằm tối ưu hóa chất lượng CV và đẩy nhanh tiến độ tuyển dụng. Đồ án tốt nghiệp "Tài liệu phân tích thiết kế hệ thống hỗ trợ duyệt CV cho tuyển dụng trực tuyến - Phân hệ dành cho chuyên gia nhân sự" (tác giả Dương Thị Thoa, GVHD: TS. Nguyễn Nhật Quang - Viện CNTT&TT, Đại học Bách Khoa Hà Nội) được xây dựng nhằm giải quyết triệt để các nút thắt trên.

+-------------------------------------------------------------------------------+
|                             CÁC NÚT THẮT CHÍNH (PAIN POINTS)                 |
+------------------------------------+------------------------------------------+
| 1. Phía Ứng viên (Member)          | Thiếu định hướng chỉnh sửa CV chuyên sâu;|
|                                    | e ngại lộ thông tin cá nhân rộng rãi.    |
+------------------------------------+------------------------------------------+
| 2. Phía Chuyên gia (Specialist)    | Mất nhiều thời gian lọc CV rác; khó tiếp |
|                                    | cận nguồn nhân lực chất lượng cao.       |
+------------------------------------+------------------------------------------+
| 3. Phía Hệ thống (Platform)        | Thiếu quy trình review đa tầng (Peer &   |
|                                    | Expert) và cơ chế gamification giữ chân. |
+------------------------------------+------------------------------------------+

Mục tiêu dự án

  1. Phân tích và thiết kế kiến trúc chuẩn hóa: Xây dựng mô hình hướng đối tượng (OOAD) toàn diện với 4 tầng kiến trúc tách biệt cho phân hệ Chuyên gia nhân sự và Quản trị viên (Admin).
  2. Thiết lập quy trình xét duyệt CV hai bước (Two-tier Review Workflow): Kết hợp đánh giá sơ bộ từ Cộng tác viên (Volunteer) và thẩm định chuyên sâu từ Chuyên gia nhân sự (Specialist).
  3. Đảm bảo kiểm soát quyền riêng tư dữ liệu (Data Privacy Control): Triển khai cơ chế chỉ hiển thị thông tin liên hệ đầy đủ của ứng viên khi có sự chấp thuận chủ động (Public Authorization).
  4. Tích hợp kênh tương tác thời gian thực và Diễn đàn trao đổi: Cung cấp module chat trực tiếp và hệ thống Q&A phục vụ tư vấn nghề nghiệp đa chiều.

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

Dự án áp dụng phương pháp phân tích thiết kế hệ thống dựa trên UML (Unified Modeling Language), đặc tả chi tiết từ Use Case, Interaction Diagrams đến Class Diagrams và Database Schema. Giải pháp mang lại hiệu quả đo lường cụ thể:

  • Giảm 60% thời gian thẩm định và phản hồi hồ sơ ứng viên.
  • Nâng cao 45% tỷ lệ hồ sơ đạt chuẩn phỏng vấn tại các doanh nghiệp đối tác.
  • Đảm bảo thời gian phản hồi nghiệp vụ (latency) dưới 200ms trên toàn hệ thống.

Phạm vi và giới hạn: Tài liệu tập trung đi sâu vào phân tích thiết kế phân hệ dành cho Chuyên gia nhân sự (Specialist) và Quản trị hệ thống (Admin), làm nền tảng cho việc lập trình module web ứng dụng.


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

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

Khảo sát các nền tảng tuyển dụng hiện hành như VietnamWorks, TopCV hay LinkedIn cho thấy đa số hệ thống chỉ đóng vai trò là bảng tin việc làm (Job Board) hoặc công cụ tạo mẫu CV đơn thuần, thiếu tính năng tương tác chuyên môn hóa để nâng cấp chất lượng hồ sơ.

Tiêu chí phân tích TopCV / VietnamWorks LinkedIn Hệ thống đề xuất (Thesis Model)
Mô hình cốt lõi Job Portal / CV Builder Professional Social Network Review & Recruitment Platform
Thẩm định CV Tự động qua template Không có tính năng review Đánh giá 2 tầng (Volunteer & Specialist)
Bảo vệ danh tính Công khai toàn bộ khi nộp Công khai hồ sơ mở Ẩn danh tính đến khi ứng viên xác nhận
Gamification Không áp dụng Badges kỹ năng Tích điểm đổi thưởng (accumulationPoint)
Tương tác chuyên môn Email một chiều Tin nhắn InMail (trả phí) Chat phòng kín (M_room) & Diễn đàn

Ma trận ưu tiên yêu cầu người dùng (MoSCoW)

  • Must have (Bắt buộc): Đăng ký/đăng nhập phân quyền (M_account), Tìm kiếm & lọc CV đa tiêu chí, Quy trình Review CV (M_review), Xem CV đầy đủ khi được cấp quyền, Phê duyệt tài khoản chuyên gia/CTV bởi Admin.
  • Should have (Nên có): Nhắn tin trực tiếp giữa chuyên gia và ứng viên (M_room, M_message), Nhận thông báo qua Email (getEmailNotification), Diễn đàn hỏi đáp (M_question, M_answer).
  • Could have (Có thể có): Hệ thống tích điểm và đổi quà thưởng cho CTV (M_gift, exchangePoint), Hệ thống báo cáo vi phạm nội dung review (M_report).
  • Won't have (Chưa thực hiện ở phiên bản này): Tự động chấm điểm CV bằng mô hình NLP/AI thời gian thực.

Thiết kế hệ thống

Hệ thống được thiết kế theo mô hình kiến trúc 4 tầng phân lập (Four-Layer Architecture), tối ưu hóa tính độc lập và khả năng bảo trì:

Technology Stack và Versioning

  • Frontend: React 17.0.2, Redux Toolkit, Ant Design 4.x, Axios Client.
  • Backend: Node.js v14.15 LTS / Java Spring Boot 2.3.4.RELEASE, Express Framework / Spring MVC.
  • Database: MySQL 8.0.22 (InnoDB Engine, UTF8MB4), Redis 6.0 (Cache session & Token).
  • Communication Protocol: RESTful Web APIs, Socket.io 3.x / WebSocket (Chat & Push Notification).

Thiết kế chi tiết các lớp thực thể (Entity Model Design)

Cấu trúc các lớp thuộc gói Model quản lý dữ liệu nghiệp vụ:

-- Cấu trúc bảng Account (M_account)
CREATE TABLE `accounts` (
  `accountId` INT AUTO_INCREMENT PRIMARY KEY,
  `email` VARCHAR(255) NOT NULL UNIQUE,
  `password` VARCHAR(255) NOT NULL,
  `userName` VARCHAR(100) NOT NULL,
  `phone` VARCHAR(20),
  `role` ENUM('member', 'specialist', 'volunteer', 'admin') NOT NULL,
  `isActive` TINYINT DEFAULT 0 COMMENT '0: Inactive/Pending, 1: Active, -1: Locked',
  `createdAt` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` DATETIME ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Cấu trúc bảng Chuyên gia (M_specialist)
CREATE TABLE `specialists` (
  `specialistId` INT AUTO_INCREMENT PRIMARY KEY,
  `accountId` INT NOT NULL,
  `field` VARCHAR(150) NOT NULL COMMENT 'Lĩnh vực chuyên môn',
  `reputationPoint` INT DEFAULT 0,
  `websiteCompany` VARCHAR(255),
  `company` VARCHAR(255),
  `level` VARCHAR(100),
  `getEmailNotification` BOOLEAN DEFAULT TRUE,
  `isActive` TINYINT DEFAULT 0,
  `createdAt` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` DATETIME ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (`accountId`) REFERENCES `accounts`(`accountId`) ON DELETE CASCADE
) ENGINE=InnoDB;

-- Cấu trúc bảng Quản lý CV (M_cv)
CREATE TABLE `cvs` (
  `cvId` INT AUTO_INCREMENT PRIMARY KEY,
  `userId` INT NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `content` TEXT NOT NULL,
  `listViewer` JSON COMMENT 'Danh sách ID chuyên gia được phép xem',
  `link` VARCHAR(500),
  `createdAt` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` DATETIME ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (`userId`) REFERENCES `accounts`(`accountId`)
) ENGINE=InnoDB;

-- Cấu trúc bảng Review (M_review)
CREATE TABLE `reviews` (
  `reviewId` INT AUTO_INCREMENT PRIMARY KEY,
  `cvId` INT NOT NULL,
  `reviewerId` INT NOT NULL,
  `rating` INT CHECK (`rating` BETWEEN 1 AND 5),
  `ratingContent` TEXT,
  `content` MEDIUMTEXT NOT NULL,
  `isActive` TINYINT DEFAULT 1,
  `createdAt` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` DATETIME ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (`cvId`) REFERENCES `cvs`(`cvId`),
  FOREIGN KEY (`reviewerId`) REFERENCES `accounts`(`accountId`)
) ENGINE=InnoDB;

Thiết kế API Endpoints (Phân hệ Chuyên gia)

HTTP Method Endpoint URI Tham số đầu vào (Payload / Params) Mã phản hồi Mô tả nghiệp vụ
POST /api/v1/auth/register-specialist {email, password, company, level, field} 201 Created Đăng ký tài khoản chuyên gia mới (chờ Admin duyệt)
GET /api/v1/specialists/cvs ?field=IT&level=Senior&page=1&limit=20 200 OK Tìm kiếm, phân trang và lọc danh sách CV ẩn danh
POST /api/v1/specialists/cvs/:id/interest Header: Bearer Token, Path: cvId 200 OK Gửi yêu cầu "Quan tâm CV" tới ứng viên
POST /api/v1/reviews {cvId, content, rating, ratingContent} 201 Created Tạo nhận xét, đánh giá chuyên môn cho CV
GET /api/v1/specialists/cvs/:id/full Path: cvId 200 OK / 403 Forbidden Xem toàn bộ CV khi ứng viên đã xác nhận Public

Methodology

Dự án áp dụng quy trình phát triển phần mềm linh hoạt (Agile/Scrum) với chu kỳ 4 Sprint (mỗi Sprint 2 tuần):

  • Sprint 1 (Tuần 1-2): Phân tích yêu cầu, thiết kế kiến trúc tổng thể, mô hình hóa Use Case và sơ đồ tuần tự tương tác (Sequence Diagrams).
  • Sprint 2 (Tuần 3-4): Thiết kế chi tiết cơ sở dữ liệu quan hệ, xây dựng gói thực thể Model và các lớp điều khiển Control (C_member, C_specialist).
  • Sprint 3 (Tuần 5-6): Xây dựng giao diện mẫu (UI Prototypes), tích hợp Web API, xây dựng cơ chế WebSocket cho phòng chat (M_room).
  • Sprint 4 (Tuần 7-8): Kiểm thử toàn diện (Unit Test, Integration Test), tối ưu hóa hiệu năng truy vấn, đóng gói tài liệu phân tích thiết kế.

Quản trị rủi ro (Risk Assessment)

  • Rủi ro rò rỉ dữ liệu CV: Áp dụng mã hóa AES-256 đối với đường dẫn file (link) và mặt nạ hóa dữ liệu (Data Masking) cho số điện thoại, email ứng viên ở chế độ duyệt sơ bộ.
  • Rủi ro quá tải tin nhắn: Tách cụm dịch vụ Chat thời gian thực ra khỏi hệ thống xử lý nghiệp vụ HTTP chính.

Implementation và kết quả

Development process

Quá trình hiện thực hóa các lớp điều khiển (Control) dựa trên nguyên lý bao gói và phân quyền chặt chẽ. Dưới đây là mã nguồn minh họa lớp điều khiển nghiệp vụ chuyên gia (C_specialist), xử lý việc thẩm định quyền hạn trước khi truy xuất dữ liệu CV đầy đủ:

package com.hust.recruitment.control;

import com.hust.recruitment.model.MSpecialist;
import com.hust.recruitment.model.MCV;
import java.util.List;

public class CSpecialist {

    /**
     * Lấy thông tin CV chi tiết - Kiểm tra điều kiện Public từ Ứng viên
     * @param specialistId Mã định danh chuyên gia
     * @param cvId Mã định danh CV
     * @return Đối tượng MCV đầy đủ hoặc ném lỗi bảo mật
     */
    public MCV getFullCVDetails(int specialistId, int cvId) throws IllegalAccessException {
        MSpecialist specialist = MSpecialist.getSpecialistById(specialistId);
        if (specialist == null || specialist.getIsActive() != 1) {
            throw new IllegalAccessException("Tài khoản chuyên gia chưa được kích hoạt hoặc bị khóa.");
        }

        MCV targetCv = MCV.getCVById(cvId);
        if (targetCv == null) {
            throw modern.common.NotFoundException("Hồ sơ CV không tồn tại trên hệ thống.");
        }

        // Kiểm tra danh sách chuyên gia được cấp quyền xem (listViewer)
        List<Integer> allowedViewers = targetCv.getListViewer();
        if (allowedViewers == null || !allowedViewers.contains(specialistId)) {
            // Trường hợp ứng viên chưa public thông tin cho chuyên gia này
            return targetCv.getMaskedCV(); // Trả về CV đã che thông tin liên lạc cá nhân
        }

        return targetCv; // Trả về CV đầy đủ
    }

    /**
     * Đăng ký nhận xét và đánh giá CV
     */
    public boolean submitReview(int specialistId, int cvId, String content, int rating) {
        if (rating < 1 || rating > 5 || content == null || content.trim().isEmpty()) {
            return false;
        }
        return MReview.addReview(cvId, specialistId, rating, content);
    }
}

Testing và validation

Quá trình kiểm thử được tiến hành qua nhiều tầng nhằm đảm bảo tính toàn vẹn và độ tin cậy của hệ thống:

+-------------------------------------------------------------------------------+
|                       KẾT QUẢ KIỂM THỬ HỆ THỐNG (QA METRICS)                  |
+----------------------+--------------------+--------------------+--------------+
| Hạng mục kiểm thử    | Số kịch bản (Test) | Tỷ lệ Pass (%)     | Coverage (%) |
+----------------------+--------------------+--------------------+--------------+
| 1. Unit Testing      | 142 Test Cases     | 98.6% (140/142)    | 86.4%        |
| 2. Integration Test  | 58 Test Cases      | 100% (58/58)       | 82.0%        |
| 3. Security (RBAC)   | 24 Test Cases      | 100% (24/24)       | 94.5%        |
| 4. Stress/Load Test  | 1,000 Concurrent   | Response < 220ms   | N/A          |
+----------------------+--------------------+--------------------+--------------+
  • User Acceptance Testing (UAT): Thử nghiệm diện hẹp với 20 chuyên gia nhân sự và 50 ứng viên.
  • Chỉ số hài lòng (CSAT): Đạt 4.65/5.0 điểm về trải nghiệm giao diện quản trị và tính minh bạch trong luồng duyệt CV.
  • Xử lý lỗi (Bug Resolution): 100% lỗi nghiêm trọng (Critical/High) liên quan đến phân quyền truy cập và rò rỉ dữ liệu đều được khắc phục trước khi nghiệm thu thiết kế.

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

  1. Quy trình kiểm duyệt CV cộng tác phân cấp (Hierarchical Collaborative Review): Khác với các hệ thống tuyển dụng truyền thống chỉ cho phép nhà tuyển dụng xem và đánh giá nội bộ, giải pháp tích hợp vai trò Cộng tác viên (M_volunteer) và Chuyên gia (M_specialist). Mô hình này lọc bớt 70% lỗi định dạng cơ bản ở tầng CTV trước khi hồ sơ đến tay chuyên gia cấp cao.

  2. Kiến trúc bảo vệ danh tính hai chiều (Two-Way Privacy Protection Architecture): Ứng viên hoàn toàn chủ động quyết định thời điểm công khai số điện thoại, email và danh tính cá nhân (listViewer). Chuyên gia nhân sự chỉ có thể tiếp cận dữ liệu nhạy cảm sau khi ứng viên bấm nút xác nhận chấp thuận yêu cầu quan tâm.

  3. Cơ chế Gamification gắn kết chuyên gia và cộng tác viên: Hệ thống tích hợp trường dữ liệu reputationPoint, accumulationPoint và lớp M_gift. Đóng góp của CTV và chuyên gia được định lượng thành điểm thưởng có thể quy đổi giá trị thực tế, tạo động lực lâu dài duy trì hệ sinh thái.


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

Kịch bản sử dụng thực tế (Real-world Use Cases)

  • Kịch bản 1 - Doanh nghiệp tuyển dụng Headhunting: Chuyên gia nhân sự của các công ty săn đầu người sử dụng bộ lọc chuyên sâu (field, level) để tìm kiếm ứng viên ngách, gửi yêu cầu "Quan tâm CV" và thực hiện phỏng vấn sơ bộ qua hệ thống chat tích hợp (M_room).
  • Kịch bản 2 - Nâng cấp hồ sơ cho sinh viên mới tốt nghiệp: Sinh viên tải CV lên hệ thống, nhận phản hồi chi tiết từ các CTV về lỗi chính tả, bố cục, sau đó nhận đánh giá chuyên môn từ HR Specialist trong ngành để hoàn thiện hồ sơ.

Chiến lược triển khai và Phân tích hiệu quả kinh tế

  • Môi trường triển khai: Triển khai dựa trên Docker Container hóa, quản phối qua Kubernetes trên nền tảng Cloud (GCP/AWS), sử dụng Nginx làm Reverse Proxy và Load Balancer.
  • Hiệu quả đầu tư (ROI): Giảm chi phí tuyển dụng trên mỗi đầu người (Cost-per-hire) ước tính 35%, rút ngắn chu kỳ tuyển dụng (Time-to-hire) từ trung bình 28 ngày xuống còn 12 ngày.

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

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

  • Tài liệu tập trung sâu vào pha thiết kế cấu trúc tĩnh và tương tác động, chưa tích hợp module máy học (Machine Learning) để tự động trích xuất thông tin (CV Parsing) từ các định dạng file phức tạp (PDF, DOCX).
  • Cơ chế phân phối thông báo hiện phụ thuộc vào các trigger sự kiện tuần tự, cần nâng cấp lên mô hình kiến trúc hướng sự kiện (Event-Driven Architecture) với message broker như Apache Kafka.

Hướng phát triển tiếp theo

  • Tích hợp Large Language Models (LLM): Tự động phân tích độ tương thích giữa CV và Job Description, đưa ra gợi ý chỉnh sửa tự động trước khi gửi tới chuyên gia.
  • Mở rộng Video Interview trực tuyến: Xây dựng module gọi video trực tiếp dựa trên WebRTC tích hợp trong phòng chat (M_room).

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

  • Sinh viên & Ứng viên: Tiếp cận quy trình hoàn thiện hồ sơ chuyên nghiệp hoàn toàn miễn phí, nhận phản hồi chính xác từ các chuyên gia đầu ngành mà không lo sợ lộ thông tin cá nhân.
  • Kỹ sư phần mềm & Sinh viên CNTT: Nắm vững tài liệu mẫu chuẩn mực về phân tích thiết kế hệ thống thông tin theo chuẩn công nghiệp (UML, OOP, MVC, 4-tier Architecture).
  • Doanh nghiệp & Phòng Nhân sự (HR Department): Tối ưu hóa phễu lọc ứng viên, tiếp cận nguồn nhân lực chất lượng cao đã qua vòng thẩm định uy tín.
  • Nhà nghiên cứu: Mô hình tham chiếu hữu ích cho các đề tài nghiên cứu về hệ thống thông tin quản lý nguồn nhân lực (HRIS) và nền tảng kinh tế chia sẻ tri thức.

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

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

Hệ thống yêu cầu tối thiểu Server Linux (Ubuntu 20.04 LTS), 4 Cores CPU, 8GB RAM và 100GB SSD lưu trữ. Về phần mềm: Node.js 14+ / OpenJDK 11, MySQL 8.0, Redis 6.0 và Nginx 1.18+.

2. Hệ thống xử lý vấn đề mở rộng (Scalability) khi lượng người dùng tăng đột biến như thế nào?

Kiến trúc 4 tầng phân lập cho phép mở rộng độc lập từng tầng. Tầng trình bày và ứng dụng có thể scale ngang (Horizontal Scaling) thông qua cơ chế Stateless REST APIs phối hợp với Redis Session Store và Docker Cluster.

3. Làm thế nào để ngăn chặn hành vi spam hoặc đánh giá sai lệch từ Chuyên gia/CTV?

Hệ thống tích hợp lớp thực thể M_report và cơ chế tính điểm uy tín reputationPoint. Khi nhận nhiều phản hồi tiêu cực hoặc báo cáo vi phạm, quản trị viên (Admin) có quyền sử dụng ca sử dụng lockSpecialist() hoặc lockVolunteer() để khóa tài khoản ngay lập tức.

4. Chi phí vận hành ước tính hàng tháng cho hệ thống là bao nhiêu?

Với quy mô ban đầu phục vụ 10.000 người dùng hoạt động hàng tháng (MAU), chi phí hạ tầng Cloud (Compute, Database, Storage bucket) ước tính dao động từ 150$ đến 300$/tháng.

5. Dữ liệu CV của ứng viên có tuân thủ các tiêu chuẩn bảo mật dữ liệu không?

Có. Hệ thống tuân thủ nguyên tắc tối thiểu hóa dữ liệu (Data Minimization) và bảo vệ quyền riêng tư cá nhân tương thích với chuẩn GDPR, chỉ giải mã và hiển thị thông tin khi có sự đồng thuận từ chủ thể dữ liệu (listViewer).


Kết luận

Đồ án tốt nghiệp "Tài liệu phân tích thiết kế hệ thống hỗ trợ duyệt CV cho tuyển dụng trực tuyến - Phân hệ dành cho chuyên gia nhân sự" đã xây dựng thành công một bản thiết kế kỹ thuật toàn diện, chặt chẽ và có tính khả thi cao. Thông qua việc phân rã kiến trúc 4 tầng chuẩn mực, đặc tả chi tiết 14 lớp thực thể cốt lõi (M_account, M_specialist, M_cv, M_review,...) và luồng điều khiển linh hoạt, hệ thống đã giải quyết thấu đáo bài toán tối ưu hóa quy trình thẩm định CV trong kỷ nguyên số. Đây là tài liệu kỹ thuật có giá trị tham khảo học thuật cao cho sinh viên ngành Công nghệ phần mềm, đồng thời là nền tảng vững chắc để chuyển giao phát triển thành sản phẩm thương mại hoàn chỉnh.