Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh công nghệ thông tin phát triển mạnh mẽ và thâm nhập sâu rộng vào mọi hoạt động kinh tế – xã hội, quy mô cũng như các quan hệ kinh tế của các tổ chức, doanh nghiệp ngày càng mở rộng. Sự gia tăng nhanh chóng của các luồng thông tin khiến công tác quản trị thủ công bằng sổ sách truyền thống bộc lộ nhiều bất cập, không còn đáp ứng được yêu cầu xử lý dữ liệu hiện đại. Do đó, việc tin học hóa từng bước trong điều hành, khai thác và quản lý hoạt động trở thành đòi hỏi cấp thiết.
Về mặt xã hội, tìm kiếm việc làm là nhu cầu thiết yếu nhằm cải thiện chất lượng cuộc sống và giảm thiểu tỷ lệ thất nghiệp thông qua việc kết nối người lao động với các cơ hội nghề nghiệp phù hợp. Mặc dù thị trường hiện nay có nhiều nền tảng tuyển dụng trực tuyến, tuy nhiên cơ hội tiếp cận việc làm dành cho người mới bắt đầu (entry-level) và các ứng viên chưa tích lũy nhiều kinh nghiệm trong ngành công nghệ thông tin vẫn còn rất hạn chế. Xuất phát từ thực tế đó, đề tài "Xây dựng website tìm kiếm việc làm" (tập trung vào đối tượng sinh viên ngành công nghệ thông tin) được lựa chọn thực hiện nhằm giải quyết bài toán kết nối việc làm phù hợp với năng lực và kỹ năng khởi đầu của sinh viên.
Theo đề cương được phê duyệt, mục tiêu và nhiệm vụ của khóa luận được phân định cụ thể như sau:
- Mục tiêu chính: Xây dựng một website tìm kiếm việc làm cho sinh viên ngành công nghệ thông tin, tạo lập nền tảng hỗ trợ sinh viên tìm kiếm cơ hội nghề nghiệp theo nhu cầu, kỹ năng và sở thích cá nhân một cách nhanh chóng, tiết kiệm thời gian.
- Nhiệm vụ lý thuyết (Nhiệm vụ 1): Nghiên cứu các công nghệ và giải pháp kiến trúc bao gồm Spring Boot, Next.js, Cloudinary, MySQL, Docker, AWS và Digital Ocean.
- Nhiệm vụ thực hành (Nhiệm vụ 2):
- Sử dụng hệ quản trị cơ sở dữ liệu MySQL để lưu trữ dữ liệu có cấu trúc của hệ thống.
- Sử dụng dịch vụ đám mây Cloudinary phục vụ lưu trữ hình ảnh đại diện và các tệp tin hồ sơ xin việc (CV).
- Sử dụng framework Spring Boot để phát triển toàn bộ hệ thống dịch vụ phụ trợ (Backend API).
- Sử dụng framework Next.js để phát triển giao diện người dùng (Frontend UI).
- Xây dựng đầy đủ các phân hệ chức năng cho ba nhóm tác nhân: Ứng viên, Nhà tuyển dụng và Quản trị viên.
Về đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Quy trình đăng tuyển, quản lý hồ sơ ứng tuyển, các luồng tương tác giữa ứng viên và nhà tuyển dụng IT; các công nghệ phát triển web full-stack hiện đại gồm Next.js, Spring Boot, Spring Security, Spring Data JPA và MySQL.
- Phạm vi không gian: Đề tài được triển khai trong khuôn khổ khóa luận tốt nghiệp ngành Công nghệ thông tin (chuyên ngành Công nghệ phần mềm) tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.
- Phạm vi thời gian: Đề tài được thực hiện chính thức từ ngày 15/04/2024 đến ngày 19/07/2024 (với các giai đoạn chuẩn bị, khảo sát và thiết kế sơ bộ được tiến hành từ đầu tháng 03/2024).
Cơ sở lý thuyết và phương pháp
Khóa luận sử dụng các nền tảng lý thuyết và công nghệ phần mềm tiêu chuẩn trong phát triển ứng dụng phân tán hiện đại, bao gồm:
- Ngôn ngữ lập trình Java và Máy ảo Java (JVM): Java là ngôn ngữ lập trình hướng đối tượng hoạt động theo nguyên lý "Viết một lần, thực thi khắp nơi" (WORA). Mã nguồn
.java được biên dịch thành dạng mã nhị phân trung gian (Bytecode trong tệp .class), sau đó JVM thông dịch thành mã máy tương ứng với từng hệ điều hành. Java loại bỏ các thao tác con trỏ trực tiếp, nạp chồng toán tử, cấu trúc struct/union và lệnh goto nhằm nâng cao tính an toàn. Hệ thống tích hợp cơ chế thu gom rác tự động (Garbage Collection) trên bộ nhớ Heap, hỗ trợ lập trình đa luồng (multithread) và quản lý bảo mật 4 cấp độ từ giao diện lớp, trình biên dịch, trình thông dịch đến kiểm soát nạp lớp (ClassLoader).
- Spring Framework và Spring Boot: Spring Framework phát triển trên hai nguyên tắc cốt lõi là Tiêm phụ thuộc (Dependency Injection - DI) và Lập trình hướng khía cạnh (Aspect Oriented Programming - AOP). Để khắc phục cấu hình phức tạp qua nhiều tệp XML trong Spring MVC truyền thống, Spring Boot cung cấp giải pháp đóng gói ứng dụng độc lập, khởi chạy trực tiếp qua lớp
SpringApplication.run(), hỗ trợ máy chủ web nhúng (Tomcat, Jetty), cấu hình ngoại hóa (Externalized Configuration), phân vùng môi trường thực thi (Profiles) và quản lý nhật ký hệ thống mặc định (Logging).
- Spring Data JPA: Module hỗ trợ tương tác với cơ sở dữ liệu dựa trên giao diện Java Persistence API và ORM Hibernate. Công nghệ áp dụng mẫu thiết kế Repository Pattern để tách biệt tầng truy cập dữ liệu với tầng xử lý nghiệp vụ, tự động ánh xạ quan hệ thực thể và tối ưu hóa các truy vấn bằng JPQL hoặc SQL thuần.
- Spring Security: Khung kiến trúc bảo mật hoạt động dựa trên mô hình Client-Server và chuỗi bộ lọc (Filter Chain). Khi người dùng gửi yêu cầu, chuỗi bộ lọc sẽ can thiệp để thực hiện xác thực (Authentication), kiểm tra phân quyền (Authorization), đồng thời phòng chống các lỗ hổng bảo mật phổ biến như tấn công giả mạo yêu cầu (CSRF), tấn công cố định phiên (Session Fixation) và chèn mã giao diện (Clickjacking).
- Framework Next.js: Framework mã nguồn mở dựa trên React, hỗ trợ kết xuất phía máy chủ (Server-Side Rendering - SSR), tạo trang tĩnh (Static Site Generation - SSG) và kết xuất kết hợp. Hệ thống sử dụng cơ chế định tuyến dựa trên hệ thống tệp tin (File-based Routing), hỗ trợ React Server Components, Streaming giao diện, tích hợp sẵn trình tối ưu Core Web Vitals, tương thích với TypeScript và các công cụ định kiểu như Tailwind CSS hay CSS Modules.
- Hệ quản trị CSDL quan hệ MySQL: Đóng vai trò là kho lưu trữ dữ liệu trung tâm, cung cấp tính năng lưu trữ quan hệ có cấu trúc, hỗ trợ giao dịch, mở rộng quy mô và tích hợp các chuẩn truy vấn SQL tiêu chuẩn.
Phương pháp nghiên cứu thực tế được nhóm tác giả triển khai bao gồm:
- Phương pháp khảo sát hiện trạng và phân tích so sánh: Khảo sát các website tuyển dụng thực tế đang vận hành trên thị trường, cụ thể là phân tích các tính năng và hạn chế của trang web tuyển dụng việc làm công nghệ thông tin ITViec.
- Phương pháp phân tích và mô hình hóa yêu cầu phần mềm: Sử dụng ngôn ngữ mô hình hóa UML để xây dựng sơ đồ ca sử dụng (Use Case Diagram), lập bảng đặc tả chi tiết các ca sử dụng chính, thiết kế lược đồ tuần tự (Sequence Diagram) để mô tả luồng thông điệp giữa các đối tượng.
- Phương pháp thiết kế và phát triển phần mềm: Thiết kế lược đồ cơ sở dữ liệu quan hệ, xây dựng kiến trúc RESTful API trên nền tảng Spring Boot và xây dựng giao diện ứng dụng trên nền tảng Next.js.
- Phương pháp kiểm thử và hoàn thiện: Kiểm thử chức năng trên các giao diện người dùng, kiểm tra tương tác API và rà soát, khắc phục lỗi phát sinh.
Nguồn dữ liệu của nghiên cứu bao gồm tài liệu kỹ thuật chuyên ngành từ trang chủ các công nghệ (Next.js, Spring Framework, Spring Security, MySQL), dữ liệu khảo sát giao diện và luồng nghiệp vụ từ website ITViec (https://itviec.com/vi), cùng dữ liệu thử nghiệm giả lập được nhập vào hệ thống để phục vụ việc kiểm thử các ca sử dụng.
Thiết kế và triển khai
Hệ thống được thiết kế theo kiến trúc tách rời (Decoupled Architecture) với hai khối thành phần chính giao tiếp qua giao thức HTTP/HTTPS:
- Tầng giao diện (Frontend): Được xây dựng bằng framework Next.js kết hợp TypeScript. Tầng này chịu trách nhiệm hiển thị giao diện người dùng, điều hướng trang qua hệ thống định tuyến tệp tin và thực hiện các kỹ thuật tối ưu hóa như tải lười (lazy loading), duy trì trạng thái phiên làm việc và kết xuất phía máy chủ (SSR/SSG).
- Tầng dịch vụ và nghiệp vụ (Backend): Được xây dựng bằng Spring Boot. Tầng này tiếp nhận các yêu cầu từ giao diện, xử lý nghiệp vụ, kiểm soát xác thực và quyền hạn thông qua Spring Security, đồng thời giao tiếp với cơ sở dữ liệu thông qua Spring Data JPA và Hibernate.
- Dịch vụ lưu trữ và thanh toán tích hợp: Hệ thống kết nối với dịch vụ lưu trữ đám mây Cloudinary để xử lý tải lên các tệp tin CV và hình ảnh; đồng thời tích hợp API của PayPal nhằm xử lý giao dịch thanh toán nâng cấp tài khoản cho nhà tuyển dụng.
Bảng tổng hợp chức năng theo từng nhóm tác nhân trong hệ thống:
| Tác nhân |
Các chức năng được thiết kế và cài đặt |
| Ứng viên (Candidate) |
Đăng ký tài khoản (kèm xác thực mã OTP qua Email); Đăng nhập; Đăng xuất; Quên mật khẩu; Reset mật khẩu qua Email; Cập nhật thông tin cá nhân; Thay đổi ảnh đại diện; Đổi mật khẩu; Quản lý tài khoản cá nhân; Tìm kiếm công việc bằng từ khóa kết hợp bộ lọc; Xem danh sách và thông tin chi tiết công việc; Đăng tải CV và viết thư xin việc; Nộp đơn ứng tuyển; Xem trạng thái đơn ứng tuyển; Xem danh sách công việc đã lưu, đã xem và đã ứng tuyển; Xem danh sách công việc gợi ý; Xem danh sách và chi tiết công ty; Theo dõi công ty và xem công ty đang theo dõi; Viết bài đánh giá công ty; Cập nhật tiêu chí tìm việc. |
| Nhà tuyển dụng (Employer) |
Đăng ký tài khoản; Đăng nhập; Đăng xuất; Đổi mật khẩu; Quản lý tài khoản và thông tin cá nhân; Cập nhật thông tin chi tiết công ty; Đăng, sửa và xóa bài tuyển dụng; Quản lý danh sách bài đăng tuyển dụng; Quản lý đơn ứng tuyển; Xem danh sách và chi tiết ứng viên nộp đơn; Cập nhật trạng thái đơn ứng tuyển; Tìm kiếm ứng viên; Xem gợi ý ứng viên theo từng công việc; Nâng cấp tài khoản thông qua cổng thanh toán trực tuyến PayPal. |
| Quản trị viên (Admin) |
Đăng nhập; Đăng xuất; Xem và phê duyệt đơn đăng ký của nhà tuyển dụng; Cấp mật khẩu và cấp quyền truy cập tài khoản cho nhà tuyển dụng; Quản lý thông tin nhà tuyển dụng theo các gói cấp độ (Basic, Advanced, Premium); Xem thông tin ứng viên theo trạng thái hoạt động (Active, InActive); Xem chi tiết thông tin ứng viên; Khóa và mở khóa tài khoản ứng viên. |
Quy trình xử lý của hai ca sử dụng nền tảng được văn bản đặc tả chi tiết như sau:
- Ca sử dụng Đăng nhập (Ứng viên):
- Tiền điều kiện: Ứng viên đã có tài khoản được kích hoạt trong hệ thống.
- Luồng cơ bản: (1) Ứng viên nhập Email và mật khẩu; (2) Hệ thống kiểm tra tính hợp lệ về định dạng Email; (3) Hệ thống kiểm tra và xác thực tính chính xác của Email cùng mật khẩu trong cơ sở dữ liệu; (4) Đăng nhập thành công, hệ thống chuyển hướng và phân quyền theo đúng vai trò.
- Luồng ngoại lệ: Hệ thống thông báo lỗi nếu Email không đúng định dạng chuẩn, hoặc thông báo đăng nhập thất bại nếu thông tin xác thực không trùng khớp.
- Ca sử dụng Đăng ký (Ứng viên):
- Tiền điều kiện: Ứng viên chưa từng đăng ký tài khoản trên hệ thống.
- Luồng cơ bản: (1) Ứng viên nhập tên đăng nhập, email và mật khẩu; (2) Hệ thống xác thực tính hợp lệ về định dạng Email; (3) Hệ thống kiểm tra các yêu cầu định dạng đối với mật khẩu; (4) Hệ thống tự động tạo và gửi một mã OTP về hòm thư điện tử đã đăng ký; (5) Ứng viên nhập mã OTP để xác nhận; (6) Hệ thống kích hoạt tài khoản thành công và điều hướng người dùng về trang đăng nhập.
Kế hoạch triển khai kỹ thuật của đề tài diễn ra qua 5 giai đoạn:
- Giai đoạn 1 (04/03/2024 – 09/03/2024): Khảo sát hiện trạng, tổng hợp yêu cầu chức năng, thiết kế cơ sở dữ liệu sơ bộ và lựa chọn mẫu giao diện.
- Giai đoạn 2 (10/03/2024 – 12/03/2024): Thống nhất công nghệ (Next.js, Spring Boot, MySQL), hoàn thiện lược đồ cơ sở dữ liệu và thiết kế chi tiết giao diện người dùng.
- Giai đoạn 3 (13/03/2024 – 13/04/2024): Khởi tạo cấu hình hạ tầng dự án trên Next.js và Spring Boot, thiết lập kết nối MySQL và cấu hình dịch vụ lưu trữ Cloudinary.
- Giai đoạn 4 (14/04/2024 – 20/05/2024): Lập trình giao diện và xây dựng các API chức năng cốt lõi cho phân hệ Ứng viên và Nhà tuyển dụng.
- Giai đoạn 5 (21/05/2024 – 15/06/2024): Hoàn thiện phân hệ Quản trị viên; bổ sung tính năng duy trì trạng thái đăng nhập, lazy load; tích hợp API thanh toán PayPal; tiến hành kiểm thử, sửa lỗi và hoàn thành văn bản báo cáo.
Nội dung chính theo từng chương
Bố cục của khóa luận tốt nghiệp được cấu trúc thành Phần mở đầu, 6 chương nội dung chuyên môn và Phần kết luận:
Phần Mở đầu
Trình bày tính cấp thiết của việc tin học hóa công tác kết nối việc làm trong bối cảnh khối lượng thông tin bùng nổ; xác định mục đích xây dựng nền tảng tìm kiếm việc làm cho sinh viên ngành công nghệ thông tin; chỉ rõ phương pháp nghiên cứu và phân chia các giai đoạn theo kế hoạch thực hiện từ tháng 03/2024 đến tháng 07/2024.
Chương 1: Khảo sát, phân tích hiện trạng
Chương 1 đi sâu vào đánh giá thực trạng các giải pháp phần mềm hiện có trên thị trường tuyển dụng. Nhóm tác giả thực hiện khảo sát chi tiết website ITViec (https://itviec.com/vi), phân tích các trang chính như: Trang chủ, Trang đăng ký/đăng nhập, Trang thông tin công việc, Trang danh sách công ty hàng đầu và Trang thông tin cá nhân. Nhóm tác giả tổng hợp các điểm mạnh cùng các hạn chế còn tồn tại của hệ thống này:
| Phần mềm khảo sát |
Chức năng hiện có |
Hạn chế ghi nhận |
| ITViec |
Hỗ trợ đăng ký, đăng nhập (bao gồm đăng nhập tài khoản Google); danh sách công việc tuyển dụng phong phú; danh sách công ty hàng đầu; chuyên mục blog (báo cáo lương IT, định hướng sự nghiệp); tìm kiếm công việc qua từ khóa; cung cấp chức năng tạo CV trực tuyến. |
Độ chính xác của tính năng tìm kiếm chưa thực sự cao; số lượng vị trí tuyển dụng thực tập dành cho sinh viên IT còn ít; việc nộp đơn ứng tuyển phải thông qua đơn vị trung gian; người dùng không thể xem và tải CV nếu chưa điền đầy đủ toàn bộ thông tin cá nhân; trải nghiệm giao diện người dùng (UI/UX) chưa tối ưu. |
Từ kết quả khảo sát, chương 1 xác lập bảng phân tích yêu cầu nghiệp vụ chi tiết cho 3 phân hệ người dùng: Ứng viên, Nhà tuyển dụng và Quản trị viên (Admin).
Chương 2: Cơ sở lý thuyết
Chương này cung cấp hệ thống cơ sở lý thuyết toàn diện về các ngôn ngữ, khung làm việc và công nghệ sử dụng trong đề tài:
- Next.js: Giới thiệu lịch sử hình thành (phát triển bởi Vercel từ năm 2016); phân tích 6 tính năng cốt lõi gồm Routing (file-system based), Rendering (SSR, SSG, Streaming), Data Fetching (mở rộng hàm
fetch, cơ chế async/await), Styling (hỗ trợ CSS Modules, Tailwind CSS, CSS-in-JS), Optimizations (tối ưu mã nguồn, hình ảnh, phông chữ và Core Web Vitals) và TypeScript. Đồng thời, tài liệu phân tích các ứng dụng lớn trong thực tế sử dụng Next.js như Vercel, Netflix, Hulu, Airbnb, Discord, Nike.
Bảng so sánh giữa hai nền tảng Next.js và AngularJS:
| Tiêu chí so sánh |
Next.js |
AngularJS |
| Ngôn ngữ và Cấu trúc |
Sử dụng JavaScript hoặc TypeScript kết hợp với thư viện React. Cấu trúc phụ thuộc vào cấu hình của nhà phát triển. |
Sử dụng JavaScript hoặc TypeScript. Là một framework độc lập, hoàn chỉnh, cung cấp sẵn cấu trúc dự án cụ thể. |
| Quản lý Trạng thái |
Sử dụng React Redux hoặc React Context API. |
Tích hợp hệ thống quản lý trạng thái mạnh mẽ dựa trên Angular Services và Observable. |
| Hiệu suất và SEO |
Cung cấp sẵn cơ chế SSR và SSG, giúp tối ưu hóa tốc độ tải trang và hỗ trợ SEO vượt trội. |
Không hỗ trợ SSR mặc định; việc cấu hình SSR phức tạp, làm giảm hiệu suất tải trang ban đầu và khả năng tối ưu SEO. |
| Độ linh hoạt & Tích hợp |
Dễ dàng tích hợp với các thư viện và dịch vụ ngoài; cộng đồng phát triển lớn, tài liệu phong phú. |
Hỗ trợ tích hợp đa dạng nhưng cấu hình phức tạp hơn; có sự chuyển giao và khác biệt lớn giữa AngularJS và các phiên bản Angular mới. |
| Đơn vị phát triển |
Vercel |
Google |
- Ngôn ngữ Java: Trình bày nguồn gốc phát triển (bắt đầu từ năm 1991 bởi James Gosling tại Sun Microsystems với tên gọi ban đầu là Oak, phát hành năm 1994, Oracle mua lại năm 2010); phân tích nguyên lý WORA, cấu trúc biên dịch mã Bytecode và thông dịch qua JVM, cơ chế giải phóng bộ nhớ tự động Garbage Collection, tính năng đa luồng và mô hình bảo mật 4 lớp.
- Spring Boot: Trình bày hai nguyên tắc nền tảng DI và AOP; nêu rõ 5 giai đoạn phát triển ứng dụng Spring truyền thống để làm nổi bật sự tinh gọn của Spring Boot. Phân tích các đặc điểm nổi bật của Spring Boot: lớp khởi chạy
SpringApplication, cơ chế cấu hình ngoài (Externalized Configuration), phân vùng môi trường Profiles và hệ thống Logging mặc định.
Bảng so sánh giữa Spring Boot và Node.js:
| Tiêu chí so sánh |
Spring Boot |
Node.js |
| Ngôn ngữ và Cấu trúc |
Sử dụng Java hoặc Kotlin; ngôn ngữ tiêu chuẩn dùng phổ biến trong phát triển phần mềm doanh nghiệp. |
Sử dụng JavaScript cho cả phía máy chủ và trình duyệt, tạo sự đồng nhất mã nguồn ở cả hai phía. |
| Hiệu suất và Xử lý |
Tối ưu cho các ứng dụng doanh nghiệp lớn, phức tạp nhờ mã nguồn tối ưu và sức mạnh của máy ảo JVM; xử lý đồng thời tốt các tác vụ nặng. |
Tối ưu cho các ứng dụng thời gian thực và xử lý I/O bất đồng bộ; hạn chế khi phải giải quyết các tác vụ tính toán chiếm dụng nhiều CPU. |
| Độ linh hoạt & Tích hợp |
Tích hợp dễ dàng với nhiều công nghệ doanh nghiệp lớn và hệ thống sẵn có; độ ổn định và tin cậy cao. |
Tích hợp thư viện phong phú và linh hoạt thông qua kho lưu trữ npm; đòi hỏi các giải pháp kiểm soát độ tin cậy. |
| Mục tiêu phát triển |
Phù hợp cho ứng dụng doanh nghiệp, yêu cầu cao về tính ổn định, độ bảo mật và khả năng tích hợp hệ thống quy mô lớn. |
Thích hợp cho các ứng dụng web thời gian thực tốc độ cao, ứng dụng cho các doanh nghiệp khởi nghiệp công nghệ. |
| Công cụ và Tiêu chuẩn |
Chuẩn hóa theo Java EE; được hỗ trợ bởi các IDE mạnh mẽ như IntelliJ IDEA, Eclipse. |
Công cụ phát triển đa dạng và nhẹ như Visual Studio Code, Sublime Text, Atom. |
- Spring Data JPA, Spring Security và MySQL: Trình bày chi tiết mẫu thiết kế Repository, cơ chế ORM Hibernate, chuỗi bộ lọc Filter Chain của Spring Security để xác thực/phân quyền và các đặc tính vận hành của hệ quản trị cơ sở dữ liệu quan hệ MySQL.
Chương 3: Mô hình hóa yêu cầu
Chương 3 tập trung thể hiện các đặc tả kỹ thuật phần mềm thông qua sơ đồ Use Case tổng thể cho từng tác nhân: Quản trị viên, Ứng viên và Nhà tuyển dụng. Phân hệ Ứng viên được mô hình hóa chi tiết với các bảng đặc tả ca sử dụng chuẩn, nêu rõ tên ca sử dụng, tóm tắt hoạt động, tác nhân tham gia, điều kiện tiên quyết, kết quả đạt được, luồng sự kiện chính (Basic Flow) và luồng xử lý ngoại lệ (Exception Flow).
Chương 4: Thiết kế hệ thống
Nội dung chương 4 tập trung vào việc mô tả cấu trúc kỹ thuật nội bộ của hệ thống thông qua:
- Các lược đồ tuần tự (Sequence Diagram): Thể hiện sự tương tác theo dòng thời gian giữa người dùng, tầng giao diện Next.js, bộ điều khiển API Spring Boot và cơ sở dữ liệu MySQL đối với từng tác vụ cụ thể.
- Lược đồ cơ sở dữ liệu (Database Schema): Mô tả chi tiết cấu trúc các bảng dữ liệu, kiểu dữ liệu của các trường, khóa chính, khóa ngoại và mối quan hệ quan hệ giữa các thực thể như người dùng, tin tuyển dụng, đơn ứng tuyển, thông tin công ty và hóa đơn thanh toán.
Chương 5: Thiết kế giao diện và xử lý
Trình bày thiết kế giao diện thực tế của phần mềm tương ứng với các chức năng nghiệp vụ, bao gồm:
- Giao diện phân hệ Ứng viên: Màn hình chính (Homepage), màn hình tìm kiếm việc làm kèm bộ lọc đa tiêu chí, màn hình thông tin chi tiết bài tuyển dụng, giao diện nộp hồ sơ CV và màn hình quản lý trạng thái hồ sơ cá nhân.
- Giao diện phân hệ Nhà tuyển dụng: Màn hình quản trị bài đăng, giao diện tạo mới/chỉnh sửa tin tuyển dụng, màn hình quản lý danh sách và chi tiết đơn ứng tuyển của các ứng viên, giao diện nâng cấp tài khoản.
- Giao diện phân hệ Quản trị viên: Bảng điều khiển quản lý danh sách nhà tuyển dụng (phân loại theo gói Basic, Advanced, Premium), màn hình phê duyệt tài khoản và quản lý trạng thái tài khoản ứng viên (Active/Inactive).
Chương 6: Cài đặt và thử nghiệm ứng dụng
Trình bày quá trình triển khai mã nguồn, kết nối các dịch vụ phụ trợ và tiến hành thử nghiệm ứng dụng trên môi trường thực tế nhằm xác minh tính chính xác của các ca sử dụng theo đúng yêu cầu đã mô hình hóa.
Kết quả và đóng góp
Dựa trên các nội dung được văn bản công bố, đề tài đã đạt được các kết quả cụ thể sau:
- Xây dựng hoàn chỉnh ứng dụng web tuyển dụng IT: Hoàn thành thiết kế và cài đặt website tìm kiếm việc làm cho sinh viên công nghệ thông tin với đầy đủ 3 phân hệ chức năng độc lập dành cho Ứng viên, Nhà tuyển dụng và Quản trị viên.
- Hiện thực hóa các tính năng kỹ thuật cốt lõi:
- Xây dựng thành công cơ chế xác thực hai lớp khi đăng ký tài khoản cho ứng viên thông qua việc gửi và kiểm tra mã OTP qua email tự động.
- Tích hợp dịch vụ đám mây Cloudinary cho phép ứng viên đăng tải, quản lý CV trực tiếp và cập nhật ảnh đại diện cá nhân.
- Xây dựng bộ lọc tìm kiếm việc làm theo từ khóa kết hợp các tiêu chí chi tiết nhằm nâng cao khả năng tiếp cận cơ hội nghề nghiệp.
- Thiết lập chức năng nâng cấp cấp độ tài khoản nhà tuyển dụng (Basic, Advanced, Premium) có tích hợp xử lý giao dịch qua cổng thanh toán quốc tế PayPal.
- Thiết kế hệ thống phân quyền chặt chẽ với Spring Security, kiểm soát truy cập từ tầng API đến giao diện theo đúng vai trò tác nhân.
- Cải thiện trải nghiệm người dùng trên Next.js thông qua việc duy trì phiên đăng nhập, hỗ trợ tải lười (lazy load) và kết xuất trang tối ưu.
- Đóng góp so với các nền tảng được khảo sát: Đề tài đã trực tiếp giải quyết một số hạn chế của nền tảng ITViec được nhóm chỉ ra trong Chương 1, cụ thể là: tập trung khai thác phân khúc việc làm và thực tập cho người mới bắt đầu trong ngành IT; hỗ trợ sinh viên nộp hồ sơ ứng tuyển trực tiếp đến nhà tuyển dụng mà không bắt buộc phải qua các đơn vị trung gian; cho phép quản lý và tải tệp CV linh hoạt; đồng thời tinh giản giao diện để tối ưu hóa tương tác của người dùng.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế của đề tài:
- Đề tài và báo cáo được thực hiện trong khung thời gian tương đối ngắn (khoảng 3 tháng, từ giữa tháng 04/2024 đến tháng 07/2024).
- Nhóm tác giả tự nhận định còn có những hạn chế nhất định về kiến thức kỹ thuật chuyên sâu cũng như kinh nghiệm thực tiễn trong việc quản trị và triển khai một dự án phần mềm hoàn chỉnh.
- Một số công nghệ và dịch vụ hạ tầng nêu trong mục tiêu tìm hiểu ban đầu của đề cương (như triển khai đóng gói container với Docker, vận hành hệ thống trên các dịch vụ đám mây AWS hoặc Digital Ocean) chưa được trình bày chi tiết về mặt kết quả triển khai thực tế trong nội dung báo cáo.
- Hướng nghiên cứu và phát triển tiếp theo:
- Tiếp tục cải tiến và tối ưu hóa trải nghiệm giao diện người dùng (UI/UX) trên toàn bộ các phân hệ.
- Nâng cấp và tinh chỉnh thuật toán gợi ý công việc cho ứng viên và gợi ý ứng viên cho nhà tuyển dụng để tăng độ chính xác trong kết nối việc làm.
- Hoàn thiện quy trình đóng gói ứng dụng bằng Docker và triển khai thực tế toàn bộ hệ thống lên các nền tảng điện toán đám mây như AWS hoặc Digital Ocean.
Giá trị tham khảo
Báo cáo khóa luận tốt nghiệp này mang lại giá trị tham khảo cụ thể cho các nhóm đối tượng sau:
- Sinh viên chuyên ngành Công nghệ phần mềm và Công nghệ thông tin: Tài liệu cung cấp một trường hợp nghiên cứu (case study) hoàn chỉnh về quy trình xây dựng ứng dụng web phân tán full-stack. Sinh viên có thể tham khảo trực tiếp cấu trúc phân chia giai đoạn thực hiện đề tài tốt nghiệp từ khâu khảo sát hiện trạng, phân tích yêu cầu, mô hình hóa UML đến cài đặt phần mềm.
- Người phát triển quan tâm đến kiến trúc Next.js kết hợp Spring Boot: Khóa luận cung cấp các bảng phân tích, so sánh lý thuyết chi tiết giữa các công nghệ phổ biến (Next.js so với AngularJS; Spring Boot so với Node.js), hỗ trợ việc lựa chọn ngăn xếp công nghệ (tech stack) cho các dự án phần mềm có yêu cầu về hiệu năng, SEO và bảo mật.
- Tham khảo thiết kế ca sử dụng và luồng nghiệp vụ tuyển dụng: Phần đặc tả ca sử dụng (Use Case Specification), thiết kế phân quyền bảo mật 3 cấp với Spring Security và quy trình tích hợp các dịch vụ bên thứ ba (xác thực OTP qua email, lưu trữ tệp Cloudinary, thanh toán trực tuyến PayPal) là tài liệu tham khảo có giá trị ứng dụng thực hành cao.
Câu hỏi thường gặp
1. Khóa luận giải quyết vấn đề thực tiễn nào của thị trường tuyển dụng việc làm công nghệ thông tin?
Khóa luận giải quyết khoảng trống trong thị trường tuyển dụng khi các nền tảng hiện nay chủ yếu tập trung vào nhân sự đã có kinh nghiệm, khiến cơ hội tìm kiếm việc làm và thực tập cho người mới bắt đầu hoặc sinh viên CNTT còn rất hạn chế. Đề tài xây dựng một nền tảng chuyên biệt giúp sinh viên kết nối trực tiếp với nhà tuyển dụng phù hợp với kỹ năng và nhu cầu cá nhân.
2. Điểm khác biệt cốt lõi khi so sánh Spring Boot và Node.js được nhóm tác giả chỉ ra là gì?
Spring Boot sử dụng Java/Kotlin, vận hành trên máy ảo JVM, chuẩn hóa theo Java EE, phù hợp cho các ứng dụng doanh nghiệp lớn đòi hỏi tính ổn định, bảo mật cao và khả năng xử lý đồng thời tác vụ nặng. Ngược lại, Node.js sử dụng JavaScript đồng nhất cho cả máy chủ lẫn trình duyệt, tối ưu cho các ứng dụng web thời gian thực và xử lý tác vụ I/O không đồng bộ, nhưng bị hạn chế đối với các tác vụ đòi hỏi xử lý CPU nặng.
3. Quy trình đăng ký tài khoản của phân hệ Ứng viên bao gồm những bước kiểm tra và xác thực nào?
Quy trình gồm 6 bước: (1) Ứng viên nhập tên đăng nhập, email và mật khẩu; (2) Hệ thống kiểm tra định dạng email; (3) Hệ thống kiểm tra định dạng mật khẩu; (4) Hệ thống tạo và gửi mã xác thực OTP về email đăng ký; (5) Ứng viên nhập mã OTP để xác thực; (6) Kích hoạt tài khoản thành công và chuyển hướng về trang đăng nhập.
4. Khảo sát hiện trạng website ITViec trong khóa luận đã ghi nhận những hạn chế kỹ thuật nào?
Văn bản ghi nhận các hạn chế của ITViec gồm: độ chính xác của tính năng tìm kiếm việc làm chưa cao; số lượng vị trí tuyển dụng thực tập cho sinh viên IT còn ít; việc nộp hồ sơ phải qua đơn vị trung gian; người dùng bị chặn xem hoặc tải CV nếu chưa hoàn tất toàn bộ thông tin cá nhân; và thiết kế UI/UX chưa được tối ưu.
5. Những dịch vụ bên thứ ba (Third-party services) nào được tích hợp vào hệ thống và phục vụ cho mục đích gì?
Hệ thống tích hợp hai dịch vụ chính: Cloudinary được sử dụng để lưu trữ hình ảnh đại diện và lưu trữ tệp tin CV của ứng viên; PayPal được tích hợp thông qua hệ thống API để xử lý chức năng thanh toán trực tuyến khi nhà tuyển dụng thực hiện nâng cấp các gói tài khoản (Basic, Advanced, Premium).
Kết luận
Khóa luận tốt nghiệp "Xây dựng website tìm kiếm việc làm" do sinh viên Võ Phương Nam và Nguyễn Hồng Vũ Khánh thực hiện dưới sự hướng dẫn của ThS. Nguyễn Trần Thi Văn đã hoàn thành mục tiêu xây dựng một nền tảng web tuyển dụng hướng đến đối tượng sinh viên ngành công nghệ thông tin. Báo cáo thể hiện quy trình công nghệ bài bản thông qua việc phân tích hạn chế của các giải pháp thực tế, so sánh lý thuyết chuyên sâu giữa các framework và hiện thực hóa hệ thống trên ngăn xếp công nghệ Next.js, Spring Boot, Spring Security và MySQL. Mặc dù còn một số hạn chế về thời gian thực nghiệm và phạm vi triển khai đám mây, đề tài đã cung cấp đầy đủ các phân hệ chức năng thiết yếu cùng giải pháp tích hợp xác thực OTP, lưu trữ Cloudinary và thanh toán trực tuyến PayPal hoàn chỉnh.