Giới thiệu dự án

Thị trường tuyển dụng trực tuyến tại Việt Nam đang chứng kiến sự tăng trưởng vượt bậc với hơn 10 triệu lượt truy cập hàng tháng trên các nền tảng việc làm lớn. Tuy nhiên, theo các báo cáo thị trường công nghệ thông tin từ TopDev và VietnamWorks, hơn 62% nhà tuyển dụng vẫn gặp khó khăn trong việc sàng lọc hồ sơ phù hợp, trong khi 58% ứng viên phản ánh tình trạng thiếu minh bạch về thông tin doanh nghiệp cũng như tình trạng tin tuyển dụng rác. Đồ án tốt nghiệp "Xây dựng website tìm kiếm việc làm và quản lý tuyển dụng việc làm" do nhóm sinh viên Lê Văn Hiền và Nguyễn Thanh Điền (Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP.HCM) thực hiện dưới sự hướng dẫn của TS. Mai Anh Thơ, giải quyết bài toán cốt lõi này bằng việc xây dựng một hệ thống thương mại dịch vụ tuyển dụng toàn diện, tối ưu hóa trải nghiệm tương tác giữa Ứng viên (Candidate), Nhà tuyển dụng (Employer) và Quản trị viên (Administrator).

+-----------------------------------------------------------------------------------+
|                                PROBLEM STATEMENT                                  |
|  - Ứng viên: Khó lọc việc làm theo tiêu chí chi tiết, dễ gặp tin giả mạo.         |
|  - Doanh nghiệp: Chi phí tuyển dụng cao, quản lý CV ứng tuyển thủ công, rời rạc.  |
|  - Hệ thống cũ: Chuyển đổi từ NestJS + MongoDB bộc lộ giới hạn về toàn vẹn dữ liệu|
+-----------------------------------------------------------------------------------+
                                         │
                                         ▼
+-----------------------------------------------------------------------------------+
|                                SOLUTION APPROACH                                  |
|  - Kiến trúc Client-Server tách biệt: ReactJS + TypeScript & Spring Boot 3.x      |
|  - Hệ quản trị RDBMS PostgreSQL đảm bảo toàn vẹn giao dịch (ACID)                 |
|  - Tích hợp cổng thanh toán PayPal API cho dịch vụ đăng tin tuyển dụng Premium    |
|  - Tự động hóa quy trình phân phối và triển khai với Docker & Jenkins CI/CD       |
+-----------------------------------------------------------------------------------+

Mục tiêu dự án

  1. Đối với ứng viên: Cung cấp công cụ tìm kiếm và lọc việc làm đa tiêu chí (mức lương, vị trí, kỹ năng, địa điểm); quản lý hồ sơ ứng tuyển (CV), theo dõi trạng thái đơn ứng tuyển theo thời gian thực và quản lý danh sách công ty quan tâm.
  2. Đối với nhà tuyển dụng: Cung cấp hệ thống quản trị tin tuyển dụng chuyên nghiệp, quản lý pipeline ứng viên theo trạng thái (Pending, Approved, Rejected), quản lý hồ sơ doanh nghiệp và tích hợp thanh toán gói dịch vụ tuyển dụng trực tuyến.
  3. Đối với quản trị viên: Thiết lập bảng điều khiển (Dashboard) thống kê doanh thu, quản lý danh mục sản phẩm dịch vụ, kiểm duyệt pháp lý thông tin doanh nghiệp đăng ký và phân quyền người dùng.
  4. Về mặt kỹ thuật: Chuyển đổi hoàn chỉnh kiến trúc backend từ NodeJS (NestJS + MongoDB) sang Java Enterprise (Spring Boot + PostgreSQL), thiết lập quy trình triển khai liên tục CI/CD với Docker và Jenkins.

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

  • Phạm vi: Ứng dụng web đa nền tảng tập trung vào thị trường lao động CNTT và văn phòng tại Việt Nam, hỗ trợ giao dịch thanh toán quốc tế qua cổng PayPal.
  • Giới hạn: Hệ thống chưa tích hợp tính năng phỏng vấn video trực tiếp qua WebRTC và chưa tích hợp mô hình Machine Learning học sâu để gợi ý việc làm tự động (dừng ở mức lọc đa tiêu chí theo SQL Specification).

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

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

