Bối cảnh và vấn đề nghiên cứu

Sự phát triển nhanh chóng của công nghệ thông tin và mạng Internet đã thúc đẩy mạnh mẽ xu hướng tìm kiếm và tuyển dụng việc làm trực tuyến. Các nền tảng tuyển dụng hiện đại đóng vai trò cầu nối trung gian nhằm kết nối người lao động và doanh nghiệp một cách minh bạch, nhanh chóng và hiệu quả. Tuy nhiên, việc xây dựng một hệ thống thông tin tuyển dụng đòi hỏi sự ổn định cao, khả năng mở rộng linh hoạt, bảo đảm an toàn dữ liệu và tối ưu hóa quy trình kiểm thử phần mềm để hạn chế các lỗi phát sinh trong quá trình vận hành.

Trong giai đoạn nghiên cứu môn học chuyên ngành trước đó, nhóm tác giả đã xây dựng hệ thống trên nền tảng NestJS và MongoDB. Nhằm nâng cao hiệu năng, cải thiện tính bảo mật, tăng cường tính nhất quán của dữ liệu quan hệ và đáp ứng tốt hơn yêu cầu mở rộng hệ thống trong thực tế, đề tài tốt nghiệp kỹ sư Công nghệ Thông tin đã thực hiện chuyển đổi công nghệ sang hệ sinh thái Spring Boot kết hợp hệ quản trị cơ sở dữ liệu quan hệ PostgreSQL.

Mục tiêu nghiên cứu tổng quát của đề tài là thiết kế, xây dựng và triển khai một website tìm kiếm và quản lý tuyển dụng việc làm hiện đại, ổn định, có tính nhất quán dữ liệu cao và khả năng bảo trì tốt. Các nhiệm vụ nghiên cứu cụ thể được xác định bao gồm:

  1. Nghiên cứu, khảo sát thực tế các nền tảng tuyển dụng hiện có tại Việt Nam (tiêu biểu là TopCV và TopDev) để phân tích quy trình nghiệp vụ, nhận diện ưu điểm và các hạn chế cần khắc phục.
  2. So sánh, đánh giá hiệu năng và tính tương thích giữa công nghệ backend cũ (NestJS, MongoDB) với công nghệ mới (Spring Boot, PostgreSQL).
  3. Phân tích ưu và nhược điểm giữa mô hình cơ sở dữ liệu quan hệ (SQL) và phi quan hệ (NoSQL) để đưa ra thiết kế kiến trúc dữ liệu phù hợp cho hệ thống tuyển dụng.
  4. Xây dựng các phân hệ chức năng dành cho ứng viên: tìm kiếm việc làm theo tiêu chí, quản lý hồ sơ ứng tuyển (CV), theo dõi công việc/công ty, nhận thông báo và gợi ý việc làm.
  5. Xây dựng các phân hệ chức năng dành cho nhà tuyển dụng: đăng tin tuyển dụng, quản lý trạng thái hồ sơ ứng viên, thống kê số liệu tuyển dụng, quản lý giỏ hàng và thanh toán trực tuyến các gói dịch vụ Premium.
  6. Thiết lập quy trình kiểm thử phần mềm (hộp trắng, hộp đen, tự động hóa) và triển khai hệ thống theo quy trình tích hợp/triển khai liên tục (CI/CD).
  • Đối tượng nghiên cứu: Quy trình quản lý, tìm kiếm và tuyển dụng việc làm trực tuyến; các kỹ thuật phân tích thiết kế hệ thống thông tin; kiến trúc phần mềm Client-Server; các công nghệ phát triển web và quy trình DevOps (React JS, TypeScript, Spring Boot, PostgreSQL, Docker, Jenkins, PayPal).
  • Phạm vi nghiên cứu: Đồ án được thực hiện tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh, hoàn thành và nghiệm thu vào tháng 7 năm 2024.

Cơ sở lý thuyết và phương pháp

