1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Xây dựng website hỗ trợ tìm kiếm việc làm puzzle tk

135 23 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Website Hỗ Trợ Tìm Kiếm Việc Làm Puzzle.TK
Tác giả Lê Thị Ngọc Diễm, Lê Vũ Hảo
Người hướng dẫn ThS. Mai Anh Thơ
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 135
Dung lượng 10,47 MB

Cấu trúc

  • 1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI (6)
  • 2. ĐỐI TƯỢNG NGHIÊN CỨU (6)
  • 3. PHẠM VI NGHIÊN CỨU (6)
  • 4. MỤC TIÊU ĐỀ TÀI (6)
  • 5. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN (6)
  • 6. PHÂN CÔNG (19)
  • CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HOÁ YÊU CẦU (20)
    • 1.1 KHẢO SÁT HIỆN TRẠNG (6)
      • 1.1.1 Vieclam24h.vn (20)
      • 1.1.2 Topcv.vn (21)
      • 1.1.3 Vlance.vn (22)
      • 1.1.4 Linkedin.com (24)
      • 1.1.5 Glints.com (26)
      • 1.1.6 Kết luận (27)
    • 1.2 XÁC ĐỊNH YÊU CẦU (7)
      • 1.2.1 Yêu cầu chức năng (29)
      • 1.2.2 Yêu cầu phi chức năng (30)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (7)
    • 2.1 KIẾN TRÚC HỆ THỐNG (7)
    • 2.2 CÁC CÔNG NGHỆ SỬ DỤNG (32)
      • 2.2.1 ReactJS Framework (32)
      • 2.2.2 Spring framework (37)
      • 2.2.3 Web client (38)
      • 2.2.4 PostgresSQL (39)
      • 2.2.5 Redis (40)
      • 2.2.6 Jasypt (42)
      • 2.2.7 AWS S3 (43)
      • 2.2.8 Paypal (45)
  • CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ PHẦN MỀM (47)
    • 3.1.1 Usecase “Đăng nhập” (48)
    • 3.1.2 Usecase “Đăng ký” (49)
    • 3.1.3 Usecase “Xem thông tin tuyển dụng” (51)
    • 3.1.4 Usecase “Đổi mật khẩu” (52)
    • 3.1.5 Usecase “Chỉnh sửa thông tin cá nhân” (53)
    • 3.1.6 Usecase “Xem trang cá nhân thành viên” (55)
    • 3.1.7 Usecase “Thêm thông báo tuyển dụng” (56)
    • 3.1.8 Usecase “Chỉnh sửa thông báo tuyển dụng” (57)
    • 3.1.9 Usecase “Xóa thông báo tuyển dụng” (58)
    • 3.1.10 Usecase “Theo dõi nhà tuyển dụng” (59)
    • 3.1.11 Usecase “Theo dõi công ty” (61)
    • 3.1.12 Usecase “Ứng tuyển” (62)
    • 3.1.13 Usecase “Thêm thông báo công việc” (63)
    • 3.1.14 Usecase “Phản hồi yêu cầu ứng tuyển” (65)
    • 3.1.15 Usecase “Thêm tài khoản” (66)
    • 3.1.16 Usecase “Xoá tài khoản” (68)
    • 3.1.17 Usecase “Reset mật khẩu” (69)
    • 3.1.18 Usecase “Thêm ExtraInfo” (70)
    • 3.1.19 Usecase “Sửa ExtraInfo” (71)
    • 3.1.20 Usecase “Xoá ExtraInfo” (72)
    • 3.1.21 Usecase “Thống kê số lượng Job được tạo” (73)
    • 3.1.22 Usecase “Thống kê số lượng tài khoản được tạo” (74)
    • 3.1.23 Usecase “Xem profile ứng viên” (75)
    • 3.1.24 Usecase “Thêm thông tin công ty” (76)
    • 3.1.25 Usecase “Lưu thông tin tuyển dụng” (78)
    • 3.1.26 Usecase “Xem đơn ứng tuyển” (79)
    • 3.1.27 Usecase “Xem đánh giá, gợi ý từ Hirize cho đơn ứng tuyển” (80)
    • 3.1.28 Usecase “Thêm bình luận” (82)
    • 3.1.29 Usecase “Sửa bình luận” (83)
    • 3.1.30 Usecase “Xoá bình luận” (84)
    • 3.1.31 Usecase “Thêm bài chia sẻ mới” (86)
    • 3.1.32 Usecase “Chỉnh sửa thông tin bài chia sẻ” (87)
    • 3.1.33 Usecase “Xóa thông tin bài chia sẻ” (88)
    • 3.2 LƯỢC ĐỒ LỚP (7)
    • 3.3 THIẾT KẾ CƠ SỞ DỮ LIỆU (7)
      • 3.3.1 Lược đồ sơ sở dữ liệu (91)
      • 3.3.2 Chi tiết bảng dữ liệu (91)
    • 3.4 THIẾT KẾ GIAO DIỆN (7)
      • 3.4.1 Giao diện chính phía người dùng (102)
      • 3.4.2 Giao diện phía Admin (115)
  • CHƯƠNG 4: CÀI ĐẶT VÀ KIỂM THỬ (7)
    • 4.1 CÀI ĐẶT HỆ THỐNG (7)
      • 4.1.1 Cài đặt website (122)
      • 4.1.2 Kiểm thử bản beta đã deploy (122)
    • 4.2 KIỂM THỬ HỆ THỐNG (7)
      • 4.2.1 Kế hoạch kiểm thử (123)
      • 4.2.2 Quy trình thiết kế kiểm thử (123)
      • 4.2.3 Quy trình chạy bộ kiểm thử (124)
      • 4.2.4 Kiểm thử một số chức năng của hệ thống (125)
    • 1. KẾT QUẢ ĐÃ ĐẠT ĐƯỢC (132)
      • 1.1. VỀ LÝ THUYẾT (132)
      • 1.2. VỀ HỆ THỐNG (132)
    • 2. ƯU ĐIỂM (3)
    • 3. NHƯỢC ĐIỂM (7)
    • 4. HƯỚNG PHÁT TRIỂN (7)
  • TÀI LIỆU THAM KHẢO (7)

Nội dung

Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN

CHƯƠNG 1 KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

2.2 Các công nghệ áp dụng

CHƯƠNG 3 THIẾT KẾ PHẦN MỀM

3.1 Mô hình hoá yêu cầu

CHƯƠNG 4 CÀI ĐẶT VÀ KIỂM THỬ

STT Thời gian Công việc Ghi chú

- Thiết kế usecase và mô hình hóa yêu cầu

- Thiết kế cơ sở dữ liệu

- Tìm hiểu về thư viện ReactJS, HTML, SCSS

- Tìm hiểu về Spring boot

- Điều chỉnh cơ sở dữ liệu

- Tìm hiểu về JSON Web Token để ứng dụng vào xác thực và phân quyền API của hệ thống

- Tìm hiểu cách xây dựng RESTful API

- Tìm hiểu về PostgresSQL để áp dụng vào lưu trữ dữ liệu

- Tiến hành phát triển API dựa trên các kiến thức đã tìm hiểu được và các tài liệu

- Tiến hành xây dựng giao diện người dùng cho hệ thống

- Tích hợp xử lý giao diện với các chức năng của API

- Điều chỉnh và hoàn thiện các chức năng của hệ thống

6 09/06/2023 – 20/06/2023 - Tích hợp thêm sdk, api của bên thứ

3 hỗ trợ xử lý các logic nghiệp vụ

- Kiểm thử chương trình và tiến hành sửa lỗi

- Tìm hiểu và thực hành deploy

- Viết và hoàn thiện báo cáo

(Ký và ghi rõ họ tên)

Tp Hồ Chí Minh, ngày tháng 7 năm 2023

(Ký và ghi rõ họ tên)

1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1

5 Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN 2

CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HOÁ YÊU CẦU 4

1.2.2 Yêu cầu phi chức năng 14

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 15

2.2 CÁC CÔNG NGHỆ SỬ DỤNG 16

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ PHẦN MỀM 31

3.1 MÔ HÌNH HOÁ YÊU CẦU PHÍA KHÁCH, NGƯỜI LAO ĐỘNG VÀ NHÀ

3.1.3 Usecase “Xem thông tin tuyển dụng” 35

3.1.5 Usecase “Chỉnh sửa thông tin cá nhân” 37

3.1.6 Usecase “Xem trang cá nhân thành viên” 39

3.1.7 Usecase “Thêm thông báo tuyển dụng” 40

3.1.8 Usecase “Chỉnh sửa thông báo tuyển dụng” 41

3.1.9 Usecase “Xóa thông báo tuyển dụng” 42

3.1.10 Usecase “Theo dõi nhà tuyển dụng” 43

3.1.11 Usecase “Theo dõi công ty” 45

3.1.13 Usecase “Thêm thông báo công việc” 47

3.1.14 Usecase “Phản hồi yêu cầu ứng tuyển” 49

3.1.21 Usecase “Thống kê số lượng Job được tạo” 57

3.1.22 Usecase “Thống kê số lượng tài khoản được tạo” 58

3.1.23 Usecase “Xem profile ứng viên” 59

3.1.24 Usecase “Thêm thông tin công ty” 60

3.1.25 Usecase “Lưu thông tin tuyển dụng” 62

3.1.26 Usecase “Xem đơn ứng tuyển” 63

3.1.27 Usecase “Xem đánh giá, gợi ý từ Hirize cho đơn ứng tuyển” 64

3.1.31 Usecase “Thêm bài chia sẻ mới” 70

3.1.32 Usecase “Chỉnh sửa thông tin bài chia sẻ” 71

3.1.33 Usecase “Xóa thông tin bài chia sẻ” 72

3.3 THIẾT KẾ CƠ SỞ DỮ LIỆU 75

3.3.1 Lược đồ sơ sở dữ liệu 75

3.3.2 Chi tiết bảng dữ liệu 75

3.4.1 Giao diện chính phía người dùng 86

CHƯƠNG 4: CÀI ĐẶT VÀ KIỂM THỬ 106

4.1.2 Kiểm thử bản beta đã deploy 106

4.2.2 Quy trình thiết kế kiểm thử 107

4.2.3 Quy trình chạy bộ kiểm thử 108

4.2.4 Kiểm thử một số chức năng của hệ thống 109

1 KẾT QUẢ ĐÃ ĐẠT ĐƯỢC 116

Hình 2.1 Kiến trúc hệ thống 15

Hình 2.2 Virtual DOM trong ReactJS 17

Hình 2.3 One-way binding trong ReactJS 18

Hình 2.4 Luồng hoạt động của Redux-saga 20

Hình 2.5 Các thành phần cấu thành Spring Boot 21

Hình 2.7 Sơ đồ ứng dụng WebClient vào hệ thống 23

Hình 2.9 Hệ thống sử dụng hệ cơ sở dữ liệu PostgresSQL 24

Hình 2.10 Ứng dụng Redis trong hệ thống 26

Hình 2.12 Ứng dụng Jasypt mã hoá thông tin nhạy cảm 27

Hình 2.13 Ứng dụng Jasypt mã hoá thông tin nhạy cảm 27

Hình 2.15 Ứng dụng AWS trong hệ thống 29

Hình 2.17 Tích hợp thanh toán Paypal trong hệ thống 30

Hình 3.1 Usecase phía khách, người lao động và nhà tuyển dụng 31

Hình 3.2 Usecase phía quản trị viên và phần chung 32

Hình 3.3 Lược đồ tuần tự “Đăng nhập” 33

Hình 3.4 Lược đồ tuần tự “Đăng ký” 35

Hình 3.5 Lược đồ tuần tự “Xem thông tin tuyển dụng” 36

Hình 3.6 Lược đồ tuần tự “Đổi mật khẩu” 37

Hình 3.7 Lược đồ tuần tự “Chỉnh sửa thông tin cá nhân” 39

Hình 3.8 Lược đồ tuần tự “Xem trang cá nhân thành viên” 40

Hình 3.9 Lược đồ tuần tự “Thêm thông báo tuyển dụng” 41

Hình 3.10 Lược đồ tuần tự “Chỉnh sửa thông báo tuyển dụng” 42

Hình 3.11 Lược đồ tuần tự “Xóa thông báo tuyển dụng” 43

Hình 3.12 Lược đồ tuần tự “Theo dõi nhà tuyển dụng” 45

Hình 3.13 Lược đồ tuần tự “Theo dõi công ty” 46

Hình 3.14 Lược đồ tuần tự “Ứng tuyển” 47

Hình 3.15 Lược đồ tuần tự “Thêm thông báo công việc” 48

Hình 3.16 Lược đồ tuần tự “Xử lý các yêu cầu ứng tuyển” 50

Hình 3.17 Lược đồ tuần tự “Thêm tài khoản” 51

Hình 3.18 Lược đồ tuần tự “Xoá tài khoản” 52

Hình 3.19 Lược đồ tuần tự “Reset mật khẩu” 54

Hình 3.20 Lược đồ tuần tự “Thêm ExtraInfo” 55

Hình 3.21 Lược đồ tuần tự “Sửa ExtraInfo” 56

Hình 3.22 Lược đồ tuần tự “Xoá ExtraInfo” 57

Hình 3.23 Lược đồ tuần tự “Thống kê Job” 58

Hình 3.24 Lược đồ tuần tự “Thống kê tài khoản” 59

Hình 3.25 Lược đồ tuần tự “Xem profile ứng viên” 60

Hình 3.26 Lược đồ tuần tự “Thêm thông tin công ty” 61

Hình 3.27 Lược đồ tuần tự “Lưu thông tin tuyển dụng” 63

Hình 3.28 Lược đồ tuần tự “Xem đơn ứng tuyển” 64

Hình 3.29 Lược đồ tuần tự “Xem đánh giá từ Hirize cho đơn ứng tuyển” 65

Hình 3.30 Lược đồ tuần tự “Thêm bình luận” 67

Hình 3.31 Lược đồ usecase sửa bình luận 68

Hình 3.32 Lược đồ tuần tự “Xoá bình luận” 69

Hình 3.33 Lược đồ tuần tự “Thêm bài chia sẻ mới” 71

Hình 3.34 Lược đồ tuần tự “Chỉnh sửa thông tin bài chia sẻ” 72

Hình 3.35 Lược đồ tuần tự “Xóa thông tin bài chia sẻ” 73

Hình 3.37 Lược đồ cơ sở dữ liệu 75

Hình 3.38 Giao diện Trang đăng nhập 86

Hình 3.39 Giao diện Trang đăng ký 87

Hình 3.40 Giao diện Trang tìm kiếm Job 88

Hình 3.41 Giao diện Trang thông tin liên hệ 89

Hình 3.42 Giao diện Trang chủ 90

Hình 3.43 Giao diện Chi tiết Job 91

Hình 3.44 Giao diện Dashboard Employer 92

Hình 3.45 Giao diện List các job đã đăng của Employer 93