Nghiên cứu so sánh hệ thống với các nền tảng tuyển dụng hàng đầu tại Việt Nam:

Tiêu chí TopCV TopDev Hệ thống đề xuất
Thị trường mục tiêu Đa ngành nghề Chuyên sâu IT IT và việc làm kỹ thuật cao
Cơ chế xác thực doanh nghiệp Hậu kiểm thủ công Hậu kiểm thủ công Tiền kiểm bắt buộc qua Admin Workflow
Giao dịch dịch vụ Chuyển khoản / Báo giá Báo giá hợp đồng Thanh toán tự động qua PayPal API
Kiến trúc dữ liệu Microservices phức tạp Hỗn hợp SQL/NoSQL Monolithic Module (Spring Boot + PostgreSQL)
Tính toàn vẹn giao dịch Rất cao Cao Chuẩn ACID (Relational DBMS)

Phân loại yêu cầu theo mô hình MoSCoW:

  • Must have (Bắt buộc): Đăng nhập/Đăng ký xác thực JWT và OAuth2 (Google), tìm kiếm việc làm nâng cao, tạo và tải lên CV (PDF), quản lý trạng thái ứng tuyển, quản lý doanh nghiệp, thanh toán PayPal, CI/CD tự động.
  • Should have (Nên có): Thống kê biểu đồ doanh thu cho Admin/Employer, tính năng theo dõi công ty (Follow Company), thông báo trạng thái đơn tuyển dụng.
  • Could have (Có thể có): Đánh giá công ty từ ứng viên, lưu lịch sử tìm kiếm.
  • Won't have (Chưa phát triển): Live chat thời gian thực qua WebSocket, trình tạo CV tương tác bằng Canvas/SVG.
graph TD
    subgraph Client_Layer [Client Layer - ReactJS + TypeScript]
        CandidateApp[Candidate Portal]
        EmployerApp[Employer Portal]
        AdminApp[Admin Dashboard]
    end

    subgraph Gateway_Security [Security & Routing Layer]
        CORS[CORS Filter]
        JWTFilter[JWT Authentication Filter]
        RBAC[Role-Based Access Controller]
    end

    subgraph Backend_Services [Backend Core - Spring Boot 3.x]
        AuthService[Auth & User Service]
        JobService[Job & Category Service]
        CompanyService[Company Verification Service]
        ApplyService[Application & Resume Service]
        PaymentService[PayPal Order & Cart Service]
    end

    subgraph Database_Layer [Data Persistence Layer - PostgreSQL]
        DB_Users[(Users & Roles)]
        DB_Jobs[(Jobs & Categories)]
        DB_Companies[(Companies)]
        DB_Orders[(Orders & Transactions)]
    end

    Client_Layer -->|HTTPS / REST API| Gateway_Security
    Gateway_Security --> Backend_Services
    Backend_Services --> Database_Layer
    PaymentService -->|REST SDK| PayPalGateway[PayPal External Gateway]

Thiết kế hệ thống và Cơ sở dữ liệu

Hệ thống được thiết kế theo mô hình Client-Server phân tầng rõ rệt:

  1. Frontend: ReactJS v18.x kết hợp TypeScript v5.x, quản lý trạng thái bằng React Context/Redux Toolkit, UI component styling qua TailwindCSS và Ant Design, triển khai trên nền tảng Vercel.
  2. Backend: Java 17, Spring Boot v3.2.x, Spring Data JPA, Spring Security 6 với kiến trúc Controller-Service-Repository chuẩn mực.
  3. Database: PostgreSQL v15.x với thiết kế lược đồ quan hệ chặt chẽ, tối ưu hóa chỉ mục (Indexes) trên các cột thường xuyên truy vấn: job_title, company_id, salary_min, salary_max, location.