Khóa luận xây dựng hệ thống dựa trên các nền tảng lý thuyết và mô hình kỹ thuật phần mềm tiêu chuẩn:

  • Mô hình kiến trúc Client-Server và MVC (Model-View-Controller): Hệ thống tách biệt hoàn toàn giữa tầng giao diện người dùng (Client) và tầng xử lý nghiệp vụ máy chủ (Server). Tầng Server áp dụng mô hình MVC để phân tách rõ ràng giữa cấu trúc dữ liệu, logic xử lý và điều khiển luồng dữ liệu thông qua giao tiếp RESTful API.
  • Mô hình kiểm soát truy cập dựa trên vai trò (Role-Based Access Control - RBAC): Phân quyền người dùng thành ba nhóm chính (Quản trị viên - Administrator, Nhà tuyển dụng - Employer, Ứng viên - Candidate) cùng đối tượng khách truy cập vãng lai.
  • Mô hình dữ liệu quan hệ (RDBMS): Ứng dụng các quy tắc toàn vẹn dữ liệu, quan hệ khóa chính - khóa ngoại trên PostgreSQL để đảm bảo tính nhất quán của các giao dịch mua gói dịch vụ, nộp hồ sơ và quản lý trạng thái bài đăng.

Phương pháp nghiên cứu và phát triển được triển khai thực tế gồm:

  • Phương pháp khảo sát và phân tích đối chuẩn: Khảo sát chi tiết hai nền tảng TopCV và TopDev về giao diện, tính năng và các điểm hạn chế trong kiểm duyệt thông tin.
  • Phương pháp phân tích - thiết kế hướng đối tượng: Đặc tả yêu cầu thông qua biểu đồ ca sử dụng tổng quát (Use Case Diagram), đặc tả chi tiết từng Use Case, xây dựng biểu đồ tuần tự (Sequence Diagram) và sơ đồ quan hệ cơ sở dữ liệu.
  • Phương pháp kiểm thử phần mềm: Áp dụng kỹ thuật kiểm thử hộp trắng (White-box testing), kiểm thử hộp đen (Black-box testing), kiểm thử tự động và kiểm thử giao diện lập trình ứng dụng (API testing) bằng Swagger.

Nguồn dữ liệu của đề tài bao gồm thông tin khảo sát thực tế từ thị trường tuyển dụng trực tuyến, cấu trúc dữ liệu từ các hệ thống việc làm tiêu chuẩn và tập dữ liệu thử nghiệm phát sinh trong quá trình kiểm thử phần mềm.

Thiết kế và triển khai

Hệ thống được thiết kế theo kiến trúc phân tầng hiện đại, phân tách độc lập giữa frontend, backend và hệ quản trị cơ sở dữ liệu.

Thành phần Công nghệ / Nền tảng Vai trò và đặc tính kỹ thuật
Giao diện (Frontend) React JS & TypeScript Xây dựng giao diện hướng thành phần (Component-Based), tối ưu hóa hiệu năng render qua Virtual DOM, kiểm soát chặt chẽ kiểu dữ liệu tĩnh (Static Typing).
Máy chủ (Backend) Java & Spring Boot Xử lý logic nghiệp vụ, tự động cấu hình (Auto-configuration), tích hợp sẵn web server nhúng, quản lý thư viện qua Maven/Gradle, cung cấp chuẩn API RESTful.
Cơ sở dữ liệu PostgreSQL Lưu trữ dữ liệu quan hệ, đảm bảo tính toàn vẹn ACID, hỗ trợ tìm kiếm toàn văn (Full-text search), thiết lập hàng rào bảo mật và xác thực mạnh.
Thanh toán trực tuyến PayPal API Đóng vai trò trung gian thanh toán quốc tế cho các gói dịch vụ tin tuyển dụng của nhà tuyển dụng.
Tự động hóa & Đóng gói Docker & Jenkins Container hóa ứng dụng với Docker Engine/Compose; tự động hóa quy trình xây dựng, kiểm thử và phân phối qua Jenkins Pipeline (Jenkinsfile_CI, Jenkinsfile_CD).
Kiểm thử & Tài liệu Swagger UI Định nghĩa, trực quan hóa và kiểm thử các điểm cuối (endpoints) của hệ thống RESTful API.
Môi trường triển khai Vercel & Máy chủ Docker Triển khai Frontend lên nền tảng Vercel; triển khai Backend và Database trên môi trường Docker cục bộ và server.