Hình 3.46 Giao diện List các applicant của Employer 94

Hình 3.47 Giao diện My Account của Candidate 95

Hình 3.48 Giao diện My Account của Candidate 96

Hình 3.49 Giao diện Chỉnh sửa thông tin cá nhân 97

Hình 3.50 Giao diện Quản lí CV 97

Hình 3.51 Giao diện tạo CV 98

Hình 3.52 Giao diện Trang Dashboard 99

Hình 3.53 Giao diện Trang List All Job 100

Hình 3.54 Giao diện Trang List All Company 101

Hình 3.55 Giao diện Trang thêm Company 102

Hình 3.56 Giao diện Trang List All Extra Info 103

Hình 3.57 Giao diện Trang thêm Extra Info 104

Hình 3.58 Giao diện Trang cập nhật thông tin tài khoản admin 104

Hình 4.1 Quy trình thiết kế kiểm thử 107

Hình 4.2 Quy trình chạy bộ kiểm thử 108

Bảng 0.1 Bảng phân công công việc 3

Bảng 3.1 Đặc tả usecase “Đăng nhập” 32

Bảng 3.2 Đặc tả usecase “Đăng ký” 34

Bảng 3.3 Đặc tả usecase “Xem thông tin tuyển dụng” 35

Bảng 3.4 Đặc tả usecase “Đổi mật khẩu” 36

Bảng 3.5 Đặc tả usecase “Chỉnh sửa thông tin cá nhân” 38

Bảng 3.6 Đặc tả usecase “Xem trang cá nhân thành viên” 39

Bảng 3.7 Đặc tả usecase “Thêm thông báo tuyển dụng” 40

Bảng 3.8 Đặc tả usecase “Chỉnh sửa thông báo tuyển dụng” 41

Bảng 3.9 Đặc tả usecase “Xóa thông báo tuyển dụng” 42

Bảng 3.10 Đặc tả usecase “Theo dõi nhà tuyển dụng” 44

Bảng 3.11 Đặc tả usecase “Theo dõi nhà tuyển dụng” 45

Bảng 3.12 Đặc tả usecase “Ứng tuyển” 46

Bảng 3.13 Đặc tả usecase “Thêm thông báo công việc” 47

Bảng 3.14 Đặc tả usecase “Xử lý các yêu cầu ứng tuyển” 49

Bảng 3.15 Đặc tả usecase “Thêm tài khoản” 50

Bảng 3.16 Đặc tả usecase “Xoá tài khoản” 52

Bảng 3.17 Đặc tả usecase “Reset mật khẩu” 53

Bảng 3.18 Đặc tả usecase “Thêm ExtraInfo” 54

Bảng 3.19 Đặc tả usecase “Sửa ExtraInfo” 55

Bảng 3.20 Đặc tả usecase “Xoá ExtraInfo” 56

Bảng 3.21 Đặc tả usecase “Thống kê số lượng Job được tạo” 57

Bảng 3.22 Đặc tả usecase “Thống kê số lượng tài khoản được tạo” 58

Bảng 3.23 Đặc tả usecase “Xem profile ứng viên” 59

Bảng 3.24 Đặc tả usecase “Thêm thông tin công ty” 60

Bảng 3.25 Đặc tả usecase “Lưu thông tin tuyển dụng” 62

Bảng 3.26 Đặc tả usecase “Xem đơn ứng tuyển” 63

Bảng 3.27 Đặc tả usecase “Xem đánh giá, gợi ý từ Hirize cho đơn ứng tuyển”64 Bảng 3.28 Đặc tả usecase “Xem đánh giá từ Hirize cho đơn ứng tuyển” 66

Bảng 3.29 Đặc tả usecase “Sửa bình luận” 67

Bảng 3.30 Đặc tả usecase “Xoá bình luận” 68

Bảng 3.31 Đặc tả usecase “Thêm bài chia sẻ mới” 70

Bảng 3.32 Đặc tả usecase “Chỉnh sửa thông tin bài chia sẻ” 71

Bảng 3.33 Đặc tả usecase “Xóa thông tin bài chia sẻ” 72

Bảng 3.34 Chi tiết bảng dữ liệu “users” 75

Bảng 3.35 Chi tiết dữ liệu bảng “token” 76

Bảng 3.36 Chi tiết bảng “role” 76

Bảng 3.37 Chi tiết bảng “user_role” 76

Bảng 3.38 Chi tiết bảng “document” 77

Bảng 3.39 Chi tiết bảng “candidate” 77

Bảng 3.40 Chi tiết bảng “employer” 78

Bảng 3.41 Chi tiết bảng “job_alert” 78

Bảng 3.42 Chi tiết bảng “package” 79

Bảng 3.43 Chi tiết bảng “subscribe” 79

Bảng 3.44 Chi tiết bảng “application” 80

Bảng 3.45 Chi tiết bảng “follow_employer” 80

Bảng 3.46 Chi tiết bảng “notification” 80

Bảng 3.47 Chi tiết bảng “viewed_user” 81

Bảng 3.48 Chi tiết bảng “extra_info” 81

Bảng 3.49 Chi tiết bảng “evaluate” 81

Bảng 3.50 Chi tiết bảng “company” 82

Bảng 3.51 Chi tiết bảng “following_company” 82

Bảng 3.52 Chi tiết bảng “image” 82

Bảng 3.53 Chi tiết bảng “invoice” 83

Bảng 3.54Chi tiết bảng “experience” 83

Bảng 3.55 Chi tiết bảng “save_job” 84

Bảng 3.56 Chi tiết bảng “job_post” 84

Bảng 3.57 Mô tả giao diện Trang đăng nhập 86

Bảng 3.58 Mô tả giao diện Trang đăng ký 87

Bảng 3.59 Mô tả giao diện Trang tìm kiếm Job 88

Bảng 3.60 Mô tả giao diện Trang thông tin liên hệ 89

Bảng 3.61 Mô tả giao diện Trang chủ 90

Bảng 3.62 Mô tả giao diện Chi tiết Job 92

Bảng 3.63 Mô tả giao diện Dashboard Employer 92

Bảng 3.64 Mô tả giao diện List các job đã đăng của Employer 93

Bảng 3.65 Mô tả giao diện List các applicant của Employer 94

Bảng 3.66 Mô tả giao diện My Account của Candidate 95

Bảng 3.67 Mô tả giao diện My Account của Candidate 96

Bảng 3.68 Mô tả giao diện Chỉnh sửa thông tin cá nhân 97

Bảng 3.69 Mô tả giao diện quản lý CV 97

Bảng 3.70 Mô tả giao diện tạo CV 98

Bảng 3.71 Mô tả giao diện Trang Dashboard 99

Bảng 3.72 Mô tả giao diện Trang List All Job 100

Bảng 3.73 Mô tả giao diện Trang List All Company 101

Bảng 3.74 Mô tả giao diện Trang thêm Company 102

Bảng 3.75 Mô tả giao diện Trang List All Extra Info 103

Bảng 3.76 Mô tả giao diện Trang thêm Extra Info 104

Bảng 3.77 Mô tả giao diện Trang cập nhật thông tin tài khoản admin 105

Bảng 4.1 Kiểm thử các chức năng trang quản trị 109

Bảng 4.2 Kiểm thử các chức năng người dùng không có tài khoản 111

Bảng 4.3 Kiểm thử các chức năng của ứng viên 112

Bảng 4.4 Kiểm thử các chức năng của nhà tuyển dụng 113

1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Trong bối cảnh xã hội ngày càng phát triển, nhu cầu tìm kiếm việc làm và tuyển dụng nhân viên ngày càng gia tăng Công nghệ đã giúp số hoá quy trình này, với sự xuất hiện của các website tìm kiếm việc làm trở nên thiết yếu Người tìm việc có thể tạo hồ sơ cá nhân và thiết lập tiêu chí tìm kiếm chỉ một lần, từ đó dễ dàng ứng tuyển vào nhiều vị trí Đồng thời, nhà tuyển dụng cũng thuận tiện trong việc đăng tin tuyển dụng, quản lý thông tin ứng viên và theo dõi quy trình tuyển dụng hiệu quả Những tiện ích này đã dẫn đến sự ra đời của nhiều website hỗ trợ việc làm như TopCV, Linkedin, Glint, và Vlance.

Các website hỗ trợ việc làm thường tập trung vào việc tìm kiếm và đánh giá thủ công, dẫn đến việc theo dõi và đánh giá công việc cũng như chất lượng ứng viên mất nhiều thời gian Để giải quyết vấn đề này, nhóm thực hiện đã đề xuất giải pháp hỗ trợ tìm kiếm công việc phù hợp, giúp người tìm việc dễ dàng hơn Đồng thời, công cụ này cũng hỗ trợ nhà tuyển dụng trong việc đánh giá sơ bộ các ứng viên, từ đó tiết kiệm thời gian và tìm kiếm ứng viên phù hợp một cách hiệu quả hơn.

Nhóm đã phát triển website puzzleute.tk nhằm hỗ trợ ứng viên tìm kiếm việc làm hiệu quả hơn và giúp nhà tuyển dụng dễ dàng chọn lựa ứng viên phù hợp, tiết kiệm thời gian và công sức.

Sau khi nghiên cứu thông tin liên quan đến đề tài và áp dụng kiến thức đã học, nhóm đã xác định các đối tượng nghiên cứu cần thiết cho đề tài này.

• Quản lý dữ liệu PostgresSQL

• IDE: intellij, Visual studio code

• Các nền tảng tuyển dụng phổ biến như TopCV, Linkin, Vlance,…

• Và một số công nghệ liên quan khác

Nhóm phát triển ứng dụng này tập trung vào việc nghiên cứu và triển khai các chức năng cốt lõi của nền tảng tuyển dụng, nhằm hỗ trợ người dùng tìm kiếm việc làm hiệu quả Ứng dụng cũng giúp quản lý hồ sơ ứng viên và tối ưu hóa quá trình tìm kiếm dựa trên thông tin công việc, khả năng và tình trạng của ứng viên.

Xây dựng một nền tảng website tuyển dụng với các chức năng cơ bản như hỗ trợ ứng viên tìm kiếm việc làm, cho phép nhà tuyển dụng đăng tin tuyển dụng, quản lý các công việc đã đăng, quản lý hồ sơ ứng viên và gợi ý các công việc phù hợp với khả năng của ứng viên.

Thông qua việc thực hiện đề tài này, nhóm sẽ có cơ hội tiếp xúc và học hỏi các nghiệp vụ liên quan đến tối ưu hóa sắp xếp, tìm kiếm và quản lý quá trình tuyển dụng Đồng thời, nhóm cũng sẽ tiếp thu các kiến thức chuyên môn về công nghệ hiện đại như React và Spring Boot.

5 Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN

Sau khi hoàn thành đề tài, nhóm chúng em đã tích lũy được nhiều kỹ năng và kiến thức quý giá, đặc biệt về các công nghệ mới hiện nay Đồng thời, chúng em cũng nâng cao tinh thần nghiên cứu, sáng tạo và cống hiến cho cộng đồng.

Khi đề tài nhóm được áp dụng vào thực tế, hoạt động tuyển dụng sẽ trở nên thuận tiện hơn cho các nhà tuyển dụng Với khả năng tối ưu hóa tìm kiếm và phân loại công việc cùng ứng viên, nền tảng này giúp ứng viên dễ dàng tiếp cận các cơ hội việc làm phù hợp, đồng thời hỗ trợ cộng đồng và mang lại tiềm năng cho nhà tuyển dụng.

PHÂN CÔNG

Bảng 0.1 Bảng phân công công việc

THÀNH VIÊN CÔNG VIỆC HOÀN THÀNH

- Viết báo cáo phần Front-End và Giao diện

- Thiết kế cơ sở dữ liệu

- Viết báo cáo phần Back-End và các phần còn lại

KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HOÁ YÊU CẦU

CƠ SỞ LÝ THUYẾT

KIẾN TRÚC HỆ THỐNG

2.2 Các công nghệ áp dụng

CHƯƠNG 3 THIẾT KẾ PHẦN MỀM

3.1 Mô hình hoá yêu cầu

CHƯƠNG 4 CÀI ĐẶT VÀ KIỂM THỬ

STT Thời gian Công việc Ghi chú

- Thiết kế usecase và mô hình hóa yêu cầu

- Thiết kế cơ sở dữ liệu

- Tìm hiểu về thư viện ReactJS, HTML, SCSS

- Tìm hiểu về Spring boot

- Điều chỉnh cơ sở dữ liệu

- Tìm hiểu về JSON Web Token để ứng dụng vào xác thực và phân quyền API của hệ thống

- Tìm hiểu cách xây dựng RESTful API

- Tìm hiểu về PostgresSQL để áp dụng vào lưu trữ dữ liệu

- Tiến hành phát triển API dựa trên các kiến thức đã tìm hiểu được và các tài liệu

- Tiến hành xây dựng giao diện người dùng cho hệ thống

- Tích hợp xử lý giao diện với các chức năng của API

- Điều chỉnh và hoàn thiện các chức năng của hệ thống

6 09/06/2023 – 20/06/2023 - Tích hợp thêm sdk, api của bên thứ

3 hỗ trợ xử lý các logic nghiệp vụ

- Kiểm thử chương trình và tiến hành sửa lỗi

- Tìm hiểu và thực hành deploy

- Viết và hoàn thiện báo cáo

(Ký và ghi rõ họ tên)

Tp Hồ Chí Minh, ngày tháng 7 năm 2023

(Ký và ghi rõ họ tên)

1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1

5 Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN 2

CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HOÁ YÊU CẦU 4

1.2.2 Yêu cầu phi chức năng 14

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 15

2.2 CÁC CÔNG NGHỆ SỬ DỤNG 16

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ PHẦN MỀM 31

3.1 MÔ HÌNH HOÁ YÊU CẦU PHÍA KHÁCH, NGƯỜI LAO ĐỘNG VÀ NHÀ

3.1.3 Usecase “Xem thông tin tuyển dụng” 35

3.1.5 Usecase “Chỉnh sửa thông tin cá nhân” 37

3.1.6 Usecase “Xem trang cá nhân thành viên” 39

3.1.7 Usecase “Thêm thông báo tuyển dụng” 40

3.1.8 Usecase “Chỉnh sửa thông báo tuyển dụng” 41

3.1.9 Usecase “Xóa thông báo tuyển dụng” 42

3.1.10 Usecase “Theo dõi nhà tuyển dụng” 43

3.1.11 Usecase “Theo dõi công ty” 45

3.1.13 Usecase “Thêm thông báo công việc” 47

3.1.14 Usecase “Phản hồi yêu cầu ứng tuyển” 49

3.1.21 Usecase “Thống kê số lượng Job được tạo” 57

3.1.22 Usecase “Thống kê số lượng tài khoản được tạo” 58

3.1.23 Usecase “Xem profile ứng viên” 59