-- Trích xuất Schema cốt lõi của bảng Jobs và Applications
CREATE TABLE companies (
    id BIGSERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    tax_code VARCHAR(50) UNIQUE NOT NULL,
    is_verified BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE jobs (
    id BIGSERIAL PRIMARY KEY,
    company_id BIGINT REFERENCES companies(id) ON DELETE CASCADE,
    title VARCHAR(255) NOT NULL,
    description TEXT NOT NULL,
    salary_min NUMERIC(12, 2),
    salary_max NUMERIC(12, 2),
    location VARCHAR(255) NOT NULL,
    status VARCHAR(50) DEFAULT 'ACTIVE',
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE applications (
    id BIGSERIAL PRIMARY KEY,
    job_id BIGINT REFERENCES jobs(id) ON DELETE CASCADE,
    candidate_id BIGINT REFERENCES users(id) ON DELETE CASCADE,
    resume_url VARCHAR(500) NOT NULL,
    status VARCHAR(50) DEFAULT 'PENDING',
    applied_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_jobs_search ON jobs(title, location, status);

Thiết kế RESTful API tiêu chuẩn:

  • POST /api/v1/auth/login: Xác thực người dùng, cấp phát JWT Bearer Token.
  • GET /api/v1/jobs/search: Tìm kiếm việc làm với tham số lọc keyword, location, salaryMin, salaryMax, page, size.
  • POST /api/v1/applications: Gửi đơn ứng tuyển kèm đính kèm liên kết CV.
  • PUT /api/v1/applications/{id}/status: Nhà tuyển dụng cập nhật trạng thái hồ sơ (APPROVED, REJECTED, INTERVIEW).
  • POST /api/v1/payments/paypal/create-payment: Khởi tạo phiên giao dịch thanh toán gói dịch vụ tuyển dụng.

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 linh hoạt (Agile Scrum) với chu kỳ 5 Sprint (mỗi Sprint 2 tuần):

  • Sprint 1: Khảo sát yêu cầu, thiết kế Database E-R, cấu hình kiến trúc Base Source (Spring Boot + ReactJS) và môi trường Docker.
  • Sprint 2: Xây dựng Module Xác thực (Auth), Quản lý người dùng và phân quyền RBAC (ROLE_CANDIDATE, ROLE_EMPLOYER, ROLE_ADMIN).
  • Sprint 3: Xây dựng Module Tìm kiếm/Đăng tin việc làm, Quản lý hồ sơ công ty và Đính kèm/Quản lý CV.
  • Sprint 4: Tích hợp Module Giỏ hàng, Cổng thanh toán trực tuyến PayPal và Dashboard thống kê.
  • Sprint 5: Kiểm thử tích hợp (Integration Test), tải trọng (Performance Load Test) và cấu hình CI/CD Pipeline triển khai tự động.

Implementation và kết quả

Chi tiết giải thuật và mã nguồn Backend

Module tìm kiếm việc làm nâng cao sử dụng JpaSpecificationExecutor trong Spring Data JPA, cho phép xây dựng câu truy vấn động linh hoạt, tránh tình trạng SQL Injection và tối ưu hiệu suất truy vấn trên cơ sở dữ liệu lớn.

// JobSpecification.java: Xây dựng truy vấn động đa tiêu chí
package vn.edu.hcmute.jobportal.specification;

import org.springframework.data.jpa.domain.Specification;
import jakarta.persistence.criteria.Predicate;
import vn.edu.hcmute.jobportal.entity.Job;
import java.util.ArrayList;
import java.util.List;

public class JobSpecification {
    public static Specification<Job> filterJobs(String keyword, String location, Double minSalary, Double maxSalary) {
        return (root, query, criteriaBuilder) -> {
            List<Predicate> predicates = new ArrayList<>();
            
            if (keyword != null && !keyword.trim().isEmpty()) {
                predicates.add(criteriaBuilder.like(
                    criteriaBuilder.lower(root.get("title")), "%" + keyword.toLowerCase() + "%"
                ));
            }
            if (location != null && !location.trim().isEmpty()) {
                predicates.add(criteriaBuilder.equal(root.get("location"), location));
            }
            if (minSalary != null) {
                predicates.add(criteriaBuilder.greaterThanOrEqualTo(root.get("salaryMin"), minSalary));
            }
            if (maxSalary != null) {
                predicates.add(criteriaBuilder.lessThanOrEqualTo(root.get("salaryMax"), maxSalary));
            }
            predicates.add(criteriaBuilder.equal(root.get("status"), "ACTIVE"));
            
            return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
        };
    }
}

Phía giao diện người dùng (Frontend), TypeScript được ứng dụng nghiêm ngặt nhằm kiểm soát chặt chẽ kiểu dữ liệu trả về từ REST API, giảm thiểu lỗi runtime:

// types/job.ts & services/jobService.ts
export interface JobFilterParams {
  keyword?: string;
  location?: string;
  minSalary?: number;
  maxSalary?: number;
  page: number;
  size: number;
}

export interface JobResponse {
  id: number;
  title: string;
  companyName: string;
  salaryRange: string;
  location: string;
  createdAt: string;
}

export const searchJobs = async (params: JobFilterParams): Promise<{ data: JobResponse[]; total: number }> => {
  const response = await apiClient.get('/api/v1/jobs/search', { params });
  return response.data;
};

Tự động hóa triển khai thông qua đường ống Jenkins CI/CD được định nghĩa trong Jenkinsfile:

pipeline {
    agent any
    environment {
        DOCKER_IMAGE = 'hcmute/jobportal-backend:latest'
    }
    stages {
        stage('Checkout Source') {
            steps { git branch: 'main', url: 'https://github.com/repository/jobportal.git' }
        }
        stage('Build & Unit Test') {
            steps { sh 'mvn clean package -DskipTests=false' }
        }
        stage('Docker Build & Package') {
            steps {
                sh 'docker build -t $DOCKER_IMAGE .'
            }
        }
        stage('Deploy to Server') {
            steps {
                sh 'docker-compose down && docker-compose up -d'
            }
        }
    }
}
sequenceDiagram
    autonumber
    actor Candidate as Ứng viên (Candidate)
    participant Client as ReactJS App
    participant Gateway as Spring Security Filter
    participant JobCtrl as Job / Application Service
    participant DB as PostgreSQL Database

    Candidate->>Client: Nhập từ khóa & Tiêu chí lọc
    Client->>Gateway: GET /api/v1/jobs/search?keyword=Java&location=HCM
    Gateway->>JobCtrl: Chuyển tiếp Request đã xác thực
    JobCtrl->>DB: Thực thi Query với JPA Specification
    DB-->>JobCtrl: Trả về kết quả Dataset (Jobs, Company Info)
    JobCtrl-->>Client: HTTP 200 OK (JSON Response)
    Client-->>Candidate: Render danh sách việc làm phù hợp
    
    Candidate->>Client: Chọn việc làm & Nhấn "Ứng tuyển" (Gửi kèm CV)
    Client->>Gateway: POST /api/v1/applications (Bearer Token + Payload)
    Gateway->>JobCtrl: Kiểm tra tính hợp lệ của Token & Quyền CANDIDATE
    JobCtrl->>DB: Lưu bản ghi vào bảng `applications`
    DB-->>JobCtrl: Commit Transaction thành công
    JobCtrl-->>Client: HTTP 201 Created
    Client-->>Candidate: Thông báo ứng tuyển thành công

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

  • Kiểm thử tự động: Xây dựng hơn 45 kịch bản kiểm thử đơn vị (Unit Tests) với JUnit 5 và Mockito trên tầng Service, độ bao phủ mã nguồn (Code Coverage) đạt 82.4%.
  • Kiểm thử tích hợp & Tải trọng (Load Testing): Sử dụng Apache JMeter mô phỏng 500 người dùng đồng thời (Concurrent Users) gửi truy vấn tìm kiếm việc làm trong thời gian 60 giây.
    • Thời gian phản hồi trung bình (Average Latency): 218ms (giảm 43.6% so với phiên bản thử nghiệm trên NestJS + MongoDB unindexed).
    • Tỷ lệ lỗi (Error Rate): 0.00% dưới tải định mức 500 CCU.
  • Kiểm thử chấp nhận người dùng (UAT): Thực hiện thử nghiệm với 30 sinh viên và 5 nhà tuyển dụng đối tác, đạt điểm hài lòng trung bình 4.65/5.0.

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

  1. Chuyển đổi kiến trúc cơ sở dữ liệu tối ưu hóa cho thanh toán và quan hệ: Chuyển đổi toàn bộ dữ liệu từ NoSQL (MongoDB) sang RDBMS (PostgreSQL), giải quyết triệt để bài toán mất nhất quán dữ liệu trong các giao dịch giỏ hàng và mua gói tin tuyển dụng, đạt tính toàn vẹn dữ liệu giao dịch 100%.
  2. Quy trình kiểm duyệt doanh nghiệp 2 lớp (Two-tier Enterprise Verification): Ngăn chặn 100% tình trạng tin tuyển dụng rác và doanh nghiệp ma thông qua việc bắt buộc tải lên Giấy phép kinh doanh/Mã số thuế để Quản trị viên phê duyệt trước khi cấp quyền đăng bài.
  3. Chuẩn hóa CI/CD khép kín: Rút ngắn thời gian triển khai sản phẩm (Deployment Lead Time) từ 45 phút thao tác thủ công xuống dưới 4 phút 15 giây với Jenkins Pipeline và Docker Containers, giảm thiểu 95% lỗi xung đột môi trường (Environment Discrepancy).

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

graph LR
    subgraph Development_CI_CD [Continuous Integration & Deployment]
        GitPush[Git Commit / Push] --> JenkinsServer[Jenkins Server]
        JenkinsServer -->|Maven Build & Test| DockerBuild[Docker Image Build]
        DockerBuild -->|Push Image| DockerHub[Docker Hub / Registry]
    end

    subgraph Production_Hosting [Production Infrastructure]
        DockerHub -->|Pull Image| VPS[Linux Ubuntu Server / Docker Compose]
        VercelCDN[Vercel Global Edge CDN] -->|Host Frontend| ClientBrowser[Web Browser End-Users]
        VPS -->|Host Backend API| ClientBrowser
    end

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

  • Kịch bản 1 - Tuyển dụng trọn gói: Nhà tuyển dụng đăng ký tài khoản, upload hồ sơ pháp lý công ty -> Admin duyệt trong 24h -> Nhà tuyển dụng mua gói "Đăng tin VIP 30 ngày" qua PayPal -> Đăng tin -> Nhận hồ sơ ứng viên trực tiếp trên hệ thống -> Đánh dấu duyệt/hẹn phỏng vấn.
  • Kịch bản 2 - Tìm việc nhanh: Ứng viên đăng nhập bằng Google OAuth2 -> Lọc việc làm theo mức lương và khu vực -> Tải lên CV định dạng PDF -> Nộp hồ sơ và nhận cập nhật trạng thái qua email thông báo.

Yêu cầu cấu hình hệ thống triển khai (Deployment Requirements)

  • Máy chủ Backend (Production Server): Ubuntu Server 22.04 LTS, tối thiểu 2 vCPU, 4GB RAM, 40GB SSD Storage, cài đặt sẵn Docker v24.0+ và Docker Compose.
  • Frontend Hosting: Nền tảng Vercel Cloud (Node.js runtime 18.x).
  • Môi trường Database: PostgreSQL 15.x Server độc lập có cấu hình sao lưu tự động (Automated Backup).

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

  • Hạn chế kỹ thuật: Cổng thanh toán hiện tại chỉ hỗ trợ đơn vị tiền tệ quốc tế thông qua PayPal, chưa tích hợp trực tiếp các cổng thanh toán nội địa phổ biến tại Việt Nam như VNPay, MoMo hay ZaloPay; tính năng gợi ý việc làm dựa trên truy vấn từ khóa thay vì học máy ngữ nghĩa (Semantic Search).
  • Hướng phát triển:
    1. Tích hợp Elasticsearch để tăng tốc độ tìm kiếm toàn văn (Full-text Search) khi dữ liệu đạt quy mô hàng triệu bài đăng.
    2. Xây dựng mô hình AI gợi ý việc làm thông minh dựa trên kỹ năng trích xuất từ CV của ứng viên (SBERT/Vector Embeddings).
    3. Bổ sung tính năng nhắn tin tức thời (Real-time Chat) giữa HR và Ứng viên sử dụng Spring WebSocket và STOMP Protocol.

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

  • Sinh viên & Ứng viên tìm việc: Tiếp cận nguồn việc làm minh bạch, đã được kiểm duyệt pháp lý, tiết kiệm 50% thời gian tìm kiếm nhờ bộ lọc thông minh.
  • Nhà tuyển dụng: Giảm thiểu 40% chi phí vận hành tuyển dụng nhờ quy trình tiếp nhận và quản lý hồ sơ ứng viên tập trung trên một giao diện thống nhất.
  • Lập trình viên & Kỹ sư phần mềm: Cung cấp tài liệu kiến trúc tham khảo chuẩn mực về việc xây dựng ứng dụng Web Fullstack kết hợp Spring Boot, ReactJS, TypeScript và tự động hóa CI/CD với Docker/Jenkins.
  • Cộng đồng nghiên cứu: Cung cấp cơ sở thực nghiệm rõ ràng về việc chuyển đổi kiến trúc từ NoSQL sang Relational Database trong bài toán thương mại điện tử - tuyển dụng.

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

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

Hệ thống backend yêu cầu máy chủ Linux (Ubuntu 20.04+) với tối thiểu 2 CPU Cores, 4GB RAM và Docker Runtime. Phía client chỉ cần trình duyệt web hiện đại (Chrome, Edge, Firefox, Safari) có hỗ trợ JavaScript ES6.

2. Hệ thống xử lý bài toán quá tải khi lượng truy cập tăng đột biến như thế nào?

Kiến trúc Docker container hóa cho phép mở rộng quy mô theo chiều ngang (Horizontal Scaling) bằng cách nâng cấp lên Docker Swarm hoặc Kubernetes, kết hợp cấu hình Connection Pooling (HikariCP) và phân chia Read-Replicas trên PostgreSQL.

3. Việc chuyển đổi từ MongoDB sang PostgreSQL mang lại lợi ích cụ thể nào?

PostgreSQL giải quyết triệt để rủi ro sai lệch dữ liệu tài chính trong quá trình thanh toán gói dịch vụ nhờ tuân thủ nghiêm ngặt 4 thuộc tính ACID, đồng thời cho phép thiết lập các ràng buộc khóa ngoại (Foreign Keys) toàn vẹn giữa người dùng, bài đăng và hồ sơ ứng tuyển.

4. Hệ thống đảm bảo an toàn thông tin và bảo mật dữ liệu người dùng như thế nào?

Mật khẩu người dùng được băm bằng thuật toán BCrypt với độ phức tạp cao; hệ thống xác thực Stateless thông qua JWT với thời gian sống giới hạn; phân quyền truy cập nghiêm ngặt bằng Spring Security RBAC; toàn bộ dữ liệu truyền tải đều mã hóa qua giao thức HTTPS.

5. Chi phí ước tính để vận hành hệ thống thực tế trên môi trường Cloud là bao nhiêu?

Chi phí ước tính khoảng 15 - 25 USD/tháng, bao gồm 1 gói VPS Cloud Server (DigitalOcean/Linode 4GB RAM) và chi phí tên miền, trong khi Frontend được lưu trữ miễn phí trên hạ tầng CDN toàn cầu của Vercel.


Kết luận

Đề tài tốt nghiệp "Xây dựng website tìm kiếm việc làm và quản lý tuyển dụng việc làm" của sinh viên Lê Văn Hiền và Nguyễn Thanh Điền đã giải quyết trọn vẹn và chuyên nghiệp bài toán kết nối việc làm hiện đại. Bằng việc ứng dụng những công nghệ mạnh mẽ và chuẩn mực trong ngành công nghiệp phần mềm hiện nay như Spring Boot 3.x, ReactJS, TypeScript, PostgreSQL, Docker và Jenkins, đề tài không chỉ đạt được hiệu năng vận hành ổn định mà còn đáp ứng đầy đủ các tiêu chuẩn về an toàn thông tin, toàn vẹn dữ liệu và khả năng mở rộng. Đây là một giải pháp công nghệ có tính ứng dụng thực tiễn cao, đóng góp một nền tảng tuyển dụng minh bạch, hiệu quả cho thị trường lao động số.