Nội dung chính theo từng chương

Chương 1: Tổng quan đề tài

Chương 1 trình bày tính cấp thiết của việc xây dựng nền tảng tuyển dụng trực tuyến trước sự bùng nổ của công nghệ thông tin. Tác giả nêu rõ nguyên nhân chuyển đổi nền tảng công nghệ từ NestJS/MongoDB sang Spring Boot/PostgreSQL nhằm gia tăng tính bảo mật, hiệu năng xử lý và tính toàn vẹn dữ liệu. Chương này xác định rõ mục tiêu tổng quát, các mục tiêu chi tiết phân bổ cho từng nhóm đối tượng người dùng (ứng viên, nhà tuyển dụng, quản trị viên) và phạm vi nghiên cứu của đề tài.

Chương 2: Khảo sát các trang web liên quan và xác định yêu cầu

Chương 2 tập trung khảo sát hai website tuyển dụng phổ biến tại Việt Nam gồm TopCV và TopDev. Tác giả phân tích các ưu điểm về tính năng tìm kiếm, tạo CV trực tuyến, tiếp cận ứng viên, đồng thời chỉ ra các nhược điểm thực tế:

Tiêu chí khảo sát Nền tảng TopCV Nền tảng TopDev
Đặc điểm nổi bật Lượng truy cập lớn (>10 triệu lượt/tháng), đa dạng ngành nghề, tạo CV trực tuyến chuyên nghiệp. Chuyên sâu về lĩnh vực Công nghệ thông tin, dải lương từ 5 đến 100 triệu đồng.
Ưu điểm ứng viên Tìm kiếm thông minh theo nhiều tiêu chí, tham gia khóa học kỹ năng. Danh mục việc làm IT chuyên biệt, tạo CV tùy chỉnh cao theo cấu trúc chuẩn.
Ưu điểm nhà tuyển dụng Nguồn ứng viên dồi dào, hỗ trợ đăng tin miễn phí, bộ lọc hồ sơ. Tiếp cận nhân sự kỹ thuật chuyên môn cao, đánh giá năng lực ứng viên.
Hạn chế tồn tại Thiếu cơ chế kiểm duyệt chặt chẽ (nguy cơ tin giả, hồ sơ ảo), tính cạnh tranh rất cao. Thiếu cơ chế kiểm duyệt tin đăng và hồ sơ, tính năng lọc hồ sơ chưa tối ưu.

Từ kết quả khảo sát, nhóm tác giả đã xác định yêu cầu nghiệp vụ cần thiết lập, đặc biệt chú trọng cơ chế duyệt công ty và xác thực dữ liệu bài đăng.

Chương 3: Kiến trúc hệ thống và công nghệ sử dụng

Chương 3 trình bày chi tiết về kiến trúc Client-Server kết hợp mô hình MVC, đồng thời làm rõ lý do lựa chọn từng công nghệ trong hệ thống:

  • TypeScript và React JS: Cung cấp tính năng kiểm tra lỗi tĩnh, gợi ý mã (IntelliSense), kiến trúc component tái sử dụng và cú pháp JSX.
  • Spring Boot và PostgreSQL: Đảm bảo khả năng xử lý nghiệp vụ phía backend mạnh mẽ, tự động hóa cấu hình, quản lý phụ thuộc hiệu quả và duy trì tính toàn vẹn dữ liệu nghiêm ngặt.
  • Dịch vụ thanh toán PayPal: Cung cấp cơ chế giao dịch quốc tế an toàn, bảo mật thông tin tài khoản ngân hàng và hạn chế rủi ro cho người mua.
  • Docker và Jenkins: Thiết lập môi trường vận hành nhất quán từ khâu phát triển đến sản xuất, hỗ trợ xây dựng Pipeline-as-code giúp tối ưu hóa quy trình CI/CD.