3.1.24 Usecase “Thêm thông tin công ty” 60

3.1.25 Usecase “Lưu thông tin tuyển dụng” 62

3.1.26 Usecase “Xem đơn ứng tuyển” 63

3.1.27 Usecase “Xem đánh giá, gợi ý từ Hirize cho đơn ứng tuyển” 64

3.1.31 Usecase “Thêm bài chia sẻ mới” 70

3.1.32 Usecase “Chỉnh sửa thông tin bài chia sẻ” 71

3.1.33 Usecase “Xóa thông tin bài chia sẻ” 72

3.3 THIẾT KẾ CƠ SỞ DỮ LIỆU 75

3.3.1 Lược đồ sơ sở dữ liệu 75

3.3.2 Chi tiết bảng dữ liệu 75

3.4.1 Giao diện chính phía người dùng 86

CHƯƠNG 4: CÀI ĐẶT VÀ KIỂM THỬ 106

4.1.2 Kiểm thử bản beta đã deploy 106

4.2.2 Quy trình thiết kế kiểm thử 107

4.2.3 Quy trình chạy bộ kiểm thử 108

4.2.4 Kiểm thử một số chức năng của hệ thống 109

1 KẾT QUẢ ĐÃ ĐẠT ĐƯỢC 116

Hình 2.1 Kiến trúc hệ thống 15

Hình 2.2 Virtual DOM trong ReactJS 17

Hình 2.3 One-way binding trong ReactJS 18

Hình 2.4 Luồng hoạt động của Redux-saga 20

Hình 2.5 Các thành phần cấu thành Spring Boot 21

Hình 2.7 Sơ đồ ứng dụng WebClient vào hệ thống 23

Hình 2.9 Hệ thống sử dụng hệ cơ sở dữ liệu PostgresSQL 24

Hình 2.10 Ứng dụng Redis trong hệ thống 26

Hình 2.12 Ứng dụng Jasypt mã hoá thông tin nhạy cảm 27

Hình 2.13 Ứng dụng Jasypt mã hoá thông tin nhạy cảm 27

Hình 2.15 Ứng dụng AWS trong hệ thống 29

Hình 2.17 Tích hợp thanh toán Paypal trong hệ thống 30

Hình 3.1 Usecase phía khách, người lao động và nhà tuyển dụng 31

Hình 3.2 Usecase phía quản trị viên và phần chung 32

Hình 3.3 Lược đồ tuần tự “Đăng nhập” 33

Hình 3.4 Lược đồ tuần tự “Đăng ký” 35

Hình 3.5 Lược đồ tuần tự “Xem thông tin tuyển dụng” 36

Hình 3.6 Lược đồ tuần tự “Đổi mật khẩu” 37

Hình 3.7 Lược đồ tuần tự “Chỉnh sửa thông tin cá nhân” 39

Hình 3.8 Lược đồ tuần tự “Xem trang cá nhân thành viên” 40

Hình 3.9 Lược đồ tuần tự “Thêm thông báo tuyển dụng” 41

Hình 3.10 Lược đồ tuần tự “Chỉnh sửa thông báo tuyển dụng” 42

Hình 3.11 Lược đồ tuần tự “Xóa thông báo tuyển dụng” 43

Hình 3.12 Lược đồ tuần tự “Theo dõi nhà tuyển dụng” 45

Hình 3.13 Lược đồ tuần tự “Theo dõi công ty” 46

Hình 3.14 Lược đồ tuần tự “Ứng tuyển” 47

Hình 3.15 Lược đồ tuần tự “Thêm thông báo công việc” 48

Hình 3.16 Lược đồ tuần tự “Xử lý các yêu cầu ứng tuyển” 50

Hình 3.17 Lược đồ tuần tự “Thêm tài khoản” 51

Hình 3.18 Lược đồ tuần tự “Xoá tài khoản” 52

Hình 3.19 Lược đồ tuần tự “Reset mật khẩu” 54

Hình 3.20 Lược đồ tuần tự “Thêm ExtraInfo” 55

Hình 3.21 Lược đồ tuần tự “Sửa ExtraInfo” 56

Hình 3.22 Lược đồ tuần tự “Xoá ExtraInfo” 57

Hình 3.23 Lược đồ tuần tự “Thống kê Job” 58

Hình 3.24 Lược đồ tuần tự “Thống kê tài khoản” 59

Hình 3.25 Lược đồ tuần tự “Xem profile ứng viên” 60

Hình 3.26 Lược đồ tuần tự “Thêm thông tin công ty” 61

Hình 3.27 Lược đồ tuần tự “Lưu thông tin tuyển dụng” 63

Hình 3.28 Lược đồ tuần tự “Xem đơn ứng tuyển” 64

Hình 3.29 Lược đồ tuần tự “Xem đánh giá từ Hirize cho đơn ứng tuyển” 65

Hình 3.30 Lược đồ tuần tự “Thêm bình luận” 67

Hình 3.31 Lược đồ usecase sửa bình luận 68

Hình 3.32 Lược đồ tuần tự “Xoá bình luận” 69

Hình 3.33 Lược đồ tuần tự “Thêm bài chia sẻ mới” 71

Hình 3.34 Lược đồ tuần tự “Chỉnh sửa thông tin bài chia sẻ” 72

Hình 3.35 Lược đồ tuần tự “Xóa thông tin bài chia sẻ” 73

Hình 3.37 Lược đồ cơ sở dữ liệu 75

Hình 3.38 Giao diện Trang đăng nhập 86

Hình 3.39 Giao diện Trang đăng ký 87

Hình 3.40 Giao diện Trang tìm kiếm Job 88

Hình 3.41 Giao diện Trang thông tin liên hệ 89

Hình 3.42 Giao diện Trang chủ 90

Hình 3.43 Giao diện Chi tiết Job 91

Hình 3.44 Giao diện Dashboard Employer 92

Hình 3.45 Giao diện List các job đã đăng của Employer 93

Hình 3.46 Giao diện List các applicant của Employer 94

Hình 3.47 Giao diện My Account của Candidate 95

Hình 3.48 Giao diện My Account của Candidate 96

Hình 3.49 Giao diện Chỉnh sửa thông tin cá nhân 97

Hình 3.50 Giao diện Quản lí CV 97

Hình 3.51 Giao diện tạo CV 98

Hình 3.52 Giao diện Trang Dashboard 99

Hình 3.53 Giao diện Trang List All Job 100

Hình 3.54 Giao diện Trang List All Company 101

Hình 3.55 Giao diện Trang thêm Company 102

Hình 3.56 Giao diện Trang List All Extra Info 103

Hình 3.57 Giao diện Trang thêm Extra Info 104

Hình 3.58 Giao diện Trang cập nhật thông tin tài khoản admin 104

Hình 4.1 Quy trình thiết kế kiểm thử 107

Hình 4.2 Quy trình chạy bộ kiểm thử 108

Bảng 0.1 Bảng phân công công việc 3

Bảng 3.1 Đặc tả usecase “Đăng nhập” 32

Bảng 3.2 Đặc tả usecase “Đăng ký” 34

Bảng 3.3 Đặc tả usecase “Xem thông tin tuyển dụng” 35

Bảng 3.4 Đặc tả usecase “Đổi mật khẩu” 36

Bảng 3.5 Đặc tả usecase “Chỉnh sửa thông tin cá nhân” 38

Bảng 3.6 Đặc tả usecase “Xem trang cá nhân thành viên” 39

Bảng 3.7 Đặc tả usecase “Thêm thông báo tuyển dụng” 40

Bảng 3.8 Đặc tả usecase “Chỉnh sửa thông báo tuyển dụng” 41

Bảng 3.9 Đặc tả usecase “Xóa thông báo tuyển dụng” 42

Bảng 3.10 Đặc tả usecase “Theo dõi nhà tuyển dụng” 44

Bảng 3.11 Đặc tả usecase “Theo dõi nhà tuyển dụng” 45

Bảng 3.12 Đặc tả usecase “Ứng tuyển” 46

Bảng 3.13 Đặc tả usecase “Thêm thông báo công việc” 47

Bảng 3.14 Đặc tả usecase “Xử lý các yêu cầu ứng tuyển” 49

Bảng 3.15 Đặc tả usecase “Thêm tài khoản” 50

Bảng 3.16 Đặc tả usecase “Xoá tài khoản” 52

Bảng 3.17 Đặc tả usecase “Reset mật khẩu” 53

Bảng 3.18 Đặc tả usecase “Thêm ExtraInfo” 54

Bảng 3.19 Đặc tả usecase “Sửa ExtraInfo” 55

Bảng 3.20 Đặc tả usecase “Xoá ExtraInfo” 56

Bảng 3.21 Đặc tả usecase “Thống kê số lượng Job được tạo” 57

Bảng 3.22 Đặc tả usecase “Thống kê số lượng tài khoản được tạo” 58

Bảng 3.23 Đặc tả usecase “Xem profile ứng viên” 59

Bảng 3.24 Đặc tả usecase “Thêm thông tin công ty” 60

Bảng 3.25 Đặc tả usecase “Lưu thông tin tuyển dụng” 62

Bảng 3.26 Đặc tả usecase “Xem đơn ứng tuyển” 63

Bảng 3.27 Đặc tả usecase “Xem đánh giá, gợi ý từ Hirize cho đơn ứng tuyển”64 Bảng 3.28 Đặc tả usecase “Xem đánh giá từ Hirize cho đơn ứng tuyển” 66

Bảng 3.29 Đặc tả usecase “Sửa bình luận” 67

Bảng 3.30 Đặc tả usecase “Xoá bình luận” 68

Bảng 3.31 Đặc tả usecase “Thêm bài chia sẻ mới” 70

Bảng 3.32 Đặc tả usecase “Chỉnh sửa thông tin bài chia sẻ” 71

Bảng 3.33 Đặc tả usecase “Xóa thông tin bài chia sẻ” 72

Bảng 3.34 Chi tiết bảng dữ liệu “users” 75

Bảng 3.35 Chi tiết dữ liệu bảng “token” 76

Bảng 3.36 Chi tiết bảng “role” 76

Bảng 3.37 Chi tiết bảng “user_role” 76

Bảng 3.38 Chi tiết bảng “document” 77

Bảng 3.39 Chi tiết bảng “candidate” 77

Bảng 3.40 Chi tiết bảng “employer” 78

Bảng 3.41 Chi tiết bảng “job_alert” 78

Bảng 3.42 Chi tiết bảng “package” 79

Bảng 3.43 Chi tiết bảng “subscribe” 79

Bảng 3.44 Chi tiết bảng “application” 80

Bảng 3.45 Chi tiết bảng “follow_employer” 80

Bảng 3.46 Chi tiết bảng “notification” 80

Bảng 3.47 Chi tiết bảng “viewed_user” 81

Bảng 3.48 Chi tiết bảng “extra_info” 81

Bảng 3.49 Chi tiết bảng “evaluate” 81

Bảng 3.50 Chi tiết bảng “company” 82

Bảng 3.51 Chi tiết bảng “following_company” 82

Bảng 3.52 Chi tiết bảng “image” 82

Bảng 3.53 Chi tiết bảng “invoice” 83

Bảng 3.54Chi tiết bảng “experience” 83

Bảng 3.55 Chi tiết bảng “save_job” 84

Bảng 3.56 Chi tiết bảng “job_post” 84

Bảng 3.57 Mô tả giao diện Trang đăng nhập 86

Bảng 3.58 Mô tả giao diện Trang đăng ký 87

Bảng 3.59 Mô tả giao diện Trang tìm kiếm Job 88

Bảng 3.60 Mô tả giao diện Trang thông tin liên hệ 89

Bảng 3.61 Mô tả giao diện Trang chủ 90

Bảng 3.62 Mô tả giao diện Chi tiết Job 92

Bảng 3.63 Mô tả giao diện Dashboard Employer 92

Bảng 3.64 Mô tả giao diện List các job đã đăng của Employer 93

Bảng 3.65 Mô tả giao diện List các applicant của Employer 94

Bảng 3.66 Mô tả giao diện My Account của Candidate 95

Bảng 3.67 Mô tả giao diện My Account của Candidate 96

Bảng 3.68 Mô tả giao diện Chỉnh sửa thông tin cá nhân 97

Bảng 3.69 Mô tả giao diện quản lý CV 97

Bảng 3.70 Mô tả giao diện tạo CV 98

Bảng 3.71 Mô tả giao diện Trang Dashboard 99

Bảng 3.72 Mô tả giao diện Trang List All Job 100

Bảng 3.73 Mô tả giao diện Trang List All Company 101

Bảng 3.74 Mô tả giao diện Trang thêm Company 102

Bảng 3.75 Mô tả giao diện Trang List All Extra Info 103

Bảng 3.76 Mô tả giao diện Trang thêm Extra Info 104

Bảng 3.77 Mô tả giao diện Trang cập nhật thông tin tài khoản admin 105

Bảng 4.1 Kiểm thử các chức năng trang quản trị 109

Bảng 4.2 Kiểm thử các chức năng người dùng không có tài khoản 111

Bảng 4.3 Kiểm thử các chức năng của ứng viên 112

Bảng 4.4 Kiểm thử các chức năng của nhà tuyển dụng 113

1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Trong bối cảnh xã hội phát triển mạnh mẽ, nhu cầu tìm kiếm việc làm và thuê nhân viên ngày càng gia tăng Sự phát triển công nghệ đã dẫn đến việc số hóa nhu cầu việc làm, với các website tìm kiếm việc làm trở nên thiết yếu Những nền tảng này cho phép người tìm việc tạo hồ sơ cá nhân và thiết lập tiêu chí tìm kiếm một cách thuận tiện, giúp họ dễ dàng ứng tuyển vào nhiều vị trí Đồng thời, nhà tuyển dụng cũng có thể dễ dàng đăng tuyển, quản lý thông tin ứng viên và theo dõi quá trình tuyển dụng hiệu quả Chính những tiện ích này đã thúc đẩy sự ra đời của các website hỗ trợ việc làm như TopCV, Linkedin, Glint, Vlance, và nhiều nền tảng khác.

Các website hỗ trợ việc làm thường tập trung vào việc tìm kiếm và đánh giá thủ công, dẫn đến việc theo dõi và đánh giá công việc cũng như chất lượng ứng viên tốn nhiều thời gian Để giải quyết vấn đề này, nhóm thực hiện đã đề xuất giải pháp hỗ trợ tìm kiếm công việc phù hợp, giúp ứng viên dễ dàng hơn trong quá trình tìm việc Đồng thời, công cụ này cũng giúp nhà tuyển dụng có khả năng đánh giá sơ bộ các ứng viên, từ đó tiết kiệm thời gian và tìm kiếm ứng viên phù hợp cho công việc hiệu quả hơn.

Nhằm giải quyết vấn đề tìm kiếm việc làm, nhóm đã phát triển website puzzleute.tk, giúp ứng viên dễ dàng tìm kiếm công việc phù hợp Đồng thời, nền tảng này cũng hỗ trợ nhà tuyển dụng trong việc lựa chọn ứng viên một cách nhanh chóng và hiệu quả hơn.

Sau khi nghiên cứu thông tin liên quan đến đề tài và áp dụng kiến thức đã học, nhóm đã xác định các đối tượng cần được khảo sát trong nghiên cứu này.

• Quản lý dữ liệu PostgresSQL

• IDE: intellij, Visual studio code

• Các nền tảng tuyển dụng phổ biến như TopCV, Linkin, Vlance,…

• Và một số công nghệ liên quan khác

Nhóm phát triển ứng dụng tập trung vào việc nghiên cứu và thực hiện các chức năng cơ bản của nền tảng tuyển dụng, nhằm hỗ trợ tìm kiếm việc làm và quản lý hồ sơ ứng viên Ứng dụng tối ưu hóa quá trình tìm kiếm dựa trên thông tin công việc, khả năng và tình trạng của ứng viên.

Xây dựng một nền tảng website tuyển dụng cần có các chức năng cơ bản như hỗ trợ ứng viên tìm kiếm việc làm, cho phép nhà tuyển dụng đăng tin tuyển dụng, quản lý các công việc đã đăng, quản lý hồ sơ ứng viên và gợi ý những công việc phù hợp với khả năng của ứng viên.

Thông qua việc thực hiện đề tài này, nhóm sẽ có cơ hội tiếp xúc và học hỏi các nghiệp vụ liên quan đến tối ưu hóa sắp xếp, tìm kiếm và quản lý quá trình tuyển dụng Đồng thời, nhóm cũng sẽ nắm bắt được các kiến thức chuyên môn về công nghệ xu hướng hiện nay như React và Spring Boot.

5 Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN

Sau khi hoàn thiện đề tài, nhóm chúng em đã tích lũy nhiều kỹ năng và kiến thức quý giá, đặc biệt về các công nghệ mới hiện nay Đồng thời, chúng em cũng nâng cao tinh thần nghiên cứu, sáng tạo và cống hiến cho cộng đồng.

Khi đề tài nhóm chúng em được áp dụng, hoạt động tuyển dụng sẽ trở nên thuận tiện và dễ dàng hơn cho các nhà tuyển dụng Với khả năng tối ưu hóa tìm kiếm và phân loại công việc, ứng viên có thể dễ dàng tiếp cận những cơ hội việc làm phù hợp Nền tảng tuyển dụng này không chỉ hỗ trợ cộng đồng mà còn mang lại tiềm năng lớn cho nhà tuyển dụng.

Bảng 0.1 Bảng phân công công việc

THÀNH VIÊN CÔNG VIỆC HOÀN THÀNH

- Viết báo cáo phần Front-End và Giao diện

- Thiết kế cơ sở dữ liệu

- Viết báo cáo phần Back-End và các phần còn lại

CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HOÁ

Vieclam24h.com, một phần của báo điện tử 24h.com.vn, hiện sở hữu hơn 1,3 triệu hồ sơ xin việc và 25,000 vị trí tuyển dụng đang chờ ứng viên Trang web cung cấp nhiều loại hình công việc đa dạng, từ lao động phổ thông đến các vị trí quản lý cấp cao trong doanh nghiệp.

• Có hỗ trợ tạo CV và một số công cụ như công cụ tính lương, có các bài trắc nghiệm tính cách,…

• Việc làm được chia theo các lĩnh vực rất chi tiết, có bộ lọc nâng cao giúp việc tìm kiếm hiệu quả hơn

• Có mục lịch sử công việc, nhà tuyển dụng quan tâm,…

So với các trang web tuyển dụng khác, Việc làm 24h vẫn chủ yếu hoạt động như một nền tảng rao vặt, dẫn đến chất lượng tuyển dụng không cao Điều này là nguyên nhân chính khiến website này sụt hạng trong danh sách các trang web tuyển dụng uy tín.

• Hỗ trợ ít ngôn ngữ

Topcv.vn là một công ty công nghệ nhân sự (HR Tech) được thành lập vào năm 2014, nổi bật với lượng truy cập website 3,3 triệu lượt mỗi tháng Được xem là đối tác tin cậy của nhiều tập đoàn công nghệ lớn như Samsung, FPT và Viettel, Topcv khẳng định vị thế vững mạnh trong lĩnh vực nhân sự.

• Các ngành nghề được chia ra từng mục riêng từng lĩnh vực

• Lượt truy cập khủng với số lượng đầu việc lớn và vô cùng đa dạng

• Có mẫu thiết kế CV đẹp mắt và hoàn toàn miễn phí

• Có hỗ trợ một số công cụ như công cụ tính lương GROSS-NET, tính lãi suất kép,…

• Giao diện website bắt mắt

• Hỗ trợ ít ngôn ngữ

• Phân chia các công việc chưa đủ chi tiết (bán thời gian, toàn thời gian,…)

vLance hiện có hơn 400.000 thành viên, bao gồm nhiều freelancer đa lĩnh vực với năng lực chuyên môn và kỹ năng cao Nền tảng này cung cấp giải pháp nhân sự chất lượng và uy tín cho doanh nghiệp trên toàn quốc, đặc biệt trong các lĩnh vực như Marketing online, lập trình web và ứng dụng, thiết kế đồ họa, viết lách, tài chính – kế toán, dịch thuật, phiên dịch và luật.

Các ngành nghề được phân loại theo từng mục riêng, giúp ứng viên dễ dàng chọn lĩnh vực phù hợp để tìm kiếm việc làm, trong khi đó, nhà tuyển dụng cũng có thể tìm kiếm các ứng viên thích hợp cho vị trí cần tuyển.

• Nhà tuyển dụng và ứng viên dễ dàng trao đổi với nhau thông qua hệ thống tin nhắn trực tuyến trên web

Khi đăng ký tại vLance, hệ thống tự động sẽ gửi thông báo về các công việc phù hợp với từng ứng viên, giúp họ chủ động tìm kiếm việc làm Tất cả khách hàng đều được đảm bảo quyền lợi và thanh toán đúng hạn sau khi hoàn thành dự án.

• Hồ sơ ứng viên đa dạng về lĩnh vực và trải rộng về trình độ, cho phép nhà tuyển dụng có thêm rất nhiều sự lựa chọn

• Có ngôn ngữ tiếng Việt và tiếng Anh

• Cần xác minh thông tin trước khi làm

• Sau mỗi lần thay đổi lựa ở phần tìm kiếm trang web sẽ mất 1 khoảng thời gian khá lâu để tải lại nội dung trang

• Màu sắc trang thiếu thu hút

CÁC CÔNG NGHỆ SỬ DỤNG

ReactJS là một thư viện JavaScript hiệu quả và linh hoạt, cho phép xây dựng các thành phần giao diện người dùng có thể tái sử dụng Thư viện này giúp phân chia các UI phức tạp thành các component nhỏ hơn Được phát triển bởi Jordan Walke, một kỹ sư phần mềm tại Facebook, ReactJS đã được Facebook duy trì và áp dụng trong nhiều sản phẩm của mình, bao gồm WhatsApp và Instagram.

ReactJS là một thư viện JavaScript mạnh mẽ được sử dụng để phát triển các ứng dụng một trang (SPA) Một trong những đặc điểm nổi bật của ReactJS là khả năng hoạt động không chỉ ở phía máy khách mà còn có thể tích hợp dễ dàng với các công nghệ khác để tối ưu hóa hiệu suất và trải nghiệm người dùng.

ReactJS allows for efficient client-server interactions by enabling multiple clients to connect and communicate seamlessly It optimizes rendering by comparing changes between the current and previous render, ensuring that only minimal updates are made to the DOM.

Công nghệ Virtual DOM giúp cải thiện hiệu suất ứng dụng bằng cách chỉ định node gốc có trạng thái, và khi trạng thái này thay đổi, toàn bộ cấu trúc sẽ được tái tạo lại, ảnh hưởng đến tốc độ xử lý ReactJS áp dụng Virtual DOM, một đối tượng JavaScript chứa thông tin cần thiết để tạo ra DOM Khi dữ liệu thay đổi, Virtual DOM sẽ tính toán sự khác biệt giữa đối tượng và cây DOM thật, từ đó tối ưu hóa quá trình re-render cây DOM thật.

Hình 2.2 Virtual DOM trong ReactJS

ReactJS áp dụng cơ chế one-way data binding, cho phép dữ liệu được truyền từ component cha (parent) đến component con (child) thông qua props Luồng dữ liệu một chiều này giúp việc kiểm soát và sửa lỗi trở nên dễ dàng hơn.

ReactJS là công cụ lý tưởng để phát triển các ứng dụng lớn với dữ liệu thay đổi liên tục theo thời gian Khi dữ liệu thay đổi, giao diện người dùng cũng cần được cập nhật tương ứng Chẳng hạn, trên Newsfeed của Facebook, các trạng thái khác nhau cùng với số lượng like, share và comment luôn biến động, do đó, ReactJS rất hữu ích trong việc quản lý và hiển thị những thay đổi này một cách hiệu quả.

Hình 2.3 One-way binding trong ReactJS Ưu điểm

Các ưu điểm nổi bật khi sử dụng ReactJS thay cho các framework khác:

ReactJS cho phép các Developer phát triển ứng dụng trực tiếp bằng JavaScript, kết hợp với JSX – một tính năng thú vị giúp quá trình lập trình trở nên dễ dàng hơn Nhờ vào JSX, Developer có thể tạo ra các tính năng mới và xem chúng xuất hiện ngay lập tức trong thời gian thực, cho phép tích hợp trực tiếp các đoạn HTML vào mã JavaScript.

ReactJS nổi bật với khả năng giúp Developer phân tách các cấu trúc UI phức tạp thành những component độc lập Nhờ đó, Developer không cần phải lo lắng về toàn bộ ứng dụng web, mà có thể dễ dàng chia nhỏ các cấu trúc UI/UX phức tạp thành những component đơn giản hơn.

Thông qua Props, các component có khả năng kết nối và truyền tải dữ liệu tùy biến, giúp chuyển giao thông tin đến một UI component cụ thể một cách hiệu quả.

Tính năng State trong ReactJS cho phép điều chỉnh trạng thái cho các component con (child) nhận dữ liệu từ component gốc (parent) Nhà phát triển có thể thay đổi trạng thái cho nhiều component con mà không làm ảnh hưởng đến component gốc đang ở trạng thái Stateful, giúp việc quản lý và điều chỉnh ứng dụng trở nên dễ dàng hơn.

DOM ảo (Virtual DOM) giúp tăng tốc độ ứng dụng bằng cách tối ưu hóa việc cập nhật giao diện người dùng (UI) để phản ứng nhanh chóng với các thay đổi, từ đó nâng cao trải nghiệm người dùng Khi phát triển ReactJS, các nhà thiết kế đã nhận thức rõ tầm quan trọng của việc cập nhật HTML cũ, mặc dù điều này thường tốn kém Ý tưởng sử dụng DOM ảo cho phép ReactJS xác định chính xác thời điểm cần render lại hoặc loại bỏ các phần tử trong DOM, nhờ vào khả năng phát hiện thay đổi dữ liệu Do đó, ReactJS được đánh giá cao trong môi trường doanh nghiệp.

Ứng dụng phát triển bằng ReactJS mang lại cấu trúc giao diện người dùng (UI) tối ưu, từ đó cải thiện trải nghiệm người dùng (UX) Nhờ vào đó, các doanh nghiệp có thể dễ dàng nâng cao mức độ tương tác của người dùng, tăng tỷ lệ nhấp chuột và tỷ lệ chuyển đổi trên trang web của họ.

Sử dụng ứng dụng ReactJS mang lại hiệu suất kinh doanh vượt trội so với các framework khác, nhờ vào khả năng hạn chế cập nhật DOM Điều này không chỉ tăng tốc độ truy cập ứng dụng mà còn cải thiện trải nghiệm người dùng (UX) một cách đáng kể.

ReactJS được phát triển nhằm cải thiện số lượng trang render từ phía server và tối ưu hóa quá trình render trên client-side Công cụ này cho phép tùy chỉnh tốt, giúp giảm thiểu chi phí bảo trì hệ thống, từ đó nâng cao hiệu quả sử dụng của ReactJS.

Redux là thư viện JavaScript chuyên dụng cho việc quản lý trạng thái ứng dụng, giúp người dùng phát triển ứng dụng một cách nhất quán Nó hỗ trợ chạy trên nhiều môi trường khác nhau như client, server và native, đồng thời dễ dàng kiểm thử.

Redux được xây dựng dựa trên 3 nguyên lý:

- Nguồn dữ liệu tin cậy duy nhất: State của toàn bộ ứng được chứa trong một object tree nằm trong Store duy nhất

- Trạng thái chỉ được phép đọc: Cách duy nhất để thay đổi State của ứng dụng là phát một Action (là 1 object mô tả những gì xảy ra)

- Thay đổi chỉ bằng hàm thuần túy: Để chỉ ra cách mà State được biến đổi bởi Action chúng ta dùng các pure function gọi là Reducer

PHÂN TÍCH VÀ THIẾT KẾ PHẦN MỀM

Usecase “Đăng nhập”

Bảng 3.1 Đặc tả usecase “Đăng nhập”

Tất cả người dùng cần đăng nhập vào hệ thống để sử dụng các chức năng phù hợp với quyền hạn của mình.

Actor(s) Người lao động, Nhà tuyển dụng, Admin

Tiền điều kiện Người dùng đã có tài khoản trong hệ thống

Nếu người dùng đăng nhập thành công, họ sẽ được xác thực và có quyền truy cập vào các chức năng của tài khoản Ngược lại, nếu đăng nhập không thành công, hệ thống sẽ không xác thực người dùng và họ sẽ không thể đăng nhập.

Use case bắt đầu khi người dùng chọn chức năng đăng nhập:

2 Người dùng nhập email và password và ấn đăng nhập

3 Hệ thống xác thực username và password

4 Hệ thống xác định vai trò của người dùng Hệ thống mở màn hình trang chủ

Nếu người dùng nhập sai username hay/và password Những công việc sau được thực hiện:

1 Hệ thống mô tả lý do xác thực bị sai

2 Khi người dùng nhập lại username và password, bước 3 ở Luồng cơ bản được thực hiện Điểm mở rộng Không có

Hình 3.3 Lược đồ tuần tự “Đăng nhập”

Usecase “Đăng ký”

Bảng 3.2 Đặc tả usecase “Đăng ký”

Mô tả ngắn gọn Khách thực hiện đăng ký tài khoản để trở thành User

Tiền điều kiện Các trường đăng ký hợp lệ

Nếu các trường đăng ký hợp lệ, người dùng sẽ đăng nhập thành công vào hệ thống bằng tài khoản đã đăng ký Ngược lại, nếu các trường đăng ký không hợp lệ, quá trình đăng ký sẽ thất bại.