Chương 4: Phân tích thiết kế hệ thống

Chương 4 là phần nội dung kỹ thuật trọng tâm của khóa luận, bao gồm:

  • Phân quyền và Use Case: Thiết kế mô hình RBAC cho 3 tác tử chính (Administrator, Employer, Candidate) và khách vãng lai.
  • Đặc tả Use Case và Sequence Diagram: Xây dựng sơ đồ tuần tự và bảng đặc tả cho các nghiệp vụ: Đăng ký tài khoản (hỗ trợ Google Auth), Đăng nhập, Thêm sản phẩm mới, Đăng bài tuyển dụng (theo gói dịch vụ/trial), Xóa bài đăng, Bỏ lưu bài đăng, Chỉnh sửa thông tin cá nhân, Tìm kiếm việc làm (theo mức lương, vị trí, địa điểm, kỹ năng), Cập nhật trạng thái đơn ứng tuyển, Quản lý giỏ hàng và Mua sản phẩm, Duyệt công ty, Khóa tài khoản người dùng.
  • Thiết kế cơ sở dữ liệu: Xây dựng lược đồ cơ sở dữ liệu quan hệ PostgreSQL biểu diễn mối liên kết giữa tài khoản, hồ sơ CV, tin tuyển dụng, đơn ứng tuyển, công ty, sản phẩm dịch vụ và giao dịch thanh toán.
  • Thiết kế giao diện: Thiết kế chi tiết hệ thống màn hình cho Ứng viên (quản lý CV, danh sách đã lưu, thông báo), Nhà tuyển dụng (thống kê tuyển dụng, quản lý tin đăng, quản lý ứng viên, mua dịch vụ) và Quản trị viên (thống kê toàn sàn, duyệt công ty đăng ký, quản lý người dùng, quản lý sản phẩm).

Chương 5: Triển khai và kiểm thử

Chương 5 mô tả quy trình hiện thực hóa hệ thống trên môi trường thực tế:

  • Triển khai Frontend: Cấu hình chạy cục bộ và triển khai trực tiếp lên dịch vụ đám mây Vercel cho các phân hệ ứng viên, nhà tuyển dụng và quản trị viên.
  • Triển khai Backend: Cấu hình môi trường chạy cục bộ và thiết lập quy trình tự động hóa CI/CD với Jenkins kết hợp Docker thông qua các tệp cấu hình Jenkinsfile_CI, Jenkinsfile_CD.
  • Kiểm thử hệ thống: Kiểm thử API tự động và trực quan bằng Swagger, giám sát log máy chủ và xây dựng danh mục kịch bản kiểm thử chức năng theo Bảng 5.3.

Chương 6: Kết luận

Chương 6 tổng kết toàn bộ quá trình thực hiện đồ án, đánh giá mức độ hoàn thành so với mục tiêu ban đầu, chỉ rõ các kiến thức/kỹ năng tích lũy được, phân tích nhược điểm còn tồn tại và vạch ra các hướng phát triển tiếp theo của hệ thống.

Kết quả và đóng góp

Khóa luận đã hoàn thành các mục tiêu kỹ thuật và xây dựng thành công nền tảng website tuyển dụng với các kết quả cụ thể:

Phân hệ người dùng Các chức năng chính đã hoàn thiện
Ứng viên (Candidate) - Đăng ký/Đăng nhập (tích hợp xác thực qua Google Email).
- Quản lý hồ sơ cá nhân, tải lên/xóa/quản lý nhiều CV trực tuyến.
- Tìm kiếm việc làm đa tiêu chí (vị trí, địa điểm, mức lương, trình độ, kỹ năng).
- Ứng tuyển công việc trực tiếp, theo dõi trạng thái hồ sơ ứng tuyển.
- Lưu/bỏ lưu tin tuyển dụng, theo dõi/bỏ theo dõi công ty.
- Nhận thông báo hệ thống và quản lý trạng thái đọc/chưa đọc.
Nhà tuyển dụng (Employer) - Đăng ký tài khoản, cập nhật thông tin và hồ sơ pháp lý của công ty.
- Đăng tin tuyển dụng (sử dụng lượt dùng thử hoặc các gói dịch vụ đã mua).
- Quản lý danh sách tin tuyển dụng, chỉnh sửa, xóa bài đăng.
- Xem danh sách ứng viên ứng tuyển, lọc hồ sơ, cập nhật trạng thái đơn ứng tuyển.
- Tìm kiếm ứng viên, quản lý danh sách ứng viên theo dõi công ty.
- Xem danh mục sản phẩm/dịch vụ, quản lý giỏ hàng, thanh toán trực tuyến qua PayPal.
- Xem báo cáo thống kê số liệu tuyển dụng nội bộ.
Quản trị viên (Administrator) - Quản lý, kiểm duyệt hồ sơ đăng ký của các công ty trước khi cho phép hoạt động.
- Quản lý danh sách người dùng, thực hiện khóa/mở khóa tài khoản vi phạm.
- Quản lý danh mục sản phẩm, gói dịch vụ tuyển dụng trên hệ thống.
- Quản lý và theo dõi lịch sử mua hàng, doanh thu từ nhà tuyển dụng.
- Thống kê tổng quan dữ liệu hoạt động của toàn sàn tuyển dụng.

Đóng góp kỹ thuật chính của đồ án gồm:

  • Chuyển đổi thành công kiến trúc hệ thống từ NestJS/MongoDB sang Spring Boot/PostgreSQL, giúp tối ưu hóa hiệu năng xử lý các truy vấn quan hệ phức tạp và đảm bảo tính toàn vẹn dữ liệu.
  • Xây dựng hoàn chỉnh quy trình CI/CD tự động hóa việc đóng gói container bằng Docker và triển khai bằng Jenkins, giúp rút ngắn thời gian phân phối phần mềm và hạn chế sai sót khi cấu hình thủ công.
  • Tích hợp thành công cổng thanh toán quốc tế PayPal cho mô hình kinh doanh dịch vụ đăng tin tuyển dụng trực tuyến.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên nội dung tự đánh giá của nhóm tác giả trong văn bản:

  • Hạn chế: Do giới hạn về thời gian thực hiện đồ án tốt nghiệp cùng kinh nghiệm thực tế của sinh viên, hệ thống vẫn còn một số điểm cần tối ưu hóa trong việc xử lý các luồng dữ liệu lớn, giao diện người dùng ở một số màn hình nâng cao cần được tinh chỉnh mượt mà hơn và các tính năng gợi ý việc làm tự động mới dừng ở mức cơ bản.
  • Hướng nghiên cứu tiếp:
    • Nâng cấp thuật toán gợi ý việc làm thông minh dựa trên kỹ năng và lịch sử tìm kiếm của ứng viên.
    • Tích hợp thêm các phương thức thanh toán nội địa phổ biến tại Việt Nam bên cạnh PayPal.
    • Bổ sung cơ chế kiểm duyệt tự động nội dung bài đăng tuyển dụng bằng kỹ thuật xử lý ngôn ngữ tự nhiên để ngăn chặn tin tuyển dụng lừa đảo.
    • Mở rộng ứng dụng trên nền tảng di động (Mobile App) để tăng tính tiện lợi cho người dùng.

Giá trị tham khảo

Tài liệu khóa luận tốt nghiệp này có giá trị tham khảo thiết thực cho:

  • Sinh viên ngành Công nghệ Thông tin, Kỹ thuật Phần mềm: Là tài liệu mẫu hữu ích về quy trình xây dựng đồ án tốt nghiệp từ khâu khảo sát thực tế, phân tích yêu cầu, thiết kế kiến trúc Client-Server đến phân tích chi tiết Use Case và Sequence Diagram.
  • Lập trình viên phát triển Web Fullstack: Cung cấp tài liệu tham khảo chi tiết về việc kết hợp React JS, TypeScript với Spring Boot và PostgreSQL, cũng như cách thiết kế hệ thống phân quyền RBAC đa vai trò.
  • Người nghiên cứu về DevOps: Phần triển khai cung cấp các cấu hình thực tế về quy trình CI/CD sử dụng Jenkins (Jenkinsfile_CI, Jenkinsfile_CD), đóng gói Docker và triển khai ứng dụng lên Vercel.

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