Use case bắt đầu khi người dùng chọn chức năng đăng ký:

2 Nhập vào các trường cần thiết

3 Ấn nút đăng ký Luồng thay thế

Nếu người dùng nhập các trường không hợp lệ Những công việc sau được thực hiện:

1 Hệ thống mô tả lý do không thể đăng ký

2 Người dùng quay lại bước 2 ở Luồng cơ bản được thực hiện Điểm mở rộng Không có

Lược đồ tuần tự “Đăng ký”

Hình 3.4 Lược đồ tuần tự “Đăng ký”

Usecase “Xem thông tin tuyển dụng”

Bảng 3.3 Đặc tả usecase “Xem thông tin tuyển dụng”

Tên Usecase Xem thông tin tuyển dụng

Mô tả ngắn gọn Khách, Người lao động, Nhà tuyển dụng vào xem thông tin tuyển dụng

Actor(s) Khách, Người lao động, Nhà tuyển dụng

Hậu điều kiện Xem được thông tin cơ bản thông tin tuyển dụng

Luồng cơ bản Use case bắt đầu khi người dùng vào trang xem thông tin tuyển dụng:

(Thành công) 1 Vào trang xem thông tin tuyển dụng

2 Chọn thông báo tuyển dụng muốn xem chi tiết

3 Xem nội dung chi tiết của thông báo tuyển dụng Điểm mở rộng Không có

Lược đồ tuần tự “Xem thông tin tuyển dụng”

Hình 3.5 Lược đồ tuần tự “Xem thông tin tuyển dụng”

Usecase “Đổi mật khẩu”

Bảng 3.4 Đặc tả usecase “Đổi mật khẩu”

Tên Usecase Đổi mật khẩu

Mô tả ngắn gọn Người lao động, nhà tuyển dụng muốn đổi mật khẩu hiện tại của mình

Actor(s) Người lao động, nhà tuyển dụng

Tiền điều kiện Nhớ mật khẩu hiện tại

Hậu điều kiện Đổi thành công mật khẩu mới tài khoản

Use case bắt đầu khi người dùng chọn chức năng đổi mật khẩu:

3 Nhập mật khẩu hiện tại và nhập mật khẩu muốn đổi

4 Chọn cập nhật Luồng thay thế

Nếu người dùng nhập mật khẩu hiện tại không đúng thì quay lại bước 3 ở Luồng cơ bản Điểm mở rộng Không có

Lược đồ tuần tự “Đổi mật khẩu”

Hình 3.6 Lược đồ tuần tự “Đổi mật khẩu”

Usecase “Chỉnh sửa thông tin cá nhân”

Bảng 3.5 Đặc tả usecase “Chỉnh sửa thông tin cá nhân”

Tên Usecase Chỉnh sửa thông tin cá nhân

Mô tả ngắn gọn Người lao động, nhà tuyển dụng chỉnh sửa thông tin cá nhân của tài khoản

Actor(s) Người lao động, nhà tuyển dụng

Tiền điều kiện Có tài khoản trong hệ thống

Hậu điều kiện Chỉnh sửa được thông tin cá nhân của tài khoản

Use case bắt đầu khi người dùng chọn chức năng chỉnh sửa thông tin cá nhân:

2 Chọn chỉnh sửa thông tin cá nhân

3 Nhập thông tin cá nhân cần chỉnh sửa

Nếu các trường thay đổi không hợp lệ, quay lại bước 3 của Luồng cơ bản Điểm mở rộng Không có

Lược đồ tuần tự “Chỉnh sửa thông tin cá nhân”

Hình 3.7 Lược đồ tuần tự “Chỉnh sửa thông tin cá nhân”

Usecase “Xem trang cá nhân thành viên”

Bảng 3.6 Đặc tả usecase “Xem trang cá nhân thành viên”

Tên Usecase Xem trang cá nhân thành viên

Mô tả ngắn gọn Xem thông tin cá nhân của tài khoản

Actor(s) Khách, Người lao động, Nhà tuyển dụng

Hậu điều kiện Xem được thông tin cá nhân của tài khoản

Use case bắt đầu khi người dùng vào trang thông tin cá nhân:

1 Chọn vào avatar cá nhân

2 Chọn Trang cá nhân Điểm mở rộng Không có

Lược đồ tuần tự “Xem trang cá nhân thành viên”

Hình 3.8 Lược đồ tuần tự “Xem trang cá nhân thành viên”

Usecase “Thêm thông báo tuyển dụng”

Bảng 3.7 Đặc tả usecase “Thêm thông báo tuyển dụng”

Tên Usecase Thêm thông báo tuyển dụng

Mô tả ngắn gọn Nhà tuyển dụng thêm mới thông báo tuyển dụng

Tiền điều kiện Đã đăng nhập

Hậu điều kiện Thông báo tuyển dụng mới được tạo

Usecase bắt đầu khi người dùng chọn chức năng tạo thông báo tuyển dụng:

1 Vào trang tạo thông báo tuyển dụng

2 Nhập thông tin tuyển dụng

4 Hiện thông báo thành công

5 Điều hướng đến trang chi tiết tuyển dụng Luồng thay thế

Thông báo đăng tải thất bại Điểm mở rộng Không có

Lược đồ tuần tự “Thêm thông báo tuyển dụng”

Hình 3.9 Lược đồ tuần tự “Thêm thông báo tuyển dụng”

Usecase “Chỉnh sửa thông báo tuyển dụng”

Bảng 3.8 Đặc tả usecase “Chỉnh sửa thông báo tuyển dụng”

Tên Usecase Chỉnh sửa thông báo tuyển dụng

Mô tả ngắn gọn Nhà tuyển dụng sửa đổi thông báo tuyển dụng

Tiền điều kiện Đã đăng nhập và thông báo tuyển dụng do chính Nhà tuyển dụng đó tạo

Hậu điều kiện Thông báo tuyển dụng được chỉnh sửa

Usecase bắt đầu khi nhà tuyển dụng chọn chức năng chỉnh thông báo tuyển dụng:

1 Vào trang chi tiết thông báo tuyển dụng

3 Hiển thị modal chỉnh sửa thông báo tuyển dụng

4 Chỉnh sửa các thông tin

6 Hiện thông báo thành công và đóng modal

Thông báo chỉnh sửa thất bại Điểm mở rộng Không có

Lược đồ tuần tự “Chỉnh sửa thông báo tuyển dụng”

Hình 3.10 Lược đồ tuần tự “Chỉnh sửa thông báo tuyển dụng”

Usecase “Xóa thông báo tuyển dụng”

Bảng 3.9 Đặc tả usecase “Xóa thông báo tuyển dụng”

Tên Usecase Xóa thông báo tuyển dụng

Mô tả ngắn gọn Nhà tuyển dụng xóa thông báo tuyển dụng

Tiền điều kiện Đã đăng nhập và thông báo tuyển dụng do chính nhà tuyển dụng đó tạo

Hậu điều kiện Thông báo tuyển dụng được xóa

Usecase bắt đầu khi nhà tuyển dụng chọn chức năng xóa thông báo tuyển dụng:

1 Vào trang chi tiết thông báo tuyển dụng

3 Hiển thị dialog xác nhận xóa

5 Hiện thông báo thành công và đóng dialog

6 Điều hướng về trang danh sách thông báo tuyển dụng Luồng thay thế

Thông báo xóa thất bại Điểm mở rộng Không có

Lược đồ tuần tự “Xóa thông báo tuyển dụng”

Hình 3.11 Lược đồ tuần tự “Xóa thông báo tuyển dụng”

Usecase “Theo dõi nhà tuyển dụng”

Bảng 3.10 Đặc tả usecase “Theo dõi nhà tuyển dụng”

Tên Usecase Theo dõi nhà tuyển dụng

Mô tả ngắn gọn Người lao động nhấn chọn theo dõi nhà tuyển dụng

Tiền điều kiện Người lao động đã đăng nhập vào hệ thống và chưa theo dõi nhà tuyển dụng

Hậu điều kiện Theo dõi nhà tuyển dụng thành công

Use case bắt đầu khi người dùng nhấn chọn theo dõi nhà tuyển dụng:

1 Chọn nhà tuyển dụng muốn theo dõi

2 Nhấp chọn trang cá nhân

Thông báo theo dõi nhà tuyển dụng thất bại Mô tả lý do thất bại Điểm mở rộng Không có

Lược đồ tuần tự “Theo dõi nhà tuyển dụng”

Hình 3.12 Lược đồ tuần tự “Theo dõi nhà tuyển dụng”

Usecase “Theo dõi công ty”

Bảng 3.11 Đặc tả usecase “Theo dõi nhà tuyển dụng”

Tên Usecase Theo dõi nhà tuyển dụng

Mô tả ngắn gọn Người lao động theo dõi công ty

Tiền điều kiện Đã đăng nhập

Hậu điều kiện Theo dõi công ty thành công

Use case bắt đầu khi người dùng nhấn chọn theo dõi công ty:

1 Chọn công ty muốn theo dõi

2 Nhấn xem thông tin chi tiết

3 Nhấp theo dõi Luồng thay thế Thông báo theo dõi công ty thất bại

(Thất bại) Điểm mở rộng Không có

Lược đồ tuần tự “Theo dõi công ty”

Hình 3.13 Lược đồ tuần tự “Theo dõi công ty”

Usecase “Ứng tuyển”

Bảng 3.12 Đặc tả usecase “Ứng tuyển”

Mô tả ngắn gọn Người lao động ứng tuyển

Hậu điều kiện Ứng tuyển thành công

Use case bắt đầu khi người dùng vào trang xem thông tin tuyển dụng và chọn ứng tuyển:

1 Vào trang xem thông tin tuyển dụng

2 Chọn thông báo tuyển dụng muốn ứng tuyển

3 Xem nội dung chi tiết của thông báo tuyển dụng

5 Nhấn ứng tuyển Điểm mở rộng Không có

Lược đồ tuần tự “Ứng tuyển”

Hình 3.14 Lược đồ tuần tự “Ứng tuyển”

Usecase “Thêm thông báo công việc”

Bảng 3.13 Đặc tả usecase “Thêm thông báo công việc”

Tên Usecase Thêm thông báo công việc

Mô tả ngắn gọn Người lao động thêm JobAlert

Hậu điều kiện Thêm JobAlert thành công

Use case bắt đầu khi người dùng vào trang JobAlert và thêm, chỉnh sửa nội dung:

3 Nhấn cập nhật Điểm mở rộng Không có

Lược đồ tuần tự “Thêm thông báo công việc”

Hình 3.15 Lược đồ tuần tự “Thêm thông báo công việc”

Usecase “Phản hồi yêu cầu ứng tuyển”

Bảng 3.14 Đặc tả usecase “Xử lý các yêu cầu ứng tuyển”

Tên Usecase Xử lý các yêu cầu ứng tuyển

Mô tả ngắn gọn Nhà tuyển dụng xử lý các yêu cầu ứng tuyển

Tiền điều kiện Đã đăng nhập và thông báo tuyển dụng do chính Nhà tuyển dụng đó tạo

Hậu điều kiện Các yêu cầu ứng tuyển được xử lý

Usecase bắt đầu khi nhà tuyển dụng chọn chức năng xử lý yêu cầu ứng tuyển:

1 Vào trang quản lý Application cho một JobPost

2 Hiển thị danh sách ứng viên và tùy chọn chấp nhận hoặc từ chối trên từng dòng (Chọn nút “Chấp nhận” để chấp thuận yêu cầu ứng tuyển, chọn nút “Từ chối” để từ chối yêu cầu ứng tuyển)

3 Nhập lời nhắn, thông tin vào form phản hồi và nhấn submit

Thông báo xử lý thất bại Điểm mở rộng Không có

Lược đồ tuần tự “Phản hồi yêu cầu ứng tuyển”

Hình 3.16 Lược đồ tuần tự “Xử lý các yêu cầu ứng tuyển”

Usecase “Thêm tài khoản”

Bảng 3.15 Đặc tả usecase “Thêm tài khoản”

Tên Usecase Thêm tài khoản

Mô tả ngắn gọn Admin có thể tạo tài khoản người dùng mới trên giao diện của admin

Tiền điều kiện Admin đã đăng nhập vào hệ thống

Hậu điều kiện Nếu tạo thành công: người dùng được xác thực và được đăng nhập vào để thực hiện các chức năng của người dùng đó

Nếu tạo không thành công: người dùng sẽ không được hệ thống xác thực và không thể đăng nhập vào

Use case bắt đầu khi admin chọn chức năng tạo tài khoản từ giao diện quản lý tài khoản:

1 Admin nhập thông tin tài khoản email, password và quyền cho tài khoản tại form điền

3 Hệ thống xác thực qua email

4 Hệ thống xác định vai trò của người dùng Hệ thống thêm mới tài khoản trong danh sách tài khoản được hiển thị

Nếu email đã tồn tại Những công việc sau được thực hiện:

1 Hệ thống thông báo tài khoản đã tồn tại và trở lại giao diện quản lý tài khoản Điểm mở rộng Không có

Lược đồ tuần tự “Thêm tài khoản”

Hình 3.17 Lược đồ tuần tự “Thêm tài khoản”

Usecase “Xoá tài khoản”

Bảng 3.16 Đặc tả usecase “Xoá tài khoản”

Tên Usecase Xoá tài khoản

Mô tả ngắn gọn Admin có thể xoá tài khoản bất kỳ

Tiền điều kiện Admin đã đăng nhập vào hệ thống

1 Admin tìm kiếm tài khoản cần xoá theo username hoặc email

2 Admin nhấn biểu tượng optional bên cạnh tài khoản cần xoá

4 Admin nhập email của tài khoản khi hệ thống yêu cầu để xác nhận xoá

5 Hệ thống xoá tài khoản và làm mới danh sách tài khoản tại danh mục quản lý tài khoản

Luồng thay thế Điểm mở rộng Không có

Lược đồ tuần tự “Xoá tài khoản”

Hình 3.18 Lược đồ tuần tự “Xoá tài khoản”

Usecase “Reset mật khẩu”

Bảng 3.17 Đặc tả usecase “Reset mật khẩu”

Tên Usecase Reset mật khẩu cho tài khoản người dùng

Mô tả ngắn gọn Admin có thể reset mật khẩu cho tài khoản của người dùng trong hệ thống

Tiền điều kiện Admin đã đăng nhập vào hệ thống

1 Admin tìm kiếm tài khoản cần xoá theo username hoặc email

2 Admin nhấn biểu tượng optional bên cạnh tài khoản cần xoá

3 Admin chọn ‘Reset mật khẩu”

4 Admin chọn đồng ý khi có thông báo xác nhận reset mật khẩu

5 Hệ thống reset mật khẩu tài khoản đã chọn và gửi mật khẩu mời về email đã đăng ký

Luồng thay thế Điểm mở rộng Không có

Lược đồ tuần tự “Reset mật khẩu”

Hình 3.19 Lược đồ tuần tự “Reset mật khẩu”

Usecase “Thêm ExtraInfo”

Bảng 3.18 Đặc tả usecase “Thêm ExtraInfo”

Tên Usecase Thêm “Thông tin thêm” vào danh sách “Thông tin thêm” của hệ thống

Mô tả ngắn gọn Admin có thể thêm “Thông tin thêm” vào danh sách gợi ký

“Thông tin thêm” của hệ thống

Tiền điều kiện Admin đã đăng nhập vào hệ thống

Luồng cơ bản 1 Admin chọn mục quản lý “ExtraInfo”

(Thành công) 2 Admin chọn button “Add extraInfo”

3 Admin nhập thông tin “ExtraInfo” mới bao gồm tên , chế độ hoạt động(isActive) của “ExtraInfo”

4 Hệ thống thêm “Thông tin thêm” mới vào danh sách

“Thông tin thêm” hiện có và làm mới danh sách

Luồng thay thế Điểm mở rộng Không có

Lược đồ tuần tự “Thêm ExtraInfo”

Hình 3.20 Lược đồ tuần tự “Thêm ExtraInfo”

Usecase “Sửa ExtraInfo”

Bảng 3.19 Đặc tả usecase “Sửa ExtraInfo”

Mô tả ngắn gọn Admin có thể sửa thông tin “ExtraInfo”

Tiền điều kiện Admin đã đăng nhập vào hệ thống

1 Admin chọn mục quản lý “ExtraInfo”

2 Admin tìm “ExtraInfo” theo tên hoặc filter thuộc tính active của “Thông tin thêm”

3 Admin chọn nút sửa bên cạnh “ExtraInfo” muốn sửa

4 Admin nhập thông tin “ExtraInfo”, chế độ hoạt động (isActive)

5 Admin chọn button “Sửa” tại form nhập thông tin “Thông tin thêm”

6 Hệ thống cập nhật “ExtraInfo” và làm mới danh sách

Luồng thay thế Điểm mở rộng

Lược đồ tuần tự “ExtraInfo”

Hình 3.21 Lược đồ tuần tự “Sửa ExtraInfo”

Usecase “Xoá ExtraInfo”

Bảng 3.20 Đặc tả usecase “Xoá ExtraInfo”

Tên Usecase Sửa thông tin “ExtraInfo”

Mô tả ngắn gọn Admin có thể xoá thông tin “ExtraInfo”

Tiền điều kiện Admin đã đăng nhập vào hệ thống

1 Admin chọn mục quản lý “ExtraInfo”

2 Admin tìm “ExtraInfo” theo tên hoặc filter thuộc tính active của “ExtraInfo”

3 Admin chọn nút xoá bên cạnh “ExtraInfo” muốn xoá

4 Admin chọn Xoá tại thông báo xác nhận xoá

5 Hệ thống xoá “ExtraInfo” đã chọn và làm mới danh sách

Luồng thay thế Điểm mở rộng Không có

Lược đồ tuần tự “Xoá ExtraInfo”

Hình 3.22 Lược đồ tuần tự “Xoá ExtraInfo”

Usecase “Thống kê số lượng Job được tạo”

Bảng 3.21 Đặc tả usecase “Thống kê số lượng Job được tạo”

Tên Usecase Thống kê số lượng Job được tạo

Mô tả ngắn gọn Admin có thể xem thống kê số lượng job được tạo theo thời gian

Tiền điều kiện Admin đã đăng nhập vào hệ thống

1 Admin chọn mục “Thống kê job”

2 Admin chọn khoản thời gian để thống kê, chọn ngày bắt đầu, ngày kết thúc

3 Hệ thống hiển thị số lượng job được tạo theo ngày ở dạng biểu đồ cột

Luồng thay thế Điểm mở rộng Không có

Lược đồ tuần tự “Thống kê Job”

Hình 3.23 Lược đồ tuần tự “Thống kê Job”

Usecase “Thống kê số lượng tài khoản được tạo”

Bảng 3.22 Đặc tả usecase “Thống kê số lượng tài khoản được tạo”

Tên Usecase Thống kê số lượng Tài khoản được tạo

Mô tả ngắn gọn Admin có thể xem thống kê số lượng tài khoản được tạo theo thời gian

Tiền điều kiện Admin đã đăng nhập vào hệ thống

1 Admin chọn mục “Thống kê tài khoản”

2 Admin chọn khoản thời gian để thống kê, chọn ngày bắt đầu, ngày kết thúc

3 Admin có thể chọn thống kê theo loại tài khoản ứng viên hoặc nhà tuyển dụng bằng filter bên trên biểu đồ

4 Hệ thống hiển thị số lượng tài khoản được tạo theo ngày ở dạng biểu đồ cột

Luồng thay thế Điểm mở rộng Không có

Lược đồ tuần tự “Thống kê tài khoản”

Hình 3.24 Lược đồ tuần tự “Thống kê tài khoản”

Usecase “Xem profile ứng viên”

Bảng 3.23 Đặc tả usecase “Xem profile ứng viên”

Tên Usecase Xem profile ứng viên

Mô tả ngắn gọn Cho phép người dùng thường (khách) có thể xem được profile ứng viên

Actor(s) Khách, không cần đăng ký tài khoản

1 Người dùng tìm kiếm profile ứng viên theo tên, lĩnh vực, dịch vụ, skill muốn tìm

2 Người dùng click chọn vào một item tài khoản ứng viên được hiển thị trong danh sách tìm được

3 Hệ thống hiển thị chi tiết thông tin tài khoản ứng viên Luồng thay thế Điểm mở rộng Không có

Lược đồ tuần tự “Xem profile ứng viên”

Hình 3.25 Lược đồ tuần tự “Xem profile ứng viên”

Usecase “Thêm thông tin công ty”

Bảng 3.24 Đặc tả usecase “Thêm thông tin công ty”

Tên Usecase Thêm thông tin công ty

Mô tả ngắn gọn Nhà tuyển dụng thêm mới thông tin công ty

Tiền điều kiện Đã đăng nhập

Hậu điều kiện Thông tin công ty mới được tạo

Usecase bắt đầu khi người dùng chọn chức năng tạo thông báo tuyển dụng:

1 Vào trang tạo thông báo tuyển dụng

2 Nhập thông tin tuyển dụng, ở mục công ty chọn thêm mới

3 Nhập thông tin công ty

4 Nhấp chọn thêm mới Luồng thay thế

Thông báo thêm mới công ty thất bại Điểm mở rộng Không có

Lược đồ tuần tự “Thêm thông tin công ty”

Hình 3.26 Lược đồ tuần tự “Thêm thông tin công ty”

Usecase “Lưu thông tin tuyển dụng”

Bảng 3.25 Đặc tả usecase “Lưu thông tin tuyển dụng”

Tên Usecase Lưu thông tin tuyển dụng

Mô tả ngắn gọn Người lao động thêm lưu thông tin tuyển dụng

Tiền điều kiện Đã đăng nhập

Hậu điều kiện Thông tin tuyển dụng được lưu

Use case bắt đầu khi người dùng nhấn chọn Lưu thông tin tuyển dụng:

1 Vào trang xem thông tin tuyển dụng

2 Chọn thông báo tuyển dụng muốn lưu

Thông báo lưu thông tin tuyển dụng thất bại Điểm mở rộng Không có

Lược đồ tuần tự “Lưu thông tin tuyển dụng”

Hình 3.27 Lược đồ tuần tự “Lưu thông tin tuyển dụng”

Usecase “Xem đơn ứng tuyển”

Bảng 3.26 Đặc tả usecase “Xem đơn ứng tuyển”

Tên Usecase Xem đơn ứng tuyển

Mô tả ngắn gọn Nhà tuyển dụng xem đơn ứng tuyển của ứng viên đã nộp

Tiền điều kiện Đã đăng nhập

Use case bắt đầu khi nhà tuyển dụng nhấn “View CV” tại mục quản lý đơn ứng tuyển

1 Vào trang quản lý đơn ứng tuyển

2 Chọn “View CV” bên cạnh đơn ứng tuyển muốn xem

3 Hệ thống hiển thị pop-up thông tin đơn ứng tuyển

(Thất bại) Điểm mở rộng Không có

Lược đồ tuần tự “Xem đơn ứng tuyển”

Hình 3.28 Lược đồ tuần tự “Xem đơn ứng tuyển”

Usecase “Xem đánh giá, gợi ý từ Hirize cho đơn ứng tuyển”

Bảng 3.27 Đặc tả usecase “Xem đánh giá, gợi ý từ Hirize cho đơn ứng tuyển”

Tên Usecase Xem đánh giá, gợi ý từ Hirize cho đơn ứng tuyển

Mô tả ngắn gọn Nhà tuyển dụng xem đánh giá gợi ý từ đơn ứng tuyển sử dụng AI của bên thứ 3 – Hirize

Tiền điều kiện Đã đăng nhập

Use case bắt đầu khi nhà tuyển dụng nhấn “Score and IQ suggest” tại mục quản lý đơn ứng tuyển

1 Vào trang quản lý đơn ứng tuyển

2 Chọn “Score and IQ suggest” bên cạnh đơn ứng tuyển muốn xem

3 Hệ thống hiển thị pop-up thông tin đơn ứng tuyển

Thông báo “Có lỗi xảy ra, thử lại sau” Điểm mở rộng Không có

Lược đồ tuần tự “Xem đánh giá, gợi ý từ Hirize cho đơn ứng tuyển”

Hình 3.29 Lược đồ tuần tự “Xem đánh giá từ Hirize cho đơn ứng tuyển”

Usecase “Thêm bình luận”

Bảng 3.28 Đặc tả usecase “Xem đánh giá từ Hirize cho đơn ứng tuyển”

Tên Usecase Thêm bình luận

Mô tả ngắn gọn Người dùng thêm bình luận cho bài viết blog

Tiền điều kiện Đã đăng nhập

Use case bắt đầu khi người dùng truy cập vào một bài viết blog cụ thể

1 Chọn một bài viết trên danh mục các bài viết blog

2 Tại trang chi tiết bài viết blog, nhập bình luận ở phía bên dưới bài viết

4 Bình luận được thêm vào danh sách bình luận của bài viết đang hiển thị

Thông báo lưu thông tin bình luận không thành công Điểm mở rộng Không có

Lược đồ tuần tự “Thêm bình luận”

Hình 3.30 Lược đồ tuần tự “Thêm bình luận”

Usecase “Sửa bình luận”

Bảng 3.29 Đặc tả usecase “Sửa bình luận”

Tên Usecase Sửa bình luận

Mô tả ngắn gọn Người dùng sửa bình luận cho bài viết blog

Tiền điều kiện Đã đăng nhập

Use case bắt đầu khi người dùng truy cập vào một bài viết blog cụ thể

1 Chọn một bài viết trên danh mục các bài viết blog

2 Tại trang chi tiết bài viết blog, chọn “Edit” bên cạnh bình luận do chính người dùng đã bình luận ở phía bên dưới bài viết

4 Bình luận và danh sách bình luận của bài viết đang hiển thị được cập nhật

Thông báo sửa thông tin bình luận không thành công Điểm mở rộng Không có

Lược đồ usecase “Sửa bình luận”

Hình 3.31 Lược đồ usecase sửa bình luận

Usecase “Xoá bình luận”

Bảng 3.30 Đặc tả usecase “Xoá bình luận”

Tên Usecase Xoá bình luận

Mô tả ngắn gọn Người dùng xoá bình luận cho bài viết blog

Tiền điều kiện Đã đăng nhập

Use case bắt đầu khi người dùng truy cập vào một bài viết blog

1 Chọn một bài viết trên danh mục các bài viết blog

2 Tại trang chi tiết bài viết blog, chọn “Delete” bên cạnh bình luận do chính người dùng đã bình luận ở bên dưới bài viết

3 Bình luận bị xoá và danh sách bình luận của bài viết đang hiển thị được cập nhật

Thông báo xoá bình luận không thành công Điểm mở rộng Không có

Lược đồ tuần tự “Xoá bình luận”

Hình 3.32 Lược đồ tuần tự “Xoá bình luận”

Usecase “Thêm bài chia sẻ mới”

Bảng 3.31 Đặc tả usecase “Thêm bài chia sẻ mới”

Tên Usecase Thêm bài chia sẻ mới

Mô tả ngắn gọn Người dùng tạo bài chia sẻ mới

Actor(s) Người dùng có tài khoản trong hệ thống

Tiền điều kiện Đã đăng nhập

Hậu điều kiện Bài chia sẻ mới được tạo

Usecase bắt đầu khi người dùng chọn chức năng tạo bài chia sẻ mới:

1 Vào trang tạo bài chia sẻ mới

2 Nhập thông tin bài chia sẻ

4 Hiện thông báo thành công

5 Điều hướng đến trang quản lý bài chia sẻ Luồng thay thế

Thông báo đăng tải thất bại Điểm mở rộng Không có

Lược đồ tuần tự “Thêm bài chia sẻ mới”

Hình 3.33 Lược đồ tuần tự “Thêm bài chia sẻ mới”

Usecase “Chỉnh sửa thông tin bài chia sẻ”

Bảng 3.32 Đặc tả usecase “Chỉnh sửa thông tin bài chia sẻ”

Tên Usecase Chỉnh sửa thông tin bài chia sẻ

Mô tả ngắn gọn Người dùng sửa đổi thông tin bài chia sẻ

Actor(s) Người dùng có tài khoản trong hệ thống

Tiền điều kiện Đã đăng nhập và bài chia sẻ do chính người dùng đó tạo

Hậu điều kiện Bài chia sẻ được chỉnh sửa

Usecase bắt đầu khi nhà tuyển dụng chọn chức năng chỉnh thông tin bài chia sẻ:

1 Vào trang chi tiết thông tin bài chia sẻ

3 Chỉnh sửa các thông tin

5 Hiện thông báo thành công

Thông báo chỉnh sửa thất bại Điểm mở rộng Không có

Lược đồ tuần tự “Chỉnh sửa thông tin bài chia sẻ”

Hình 3.34 Lược đồ tuần tự “Chỉnh sửa thông tin bài chia sẻ”

CÀI ĐẶT VÀ KIỂM THỬ

KIỂM THỬ HỆ THỐNG

STT Thời gian Công việc Ghi chú

- Thiết kế usecase và mô hình hóa yêu cầu

- Thiết kế cơ sở dữ liệu

- Tìm hiểu về thư viện ReactJS, HTML, SCSS

- Tìm hiểu về Spring boot

- Điều chỉnh cơ sở dữ liệu

- Tìm hiểu về JSON Web Token để ứng dụng vào xác thực và phân quyền API của hệ thống

- Tìm hiểu cách xây dựng RESTful API

- Tìm hiểu về PostgresSQL để áp dụng vào lưu trữ dữ liệu