1. Vì sao nhóm tác giả quyết định chuyển đổi backend từ NestJS và MongoDB sang Spring Boot và PostgreSQL? Trong quá trình thực hiện dự án, nhóm tác giả nhận thấy việc chuyển sang Spring Boot và PostgreSQL mang lại hiệu suất xử lý cao hơn, khả năng mở rộng tốt hơn, tăng cường tính ổn định, bảo mật và đặc biệt là bảo đảm tính toàn vẹn dữ liệu quan hệ chặt chẽ hơn so với mô hình NoSQL của MongoDB.

2. Hệ thống phân quyền người dùng (RBAC) gồm những vai trò nào và quyền hạn cơ bản của từng vai trò là gì? Hệ thống gồm ba vai trò chính:

  • Quản trị viên (Administrator): Duyệt công ty đăng ký, quản lý người dùng (khóa tài khoản), quản lý sản phẩm dịch vụ và xem thống kê toàn hệ thống.
  • Nhà tuyển dụng (Employer): Quản lý thông tin công ty, đăng tin tuyển dụng, quản lý hồ sơ ứng viên, mua gói dịch vụ và thanh toán qua PayPal.
  • Ứng viên (Candidate): Quản lý thông tin cá nhân, tải và quản lý CV, tìm kiếm việc làm, nộp đơn ứng tuyển và theo dõi công ty. Ngoài ra, khách vãng lai không có tài khoản có thể xem các thông tin công khai về việc làm và công ty.

3. Kết quả khảo sát hai nền tảng TopCV và TopDev đã chỉ ra nhược điểm chung nào của các website tuyển dụng hiện nay? Cả TopCV và TopDev đều có nhược điểm là tính cạnh tranh rất cao giữa các ứng viên và nhà tuyển dụng. Đặc biệt, các nền tảng này chưa có cơ chế kiểm duyệt triệt để thông tin tuyển dụng và hồ sơ ứng viên, dẫn đến nguy cơ xuất hiện tin tuyển dụng giả mạo, lừa đảo hoặc hồ sơ ứng viên không trung thực.

4. Quy trình CI/CD và triển khai hệ thống được thực hiện bằng các công cụ nào? Hệ thống sử dụng Docker để container hóa ứng dụng và Jenkins để tự động hóa quy trình xây dựng, kiểm thử, triển khai thông qua các tệp cấu hình Jenkinsfile_CI và Jenkinsfile_CD. Phía Frontend được triển khai trên nền tảng đám mây Vercel, còn Backend được quản lý và vận hành thông qua các container Docker.

5. Cổng thanh toán nào được tích hợp vào hệ thống để phục vụ việc mua gói dịch vụ của nhà tuyển dụng? Hệ thống tích hợp cổng thanh toán trực tuyến PayPal, cho phép nhà tuyển dụng mua các gói dịch vụ đăng tin tuyển dụng một cách an toàn và bảo mật thông tin tài khoản ngân hàng.

Kết luận

Đồ á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" của sinh viên Lê Văn Hiền và Nguyễn Thanh Điền (ngành Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP.HCM) đã giải quyết trọn vẹn bài toán kết nối giữa ứng viên và nhà tuyển dụng thông qua một hệ thống phần mềm hoàn chỉnh. Bằng việc kết hợp kiến trúc Client-Server, công nghệ React JS, TypeScript, Spring Boot, cơ sở dữ liệu PostgreSQL cùng quy trình CI/CD với Docker và Jenkins, đề tài đã xây dựng thành công một nền tảng tuyển dụng ổn định, có tính toàn vẹn dữ liệu cao và hỗ trợ thanh toán trực tuyến. Khóa luận là tài liệu tham khảo có giá trị cao về mặt kỹ thuật cho sinh viên và các nhà phát triển phần mềm trong lĩnh vực xây dựng ứng dụng web quản lý doanh nghiệp.