- Tiến hành phát triển API dựa trên các kiến thức đã tìm hiểu được và các tài liệu

- Tiến hành xây dựng giao diện người dùng cho hệ thống

- Tích hợp xử lý giao diện với các chức năng của API

- Điều chỉnh và hoàn thiện các chức năng của hệ thống

6 09/06/2023 – 20/06/2023 - Tích hợp thêm sdk, api của bên thứ

3 hỗ trợ xử lý các logic nghiệp vụ

- Kiểm thử chương trình và tiến hành sửa lỗi

- Tìm hiểu và thực hành deploy

- Viết và hoàn thiện báo cáo

(Ký và ghi rõ họ tên)

Tp Hồ Chí Minh, ngày tháng 7 năm 2023

(Ký và ghi rõ họ tên)

1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1

5 Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN 2

CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HOÁ YÊU CẦU 4

1.2.2 Yêu cầu phi chức năng 14

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 15

2.2 CÁC CÔNG NGHỆ SỬ DỤNG 16

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ PHẦN MỀM 31

3.1 MÔ HÌNH HOÁ YÊU CẦU PHÍA KHÁCH, NGƯỜI LAO ĐỘNG VÀ NHÀ

3.1.3 Usecase “Xem thông tin tuyển dụng” 35

3.1.5 Usecase “Chỉnh sửa thông tin cá nhân” 37

3.1.6 Usecase “Xem trang cá nhân thành viên” 39

3.1.7 Usecase “Thêm thông báo tuyển dụng” 40

3.1.8 Usecase “Chỉnh sửa thông báo tuyển dụng” 41

3.1.9 Usecase “Xóa thông báo tuyển dụng” 42

3.1.10 Usecase “Theo dõi nhà tuyển dụng” 43

3.1.11 Usecase “Theo dõi công ty” 45

3.1.13 Usecase “Thêm thông báo công việc” 47

3.1.14 Usecase “Phản hồi yêu cầu ứng tuyển” 49

3.1.21 Usecase “Thống kê số lượng Job được tạo” 57

3.1.22 Usecase “Thống kê số lượng tài khoản được tạo” 58

3.1.23 Usecase “Xem profile ứng viên” 59

3.1.24 Usecase “Thêm thông tin công ty” 60

3.1.25 Usecase “Lưu thông tin tuyển dụng” 62

3.1.26 Usecase “Xem đơn ứng tuyển” 63

3.1.27 Usecase “Xem đánh giá, gợi ý từ Hirize cho đơn ứng tuyển” 64

3.1.31 Usecase “Thêm bài chia sẻ mới” 70

3.1.32 Usecase “Chỉnh sửa thông tin bài chia sẻ” 71

3.1.33 Usecase “Xóa thông tin bài chia sẻ” 72

3.3 THIẾT KẾ CƠ SỞ DỮ LIỆU 75

3.3.1 Lược đồ sơ sở dữ liệu 75

3.3.2 Chi tiết bảng dữ liệu 75

3.4.1 Giao diện chính phía người dùng 86

CHƯƠNG 4: CÀI ĐẶT VÀ KIỂM THỬ 106

4.1.2 Kiểm thử bản beta đã deploy 106

4.2.2 Quy trình thiết kế kiểm thử 107

4.2.3 Quy trình chạy bộ kiểm thử 108

4.2.4 Kiểm thử một số chức năng của hệ thống 109

1 KẾT QUẢ ĐÃ ĐẠT ĐƯỢC 116

Hình 2.1 Kiến trúc hệ thống 15

Hình 2.2 Virtual DOM trong ReactJS 17

Hình 2.3 One-way binding trong ReactJS 18

Hình 2.4 Luồng hoạt động của Redux-saga 20

Hình 2.5 Các thành phần cấu thành Spring Boot 21

Hình 2.7 Sơ đồ ứng dụng WebClient vào hệ thống 23

Hình 2.9 Hệ thống sử dụng hệ cơ sở dữ liệu PostgresSQL 24

Hình 2.10 Ứng dụng Redis trong hệ thống 26

Hình 2.12 Ứng dụng Jasypt mã hoá thông tin nhạy cảm 27

Hình 2.13 Ứng dụng Jasypt mã hoá thông tin nhạy cảm 27

Hình 2.15 Ứng dụng AWS trong hệ thống 29

Hình 2.17 Tích hợp thanh toán Paypal trong hệ thống 30

Hình 3.1 Usecase phía khách, người lao động và nhà tuyển dụng 31

Hình 3.2 Usecase phía quản trị viên và phần chung 32

Hình 3.3 Lược đồ tuần tự “Đăng nhập” 33

Hình 3.4 Lược đồ tuần tự “Đăng ký” 35

Hình 3.5 Lược đồ tuần tự “Xem thông tin tuyển dụng” 36

Hình 3.6 Lược đồ tuần tự “Đổi mật khẩu” 37

Hình 3.7 Lược đồ tuần tự “Chỉnh sửa thông tin cá nhân” 39

Hình 3.8 Lược đồ tuần tự “Xem trang cá nhân thành viên” 40

Hình 3.9 Lược đồ tuần tự “Thêm thông báo tuyển dụng” 41

Hình 3.10 Lược đồ tuần tự “Chỉnh sửa thông báo tuyển dụng” 42

Hình 3.11 Lược đồ tuần tự “Xóa thông báo tuyển dụng” 43

Hình 3.12 Lược đồ tuần tự “Theo dõi nhà tuyển dụng” 45

Hình 3.13 Lược đồ tuần tự “Theo dõi công ty” 46

Hình 3.14 Lược đồ tuần tự “Ứng tuyển” 47

Hình 3.15 Lược đồ tuần tự “Thêm thông báo công việc” 48

Hình 3.16 Lược đồ tuần tự “Xử lý các yêu cầu ứng tuyển” 50

Hình 3.17 Lược đồ tuần tự “Thêm tài khoản” 51

Hình 3.18 Lược đồ tuần tự “Xoá tài khoản” 52

Hình 3.19 Lược đồ tuần tự “Reset mật khẩu” 54

Hình 3.20 Lược đồ tuần tự “Thêm ExtraInfo” 55

Hình 3.21 Lược đồ tuần tự “Sửa ExtraInfo” 56

Hình 3.22 Lược đồ tuần tự “Xoá ExtraInfo” 57

Hình 3.23 Lược đồ tuần tự “Thống kê Job” 58

Hình 3.24 Lược đồ tuần tự “Thống kê tài khoản” 59

Hình 3.25 Lược đồ tuần tự “Xem profile ứng viên” 60

Hình 3.26 Lược đồ tuần tự “Thêm thông tin công ty” 61

Hình 3.27 Lược đồ tuần tự “Lưu thông tin tuyển dụng” 63

Hình 3.28 Lược đồ tuần tự “Xem đơn ứng tuyển” 64

Hình 3.29 Lược đồ tuần tự “Xem đánh giá từ Hirize cho đơn ứng tuyển” 65

Hình 3.30 Lược đồ tuần tự “Thêm bình luận” 67

Hình 3.31 Lược đồ usecase sửa bình luận 68

Hình 3.32 Lược đồ tuần tự “Xoá bình luận” 69

Hình 3.33 Lược đồ tuần tự “Thêm bài chia sẻ mới” 71

Hình 3.34 Lược đồ tuần tự “Chỉnh sửa thông tin bài chia sẻ” 72

Hình 3.35 Lược đồ tuần tự “Xóa thông tin bài chia sẻ” 73

Hình 3.37 Lược đồ cơ sở dữ liệu 75

Hình 3.38 Giao diện Trang đăng nhập 86

Hình 3.39 Giao diện Trang đăng ký 87

Hình 3.40 Giao diện Trang tìm kiếm Job 88

Hình 3.41 Giao diện Trang thông tin liên hệ 89

Hình 3.42 Giao diện Trang chủ 90

Hình 3.43 Giao diện Chi tiết Job 91

Hình 3.44 Giao diện Dashboard Employer 92

Hình 3.45 Giao diện List các job đã đăng của Employer 93

Hình 3.46 Giao diện List các applicant của Employer 94

Hình 3.47 Giao diện My Account của Candidate 95

Hình 3.48 Giao diện My Account của Candidate 96

Hình 3.49 Giao diện Chỉnh sửa thông tin cá nhân 97

Hình 3.50 Giao diện Quản lí CV 97

Hình 3.51 Giao diện tạo CV 98

Hình 3.52 Giao diện Trang Dashboard 99

Hình 3.53 Giao diện Trang List All Job 100

Hình 3.54 Giao diện Trang List All Company 101

Hình 3.55 Giao diện Trang thêm Company 102

Hình 3.56 Giao diện Trang List All Extra Info 103

Hình 3.57 Giao diện Trang thêm Extra Info 104

Hình 3.58 Giao diện Trang cập nhật thông tin tài khoản admin 104

Hình 4.1 Quy trình thiết kế kiểm thử 107

Hình 4.2 Quy trình chạy bộ kiểm thử 108

Bảng 0.1 Bảng phân công công việc 3

Bảng 3.1 Đặc tả usecase “Đăng nhập” 32

Bảng 3.2 Đặc tả usecase “Đăng ký” 34

Bảng 3.3 Đặc tả usecase “Xem thông tin tuyển dụng” 35

Bảng 3.4 Đặc tả usecase “Đổi mật khẩu” 36

Bảng 3.5 Đặc tả usecase “Chỉnh sửa thông tin cá nhân” 38

Bảng 3.6 Đặc tả usecase “Xem trang cá nhân thành viên” 39

Bảng 3.7 Đặc tả usecase “Thêm thông báo tuyển dụng” 40

Bảng 3.8 Đặc tả usecase “Chỉnh sửa thông báo tuyển dụng” 41

Bảng 3.9 Đặc tả usecase “Xóa thông báo tuyển dụng” 42

Bảng 3.10 Đặc tả usecase “Theo dõi nhà tuyển dụng” 44

Bảng 3.11 Đặc tả usecase “Theo dõi nhà tuyển dụng” 45

Bảng 3.12 Đặc tả usecase “Ứng tuyển” 46

Bảng 3.13 Đặc tả usecase “Thêm thông báo công việc” 47

Bảng 3.14 Đặc tả usecase “Xử lý các yêu cầu ứng tuyển” 49

Bảng 3.15 Đặc tả usecase “Thêm tài khoản” 50

Bảng 3.16 Đặc tả usecase “Xoá tài khoản” 52

Bảng 3.17 Đặc tả usecase “Reset mật khẩu” 53

Bảng 3.18 Đặc tả usecase “Thêm ExtraInfo” 54

Bảng 3.19 Đặc tả usecase “Sửa ExtraInfo” 55

Bảng 3.20 Đặc tả usecase “Xoá ExtraInfo” 56

Bảng 3.21 Đặc tả usecase “Thống kê số lượng Job được tạo” 57

Bảng 3.22 Đặc tả usecase “Thống kê số lượng tài khoản được tạo” 58

Bảng 3.23 Đặc tả usecase “Xem profile ứng viên” 59

Bảng 3.24 Đặc tả usecase “Thêm thông tin công ty” 60

Bảng 3.25 Đặc tả usecase “Lưu thông tin tuyển dụng” 62

Bảng 3.26 Đặc tả usecase “Xem đơn ứng tuyển” 63

Bảng 3.27 Đặc tả usecase “Xem đánh giá, gợi ý từ Hirize cho đơn ứng tuyển”64 Bảng 3.28 Đặc tả usecase “Xem đánh giá từ Hirize cho đơn ứng tuyển” 66

Bảng 3.29 Đặc tả usecase “Sửa bình luận” 67

Bảng 3.30 Đặc tả usecase “Xoá bình luận” 68

Bảng 3.31 Đặc tả usecase “Thêm bài chia sẻ mới” 70

Bảng 3.32 Đặc tả usecase “Chỉnh sửa thông tin bài chia sẻ” 71

Bảng 3.33 Đặc tả usecase “Xóa thông tin bài chia sẻ” 72

Bảng 3.34 Chi tiết bảng dữ liệu “users” 75

Bảng 3.35 Chi tiết dữ liệu bảng “token” 76

Bảng 3.36 Chi tiết bảng “role” 76

Bảng 3.37 Chi tiết bảng “user_role” 76

Bảng 3.38 Chi tiết bảng “document” 77

Bảng 3.39 Chi tiết bảng “candidate” 77

Bảng 3.40 Chi tiết bảng “employer” 78

Bảng 3.41 Chi tiết bảng “job_alert” 78

Bảng 3.42 Chi tiết bảng “package” 79

Bảng 3.43 Chi tiết bảng “subscribe” 79

Bảng 3.44 Chi tiết bảng “application” 80

Bảng 3.45 Chi tiết bảng “follow_employer” 80

Bảng 3.46 Chi tiết bảng “notification” 80

Bảng 3.47 Chi tiết bảng “viewed_user” 81

Bảng 3.48 Chi tiết bảng “extra_info” 81

Bảng 3.49 Chi tiết bảng “evaluate” 81

Bảng 3.50 Chi tiết bảng “company” 82

Bảng 3.51 Chi tiết bảng “following_company” 82

Bảng 3.52 Chi tiết bảng “image” 82

Bảng 3.53 Chi tiết bảng “invoice” 83

Bảng 3.54Chi tiết bảng “experience” 83

Bảng 3.55 Chi tiết bảng “save_job” 84

Bảng 3.56 Chi tiết bảng “job_post” 84

Bảng 3.57 Mô tả giao diện Trang đăng nhập 86

Bảng 3.58 Mô tả giao diện Trang đăng ký 87

Bảng 3.59 Mô tả giao diện Trang tìm kiếm Job 88

Bảng 3.60 Mô tả giao diện Trang thông tin liên hệ 89

Bảng 3.61 Mô tả giao diện Trang chủ 90

Bảng 3.62 Mô tả giao diện Chi tiết Job 92

Bảng 3.63 Mô tả giao diện Dashboard Employer 92

Bảng 3.64 Mô tả giao diện List các job đã đăng của Employer 93

Bảng 3.65 Mô tả giao diện List các applicant của Employer 94

Bảng 3.66 Mô tả giao diện My Account của Candidate 95

Bảng 3.67 Mô tả giao diện My Account của Candidate 96

Bảng 3.68 Mô tả giao diện Chỉnh sửa thông tin cá nhân 97

Bảng 3.69 Mô tả giao diện quản lý CV 97

Bảng 3.70 Mô tả giao diện tạo CV 98

Bảng 3.71 Mô tả giao diện Trang Dashboard 99

Bảng 3.72 Mô tả giao diện Trang List All Job 100

Bảng 3.73 Mô tả giao diện Trang List All Company 101

Bảng 3.74 Mô tả giao diện Trang thêm Company 102

Bảng 3.75 Mô tả giao diện Trang List All Extra Info 103

Bảng 3.76 Mô tả giao diện Trang thêm Extra Info 104

Bảng 3.77 Mô tả giao diện Trang cập nhật thông tin tài khoản admin 105

Bảng 4.1 Kiểm thử các chức năng trang quản trị 109

Bảng 4.2 Kiểm thử các chức năng người dùng không có tài khoản 111

Bảng 4.3 Kiểm thử các chức năng của ứng viên 112

Bảng 4.4 Kiểm thử các chức năng của nhà tuyển dụng 113

1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI

Ngày nay, với sự phát triển mạnh mẽ của xã hội và công nghệ, nhu cầu tìm kiếm việc làm và tuyển dụng ngày càng tăng Các website tìm việc làm trở nên cần thiết, cho phép người tìm việc tạo hồ sơ cá nhân và cài đặt tiêu chí mong muốn chỉ một lần để ứng tuyển dễ dàng Đồng thời, nhà tuyển dụng cũng có thể đăng tin tuyển dụng và quản lý thông tin ứng viên hiệu quả Những tiện lợi này đã dẫn đến sự ra đời của nhiều website hỗ trợ việc làm như TopCV, Linkedin, Glint, Vlance,…

Các website hỗ trợ việc làm thường tập trung vào việc tìm kiếm và đánh giá thủ công, dẫn đến việc theo dõi và đánh giá công việc cùng chất lượng ứng viên tiêu tốn nhiều thời gian Để giải quyết vấn đề này, nhóm thực hiện đã đề xuất giải pháp hỗ trợ tìm kiếm công việc phù hợp, giúp người tìm việc dễ dàng hơn, đồng thời cung cấp cho nhà tuyển dụng công cụ đánh giá sơ bộ ứng viên, từ đó tiết kiệm thời gian và nâng cao hiệu quả trong quá trình tuyển dụng.

Nhóm đã phát triển website puzzleute.tk nhằm hỗ trợ ứng viên trong việc tìm kiếm việc làm một cách dễ dàng hơn, đồng thời giúp các nhà tuyển dụng nhanh chóng tìm được ứng viên phù hợp mà không tốn nhiều thời gian và công sức.

Sau khi nghiên cứu thông tin liên quan đến đề tài và áp dụng kiến thức đã học, nhóm đã xác định các đối tượng cần nghiên cứu cho đề tài này.

• Quản lý dữ liệu PostgresSQL

• IDE: intellij, Visual studio code

• Các nền tảng tuyển dụng phổ biến như TopCV, Linkin, Vlance,…

• Và một số công nghệ liên quan khác

Nhóm phát triển ứng dụng này đã tập trung vào việc nghiên cứu và triển khai các chức năng cơ bản của nền tảng tuyển dụng, nhằm hỗ trợ người dùng tìm việc làm hiệu quả Ứng dụng còn giúp quản lý hồ sơ ứng viên và tối ưu hóa quá trình tìm kiếm dựa trên thông tin công việc, khả năng và tình trạng của ứng viên.

Xây dựng nền tảng website tuyển dụng với các chức năng cơ bản như hỗ trợ ứng viên tìm kiếm việc làm, giúp nhà tuyển dụng đăng tin tuyển dụng, quản lý công việc đã đăng và ứng viên, đồng thời gợi ý những công việc phù hợp cho ứng viên.

Thông qua việc thực hiện đề tài này, nhóm sẽ có cơ hội học hỏi và tiếp xúc với các nghiệp vụ tối ưu hóa sắp xếp, tìm kiếm và quản lý quá trình tuyển dụng Đồng thời, nhóm cũng sẽ tiếp thu kiến thức chuyên môn về các công nghệ xu hướng hiện nay như React và Spring Boot.

5 Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN

Sau khi hoàn thiện đề tài, nhóm chúng em đã tích lũy được nhiều kỹ năng và kiến thức quý giá, đặc biệt về các công nghệ mới hiện nay Điều này không chỉ nâng cao tinh thần nghiên cứu và sáng tạo mà còn thể hiện cam kết cống hiến vì cộng đồng.

Khi đề tài nhóm được áp dụng vào thực tế, hoạt động tuyển dụng sẽ trở nên thuận tiện hơn cho các nhà tuyển dụng Sự tối ưu trong tìm kiếm và phân loại công việc cùng ứng viên sẽ giúp ứng viên dễ dàng tiếp cận các cơ hội việc làm phù hợp Đồng thời, nền tảng tuyển dụng này cũng hỗ trợ cộng đồng và mang lại tiềm năng lớn cho nhà tuyển dụng.

Bảng 0.1 Bảng phân công công việc

THÀNH VIÊN CÔNG VIỆC HOÀN THÀNH

- Viết báo cáo phần Front-End và Giao diện

- Thiết kế cơ sở dữ liệu

- Viết báo cáo phần Back-End và các phần còn lại

CHƯƠNG 1: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HOÁ

Vieclam24h.com, một phân trang của báo điện tử 24h.com.vn, hiện đang sở hữu hơn 1,3 triệu CV và 25,000 cơ hội việc làm cho ứng viên Trang web cung cấp nhiều loại công việc, từ lao động phổ thông cho đến vị trí quản lý cấp cao trong doanh nghiệp.

• Có hỗ trợ tạo CV và một số công cụ như công cụ tính lương, có các bài trắc nghiệm tính cách,…

• Việc làm được chia theo các lĩnh vực rất chi tiết, có bộ lọc nâng cao giúp việc tìm kiếm hiệu quả hơn

• Có mục lịch sử công việc, nhà tuyển dụng quan tâm,…

So với các trang web tuyển dụng khác, Việc làm 24h có đặc điểm rao vặt rõ rệt, dẫn đến chất lượng tuyển dụng không cao Điều này là nguyên nhân chính khiến website này sụt hạng trong danh sách các trang web tuyển dụng uy tín.

• Hỗ trợ ít ngôn ngữ

Topcv.vn, thành lập vào năm 2014, là công ty công nghệ nhân sự hàng đầu tại Việt Nam với lượng truy cập website ấn tượng lên đến 3,3 triệu lượt mỗi tháng Công ty đã xây dựng được uy tín vững chắc và trở thành đối tác tin cậy của nhiều tập đoàn công nghệ lớn như Samsung, FPT và Viettel.

• Các ngành nghề được chia ra từng mục riêng từng lĩnh vực

• Lượt truy cập khủng với số lượng đầu việc lớn và vô cùng đa dạng

• Có mẫu thiết kế CV đẹp mắt và hoàn toàn miễn phí

• Có hỗ trợ một số công cụ như công cụ tính lương GROSS-NET, tính lãi suất kép,…

• Giao diện website bắt mắt

• Hỗ trợ ít ngôn ngữ

• Phân chia các công việc chưa đủ chi tiết (bán thời gian, toàn thời gian,…)

vLance hiện có hơn 400.000 thành viên, bao gồm nhiều freelancer đa lĩnh vực với năng lực chuyên môn và kỹ năng tốt Nền tảng này cung cấp giải pháp nhân sự chất lượng và uy tín cho doanh nghiệp trên toàn quốc trong các lĩnh vực như Marketing online, lập trình web và app, thiết kế đồ họa, viết lách, tài chính – kế toán, dịch thuật, phiên dịch, và luật.

Các ngành nghề được phân chia theo từng mục riêng biệt, giúp ứng viên dễ dàng tìm kiếm công việc phù hợp với lĩnh vực của mình Đồng thời, nhà tuyển dụng cũng có thể nhanh chóng tìm kiếm các ứng viên thích hợp cho vị trí cần tuyển.

• Nhà tuyển dụng và ứng viên dễ dàng trao đổi với nhau thông qua hệ thống tin nhắn trực tuyến trên web

Khi đăng ký tại vLance, hệ thống tự động sẽ gửi thông báo về các công việc phù hợp cho từng ứng viên, giúp họ chủ động tìm kiếm cơ hội việc làm Tất cả khách hàng đều được đảm bảo quyền lợi và thanh toán đúng hạn sau khi dự án kết thúc.

• Hồ sơ ứng viên đa dạng về lĩnh vực và trải rộng về trình độ, cho phép nhà tuyển dụng có thêm rất nhiều sự lựa chọn

• Có ngôn ngữ tiếng Việt và tiếng Anh

• Cần xác minh thông tin trước khi làm

• Sau mỗi lần thay đổi lựa ở phần tìm kiếm trang web sẽ mất 1 khoảng thời gian khá lâu để tải lại nội dung trang

• Màu sắc trang thiếu thu hút

ƯU ĐIỂM

4 Đề nghị cho bảo vệ hay không?

Tp Hồ Chí Minh, ngày tháng 07 năm 2023

Giáo viên hướng dẫn (Ký & ghi rõ họ tên) ĐH SƯ PHẠM KỸ THUẬT TP HCM

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh Phúc

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

Họ và tên Sinh viên 1: Lê Thị Ngọc Diễm MSSV 1: 19110335

Họ và tên Sinh viên 2: Lê Vũ Hảo MSSV 2: 19110359

Ngành: Công nghệ thông tin

Tên đề tài: Xây dựng website hỗ trợ tìm kiếm việc làm Puzzle.tk

Họ và tên Giáo viên phản biện: TS.Huỳnh Xuân Phụng

1 Về nội dung đề tài & khối lượng thực hiện:

4 Đề nghị cho bảo vệ hay không?

Tp Hồ Chí Minh, ngày tháng 07 năm 2023

Giáo viên phản biện (Ký & ghi rõ họ tên)

Chúng tôi xin chân thành cảm ơn Khoa Công Nghệ Thông Tin – Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh đã tạo điều kiện cho nhóm được học tập và phát triển kiến thức vững chắc để thực hiện đề tài này.

Chúng em xin chân thành cảm ơn cô Mai Anh Thơ vì đã tận tâm hướng dẫn và cung cấp những góp ý quý báu trong suốt quá trình thực hiện đề tài này Sự hỗ trợ nhiệt tình của cô đã giúp nhóm chúng em hoàn thành công việc từ đầu đến cuối.

Nhờ vào nền tảng kiến thức chuyên ngành vững chắc và kinh nghiệm thực tiễn từ việc học và thực tập, chúng em đã nhận được sự hỗ trợ to lớn từ các thầy cô Khoa Công Nghệ Thông Tin, đặc biệt là cô Mai Anh Thơ Sự đóng góp này không chỉ mang lại cho chúng em khối lượng kiến thức phong phú mà còn khuyến khích chúng em hoàn thành đề tài, tạo nền tảng vững chắc cho hành trang bước vào cuộc sống mới.

Chúng em nhận thức rằng lượng kiến thức là vô tận và với khả năng hiện tại, chúng em đã nỗ lực hết mình để hoàn thành công việc Tuy nhiên, việc xảy ra thiếu sót là điều khó tránh khỏi Chúng em mong nhận được sự góp ý chân thành từ quý thầy (cô) để có thể rút ra bài học kinh nghiệm, từ đó cải thiện và nâng cấp sản phẩm của mình một cách tốt nhất.

Chúng em xin chân thành cảm ơn!

Trường ĐH Sư Phạm Kỹ Thuật TP.HCM

Khoa Công nghệ Thông tin ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP

Họ và Tên SV thực hiện 1 : Lê Thị Ngọc Diễm Mã Số SV : 19110335

Họ và Tên SV thực hiện 2 : Lê Vũ Hảo Mã Số SV : 19110359 Thời gian làm luận văn : Từ : Đến :

Chuyên ngành: Công nghệ phần mềm

Tên khóa luận tốt nghiệp: Xây dựng website hỗ trợ tìm kiếm việc làm Puzzle.tk Giáo viên hướng dẫn: ThS Mai Anh Thơ

Nhiệm vụ của khóa luận:

1 Tìm hiểu về các công nghệ: ReactJS, Gastby framework, Restful API, Json Web Token, Spring boot

2 Sử dụng Spring boot Restful API để xây dựng Backend, viết các API cho các module trong hệ thống

3 Sử dụng ReactJS, Gastby framework để xây dựng và xử lý giao diện Website cho người dùng

4 Sử dụng Postgres để lưu trữ dữ liệu của người dùng trong hệ thống

5 Sử dụng Json Web Token để xác thực và phân quyền cho hệ thống các API, đảm bảo tính bảo mật cho hệ thống

6 Tích hợp thanh toán trực tuyến với Paypal, đăng nhập bằng tài khoản Google Đề cương khóa luận:

1 Tính cấp thiết của đề tài

5 Ý nghĩa khoa học và thực tiễn

CHƯƠNG 1 KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT

2.2 Các công nghệ áp dụng

CHƯƠNG 3 THIẾT KẾ PHẦN MỀM

3.1 Mô hình hoá yêu cầu

CHƯƠNG 4 CÀI ĐẶT VÀ KIỂM THỬ

Ngày đăng: 05/12/2023, 10:04

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Sergio Moretti, “Using Spring Boot for OAuth2 and JWT REST Protection” (https://www.toptal.com/spring/spring-boot-oauth2-jwt-rest-protection) Sách, tạp chí
Tiêu đề: Using Spring Boot for OAuth2 and JWT REST Protection
[2]. Spring.io, “Spring Security Architecture” , (https://spring.io/guides/topicals/spring-security-architecture) Sách, tạp chí
Tiêu đề: Spring Security Architecture
[3]. Google, “Google Sign-In for server-side apps”, (https://developers.google.com/identity/sign-in/web/server-side-flow) Sách, tạp chí
Tiêu đề: Google Sign-In for server-side apps
[4]. Legacy.reactjs.org , “JSX In Depth”, (https://reactjs.org/docs/jsx-in-depth.html) Sách, tạp chí
Tiêu đề: JSX In Depth
[5]. O7planning.org, “Spring Boot, Hibernate and Spring Transaction Tutorial with Examples” (https://o7planning.org/11665/spring-boot-hibernate-and-spring-transaction) Sách, tạp chí
Tiêu đề: Spring Boot, Hibernate and Spring Transaction Tutorial with Examples
[6]. Devcenter.heroku.com, “Connecting to Relational Databases on Heroku with Java”, 14/10/2022 (https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java)[7].Baeldung.com , “Persisting Enums in JPA”, 20/06/2023 (https://www.baeldung.com/jpa- persisting-enums-in-jpa) Sách, tạp chí
Tiêu đề: Connecting to Relational Databases on Heroku with Java"”, 14/10/2022 (https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java) [7].Baeldung.com , “"Persisting Enums in JPA
[8]. Hương Thanh, “Spring Boot 6 : Configuration và Bean”, 09/12/2022 (https://techmaster.vn/posts/36172/spring-boot-6-configuration-va-bean)[9]. Cloudinary.com, “Upload API reference”, 15/06/2023(https://cloudinary.com/documentation/image_upload_api_reference#destroy) Sách, tạp chí
Tiêu đề: Spring Boot 6 : Configuration và Bean"”, 09/12/2022 (https://techmaster.vn/posts/36172/spring-boot-6-configuration-va-bean) [9]. Cloudinary.com, “"Upload API reference
w