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

Bối cảnh thực tiễn

Trong quá trình vận hành doanh nghiệp, việc quản lý thông tin nhân viên và các nghiệp vụ nhân sự thường được thực hiện thông qua các công cụ rời rạc hoặc sổ sách truyền thống. Khi quy mô tổ chức mở rộng, phương thức quản lý phân tán này bộc lộ nhiều hạn chế: dữ liệu nhân sự bị phân mảnh gây khó khăn cho việc truy xuất, các tác vụ quản trị như chấm công, theo dõi lịch làm việc, xử lý yêu cầu nghỉ phép và đánh giá hiệu suất bị kéo dài. Quá trình xử lý thủ công làm gia tăng chi phí vận hành và tiêu tốn nhiều thời gian cho các công việc giấy tờ. Xuất phát từ thực trạng đó, đề tài tập trung xây dựng một hệ thống quản lý nguồn nhân lực (Human Resource Management - HRM) tập trung, số hóa toàn diện quy trình quản trị nhân sự, tích hợp công nghệ nhận diện sinh trắc học nhằm nâng cao tính chính xác và hiệu quả vận hành.

Mục tiêu và nhiệm vụ nghiên cứu

Mục tiêu cốt lõi của đề tài là xây dựng một hệ sinh thái ứng dụng quản lý nhân sự đa nền tảng (Web và Mobile), hỗ trợ doanh nghiệp quản lý dữ liệu nhân viên, theo dõi thời gian làm việc và xét duyệt nghỉ phép trên một hệ thống tập trung.

Để đạt được mục tiêu nêu trên, đề tài xác định 5 nhiệm vụ cụ thể:

  1. Tự động khởi tạo lịch làm việc (work calendar) của nhân viên dựa trên các cấu hình ca làm việc và thiết lập hệ thống.
  2. Kiểm soát chặt chẽ việc ghi nhận thời gian vào/ra (punch-in/punch-out) của nhân viên trong khung thời gian hợp lệ quy định.
  3. Ứng dụng công nghệ nhận diện khuôn mặt (face recognition) trong quá trình điểm danh nhằm nâng cao tính bảo mật và tính xác thực.
  4. Tự động hóa việc quản lý ngân sách nghỉ phép (leave budget) và xử lý quy trình nộp, duyệt đơn xin nghỉ phép trực tuyến.
  5. Cho phép nhân viên ghi nhận nhật ký công việc (log work/timesheet) theo từng ngày để cấp quản lý theo dõi và đánh giá hiệu suất.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Quy trình quản lý nguồn nhân lực trong doanh nghiệp, bao gồm quản lý hồ sơ nhân viên, quản lý ca làm việc, chấm công sinh trắc học, quản lý nghỉ phép và nhật ký công việc.
  • Phạm vi không gian: Đồ án tốt nghiệp được thực hiện tại Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh (HCMC University of Technology and Education).
  • Phạm vi thời gian: Đồ án thuộc khóa đào tạo 2020, thực hiện và hoàn thành nghiệm thu vào tháng 5/2024 – tháng 6/2024.
  • Phạm vi chức năng: Xây dựng hệ thống hoàn chỉnh từ đầu (scratch) bao gồm 4 phân hệ chính: Cơ sở dữ liệu nhân viên tập trung (Employee Database), Quản lý chấm công (Attendance Management), Quản lý nghỉ phép (Leave Management) và Quản lý bảng chấm công/nhật ký công việc (Timesheet Tracking).

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

Khảo sát và đối sánh các hệ thống tham chiếu

Nhóm tác giả đã tiến hành khảo sát và phân tích tính năng của 3 nền tảng quản lý nhân sự phổ biến trên thị trường nhằm rút ra các yêu cầu thiết kế phù hợp:

  • OrangeHRM: Hệ thống quản lý nhân sự phục vụ hơn 5 triệu người dùng trên 100 quốc gia. Đồ án tham khảo thiết kế giao diện người dùng (UI) trên cả web và di động, cùng cấu trúc phân hệ quản lý điểm danh.
  • BambooHR: Nền tảng quản trị nhân sự tập trung vào dữ liệu nhân viên, tiền lương, thời gian làm việc và phúc lợi. Đồ án tham khảo cấu trúc sơ đồ tổ chức (organization chart) và bố cục giao diện web trực quan.
  • Factorial: Phần mềm nhân sự tự động hóa các quy trình quản lý thời gian, chấm công, quản lý vắng mặt và tích hợp nhận diện khuôn mặt. Đồ án tham khảo luồng xử lý đơn xin nghỉ phép (time off request) và cơ chế điểm danh sinh trắc học.
Tiêu chí đối sánh OrangeHRM BambooHR Factorial Hệ thống xây dựng trong đồ án
Quản lý nhân viên (Employee management) Có Có Có Có
Theo dõi điểm danh (Attendance tracking) Có Có Có Có
Nhận diện khuôn mặt (Face recognition) Không Không Có Có
Sơ đồ tổ chức (Organization chart) Có Có Không Không
Quản lý nghỉ phép (Time off management) Có Có Có Có

Ngăn xếp công nghệ sử dụng

  1. Front-end Web Application (Angular): Sử dụng Angular (nền tảng mã nguồn mở phát triển ứng dụng đơn trang SPA với TypeScript và HTML). Tận dụng kiến trúc thành phần (Component-based), cơ chế ràng buộc dữ liệu hai chiều (Data Binding) và cơ chế tiêm phụ thuộc (Dependency Injection) để xây dựng giao diện quản trị có khả năng tái sử dụng và kiểm thử cao.
  2. Front-end Mobile Application (Flutter): Sử dụng framework Flutter phát triển bởi Google với ngôn ngữ Dart, cho phép xây dựng ứng dụng di động đa nền tảng cho iOS và Android từ một cơ sở mã nguồn duy nhất.
  3. Back-end API Engine (Express.js / Node.js): Xây dựng hệ thống máy chủ RESTful API trên nền tảng Express.js chạy trên môi trường thực thi Node.js, tận dụng kiến trúc module hóa, hệ thống định tuyến (routing) và tầng middleware phục vụ xác thực người dùng cũng như quản lý lỗi tập trung.
  4. Cơ sở dữ liệu (MySQL): Hệ quản trị cơ sở dữ liệu quan hệ được sử dụng để lưu trữ toàn bộ dữ liệu nhân sự, lịch làm việc, bản ghi chấm công và đơn từ nghỉ phép.
  5. Thư viện nhận diện thị giác máy tính (TensorFlow.js & face-api.js): Triển khai mô hình học máy trực tiếp trên trình duyệt web thông qua TensorFlow.js và thư viện face-api.js. Quá trình tính toán và nhận diện khuôn mặt được thực hiện hoàn toàn ở phía client (Client-side computation), tận dụng tài nguyên phần cứng của máy trạm mà không làm quá tải máy chủ.
  6. Môi trường đóng gói và triển khai (Docker & Docker Compose): Sử dụng Dockerfile riêng biệt cho Backend và Frontend, cùng tệp cấu hình docker-compose để tự động hóa quy trình triển khai đồng bộ hệ thống.

Thiết kế và triển khai hệ thống

Kiến trúc phân tầng và luồng dữ liệu

Hệ thống được thiết kế theo kiến trúc hướng dịch vụ với sự tách biệt rõ ràng giữa tầng giao diện người dùng, tầng xử lý nghiệp vụ và tầng dữ liệu:

  • Tầng giao diện (Client Layer): Gồm ứng dụng web chạy Angular dành cho quản trị viên/nhân viên và ứng dụng di động chạy Flutter dành cho nhân viên.
  • Tầng máy chủ (Backend Service Layer): Express.js tiếp nhận các yêu cầu HTTP/HTTPS, thực thi kiểm tra xác thực, xử lý logic phân quyền, điều phối luồng dữ liệu nghiệp vụ và tích hợp ghi nhận nhật ký hệ thống.
  • Tầng dữ liệu (Data Persistence Layer): CSDL MySQL lưu trữ có cấu trúc các thực thể nhân viên, ca làm việc, ngân sách nghỉ phép, báo cáo sự cố và lịch sử chấm công.

Phân loại tác tử và ma trận chức năng Use Case

Hệ thống phân định 3 nhóm tác tử (Actors) tương tác chính:

  • Unauthorized user (Người dùng chưa xác thực): Người dùng truy cập hệ thống trước khi đăng nhập.
  • Employee (Nhân viên): Nhân viên thao tác điểm danh, quản lý lịch trình, ghi nhận nhật ký công việc, gửi báo cáo và nộp đơn nghỉ phép cá nhân.
  • Admin (Quản trị viên): Người quản lý toàn quyền cấu hình hệ thống, quản lý nhân sự, phê duyệt đơn từ, huấn luyện mô hình khuôn mặt và thiết lập thời gian làm việc.
Mã Use Case Tên chức năng (Use Case Name) Tác tử tương tác (Actors) Mức độ ưu tiên
UC_01 Login (Đăng nhập) Unauthorized user Critical
UC_02 Forgot password (Quên mật khẩu) Unauthorized user Critical
UC_03 Submit leave request (Nộp đơn nghỉ phép) Employee, Admin Critical
UC_04 Edit leave request (Chỉnh sửa đơn nghỉ phép) Employee, Admin Critical
UC_05 Edit profile (Chỉnh sửa hồ sơ cá nhân) Employee, Admin Critical
UC_06 Edit employee (Chỉnh sửa thông tin nhân viên) Employee, Admin Critical
UC_07 Log work (Ghi nhật ký công việc) Employee, Admin Critical
UC_08 Punch-in/out (Chấm công vào/ra) Employee, Admin Critical
UC_09 Report Attendance (Báo cáo sự cố điểm danh) Employee, Admin Critical
UC_10 Approve/Reject attendance report (Duyệt/Từ chối báo cáo điểm danh) Employee, Admin Critical
UC_11 Training face model (Huấn luyện mô hình khuôn mặt) Employee, Admin Critical
UC_12 View notifications (Xem thông báo) Employee, Admin Critical
UC_13 View report schedule (Xem lịch biểu báo cáo) Employee, Admin Critical
UC_14 View work calendar (Xem lịch làm việc) Employee, Admin Critical
UC_15 Edit working hours/type (Cấu hình giờ/loại hình làm việc) Employee, Admin Critical
UC_16 Edit settings (Chỉnh sửa thiết lập hệ thống) Admin Critical
UC_17 Edit roles (Chỉnh sửa phân quyền vai trò) Admin Critical

Quy trình nghiệp vụ và xử lý ngoại lệ

1. Quy trình chấm công và xử lý ngoại lệ điểm danh (UC_08 & UC_09)

  • Luồng chuẩn (Punch-in/out): Nhân viên mở trang chấm công trên web, hệ thống kích hoạt camera và sử dụng face-api.js nhận diện đặc trưng khuôn mặt của nhân viên. Khi khuôn mặt khớp với dữ liệu đã được huấn luyện, hệ thống tự động ghi nhận thời gian vào/ra và hiển thị thông báo thành công đồng bộ trên cả giao diện web và ứng dụng di động.
  • Xử lý ngoại lệ (Report Attendance): Trong trường hợp hệ thống không thể nhận diện được khuôn mặt do điều kiện ánh sáng hoặc góc chụp và người dùng bấm nút hủy ("Cancel") 3 lần liên tiếp, hệ thống sẽ tự động bật hộp thoại cảnh báo (Alert dialog). Từ đây, nhân viên được chuyển sang biểu mẫu nộp báo cáo điểm danh sự cố (Attendance Report Form). Quản trị viên sau đó sẽ xem xét báo cáo và thực hiện phê duyệt (Approve) hoặc từ chối (Reject) thủ công (UC_10).

2. Quy trình huấn luyện dữ liệu khuôn mặt (UC_11)

Tại giao diện quản lý nhân viên, quản trị viên chọn biểu tượng "Training" trên từng hồ sơ để kích hoạt chức năng huấn luyện dữ liệu nhận diện khuôn mặt. Dữ liệu vector đặc trưng của nhân viên sau đó được lưu trữ để phục vụ việc so khớp trực tiếp ở các phiên làm việc tiếp theo.

3. Quy trình quản lý nghỉ phép và nhật ký làm việc (UC_03, UC_04, UC_07)

  • Nghỉ phép: Hệ thống tự động tính toán hạn mức ngày nghỉ (leave budget) cho từng nhân viên. Nhân viên có thể nộp đơn xin nghỉ trực tuyến, tùy chỉnh lý do và khoảng thời gian. Cấp quản lý tiếp nhận yêu cầu và phản hồi trạng thái phê duyệt qua bảng điều khiển.
  • Nhật ký công việc (Log work): Nhân viên truy cập vào lịch làm việc (Work calendar), chọn ngày làm việc tương ứng và điền nội dung các đầu việc đã thực hiện để gửi lên hệ thống, phục vụ công tác đối soát bảng chấm công cuối tháng.

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

Chương 1: Giới thiệu đề tài (Introduction)

Chương 1 làm rõ tính cấp thiết của việc hiện đại hóa quản trị nhân sự trong các doanh nghiệp hiện nay. Tác giả phân tích những hạn chế của phương thức quản lý dữ liệu phân tán bằng giấy tờ hoặc các công cụ không đồng bộ, từ đó xác định mục tiêu xây dựng một phần mềm quản lý nhân sự tập trung, tích hợp các công nghệ chấm công sinh trắc học và bảng chấm công tự động. Chương này cũng đề ra các yêu cầu cốt lõi về giao diện, tính năng tự động khởi tạo lịch làm việc, kiểm soát khung giờ chấm công và quản lý hạn mức nghỉ phép.

Chương 2: Tổng quan công nghệ và khảo sát ứng dụng tham chiếu (Technologies and Application Reference)

Chương 2 trình bày kết quả phân tích, đánh giá 3 phần mềm nhân sự tiêu biểu (OrangeHRM, BambooHR, Factorial) qua 4 tiêu chí: Giao diện người dùng, Trải nghiệm người dùng, Dịch vụ chức năng và Khả năng ứng dụng vào đề tài. Tiếp theo, chương cung cấp cơ sở lý thuyết về các công nghệ được lựa chọn: Angular cho web SPA, Express.js trên Node.js cho backend API, Flutter cho ứng dụng di động đa nền tảng, và TensorFlow.js (face-api.js) cho tác vụ nhận diện khuôn mặt trực tiếp phía client.

Chương 3: Đặc tả yêu cầu hệ thống (Requirement Specification)

Chương 3 chi tiết hóa toàn bộ các yêu cầu chức năng và phi chức năng của hệ thống. Tác giả phân chia hệ thống thành 3 nhóm tác tử chính (Unauthorized user, Employee, Admin) và mô hình hóa thông qua 17 ca sử dụng (Use Case) từ UC_01 đến UC_17. Mỗi use case đều được xây dựng bảng đặc tả chi tiết bao gồm: mục tiêu, điều kiện tiên quyết (preconditions), điều kiện sau (post-conditions), luồng sự kiện chính (main success scenario) và các luồng xử lý ngoại lệ (exceptions).

Chương 4: Thiết kế hệ thống (System Design)

Chương 4 tập trung vào việc mô hình hóa kiến trúc và thiết kế chi tiết hệ thống phần mềm:

  • Thiết kế kiến trúc tổng thể cho Web App, Mobile App và Back-end API.
  • Thiết kế sơ đồ quan hệ thực thể (Entity Relational Diagram - ERD) phục vụ việc xây dựng cơ sở dữ liệu trên MySQL.
  • Thiết kế sơ đồ thành phần (Component Diagrams) cho Angular và Flutter.
  • Xây dựng hệ thống sơ đồ cộng tác (Collaboration Diagrams) và sơ đồ tuần tự (Sequence Diagrams) cho 11 luồng chức năng quan trọng (Đăng nhập, Quên mật khẩu, Nộp đơn nghỉ phép, Chỉnh sửa hồ sơ, Ghi nhật ký công việc, Chấm công vào/ra, Xem thông báo, Đổi trạng thái nghỉ phép, Xem lịch biểu báo cáo, Xem lịch làm việc, Đổi ca làm việc).
  • Thiết kế giao diện người dùng (UI Mockups/Screens) cho hơn 20 màn hình trên cả nền tảng Web và Mobile.

Chương 5: Triển khai và kiểm thử hệ thống (System Implementation and Testing)

Chương 5 trình bày việc đóng gói và triển khai ứng dụng bằng công nghệ container Docker. Nhóm tác giả xây dựng các tệp Dockerfile cho phần Backend, Dockerfile cho Frontend và tệp điều phối docker-compose.yml để cấu hình môi trường vận hành đồng nhất, cùng các bước kiểm thử chức năng của hệ thống.


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

Kết quả chính đạt được

  • Hệ thống phần mềm hoàn chỉnh: Đã thiết kế và xây dựng thành công ứng dụng quản trị nhân sự tập trung hoạt động trên hai nền tảng Web (Angular) và Mobile (Flutter) kết hợp Backend Express.js và CSDL MySQL.
  • Hoàn thiện 17 ca sử dụng: Đặc tả, thiết kế sơ đồ tuần tự/cộng tác và hiện thực hóa đầy đủ 17 chức năng từ quản lý hồ sơ, cấu hình quyền hạn, lịch làm việc đến xét duyệt nghỉ phép.
  • Tích hợp nhận diện khuôn mặt: Triển khai thành công module điểm danh nhận diện khuôn mặt client-side bằng TensorFlow.js (face-api.js), giảm thiểu sự phụ thuộc vào các thiết bị phần cứng quét vân tay đắt tiền.
  • Cơ chế xử lý ngoại lệ: Xây dựng quy trình xử lý ngoại lệ hoàn chỉnh khi hệ thống nhận diện thất bại 3 lần liên tiếp, tự động điều hướng người dùng nộp báo cáo điểm danh để người quản lý duyệt thủ công.
  • Tự động hóa triển khai: Đóng gói toàn bộ mã nguồn ứng dụng thông qua cấu hình Docker và Docker Compose.

Đóng góp thực tiễn của đề tài

Đồ án đã cung cấp một giải pháp phần mềm HRM tích hợp, giải quyết được bài toán phân mảnh dữ liệu ở các doanh nghiệp vừa và nhỏ. Việc kết hợp nhận diện sinh trắc học trực tiếp trên nền web giúp doanh nghiệp tiết kiệm chi phí đầu tư thiết bị chuyên dụng, đồng thời đảm bảo tính minh bạch và chính xác trong công tác chấm công và tính lương.


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

Hạn chế

  • Hệ thống tập trung chủ yếu vào các phân hệ nghiệp vụ cốt lõi (hồ sơ, điểm danh, nghỉ phép, nhật ký công việc); chưa tích hợp các phân hệ nâng cao như tuyển dụng chuyên sâu (recruitment), đào tạo (training) hoặc tính lương tự động (payroll) chi tiết như các phần mềm thương mại lớn.
  • Khả năng nhận diện khuôn mặt bằng face-api.js phía client phụ thuộc vào chất lượng camera, điều kiện ánh sáng môi trường và góc chụp của người dùng, đòi hỏi phải có quy trình duyệt báo cáo ngoại lệ thủ công từ quản lý khi gặp sự cố.

Hướng phát triển

  • Tối ưu hóa thuật toán nhận diện khuôn mặt để nâng cao tốc độ và độ chính xác trong nhiều điều kiện môi trường ánh sáng phức tạp.
  • Phát triển thêm các phân hệ quản trị tiền lương (Payroll), quản lý quy trình tuyển dụng và đánh giá hiệu suất nhân viên đa chiều (Performance evaluation).
  • Tích hợp thêm sơ đồ cơ cấu tổ chức (Organization chart) trực quan tương tự như mô hình của BambooHR và OrangeHRM.

Giá trị tham khảo

Đồ án là tài liệu tham khảo phù hợp cho sinh viên, giảng viên ngành Công nghệ thông tin và Kỹ thuật phần mềm trong việc nghiên cứu quy trình phát triển một hệ thống thông tin doanh nghiệp hoàn chỉnh.

Các nội dung có giá trị tham khảo chuyên môn cao bao gồm:

  1. Quy trình phân tích và mô hình hóa phần mềm: Bộ tài liệu đặc tả 17 use case với đầy đủ kịch bản chính và xử lý ngoại lệ theo chuẩn công nghệ phần mềm.
  2. Hệ thống sơ đồ thiết kế UML: Tập hợp chi tiết các sơ đồ thành phần (Component), sơ đồ cộng tác (Collaboration) và sơ đồ tuần tự (Sequence) thể hiện luồng giao tiếp giữa Angular, Flutter và Express.js.
  3. Giải pháp tích hợp AI trên Web: Cách thức ứng dụng thư viện face-api.js và TensorFlow.js để xử lý nhận diện sinh trắc học trực tiếp phía client.
  4. Cấu hình Container hóa: Phương thức thiết lập Dockerfile và Docker Compose để đồng bộ môi trường phát triển và triển khai hệ sinh thái Web/Backend.

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

1. Đề tài đã khảo sát và đối sánh các phần mềm quản lý nhân sự nào trên thị trường?

Tác giả đã khảo sát 3 nền tảng thương mại gồm: OrangeHRM (tham khảo giao diện web/mobile và quản lý điểm danh), BambooHR (tham khảo giao diện web và sơ đồ tổ chức) và Factorial (tham khảo quản lý xin nghỉ phép và nhận diện khuôn mặt).

2. Ngăn xếp công nghệ (Tech Stack) được sử dụng để phát triển hệ thống gồm những gì?

  • Front-end Web: Angular (TypeScript, HTML).
  • Front-end Mobile: Flutter (Dart).
  • Back-end: Express.js (Node.js).
  • Cơ sở dữ liệu: MySQL.
  • Thị giác máy tính / Trí tuệ nhân tạo: TensorFlow.js kết hợp thư viện face-api.js.
  • Đóng gói / Triển khai: Docker và Docker Compose.

3. Hệ thống xử lý thế nào khi chức năng nhận diện khuôn mặt điểm danh bị lỗi?

Khi nhân viên chấm công bằng nhận diện khuôn mặt nhưng hệ thống không nhận diện được và người dùng nhấn nút "Cancel" 3 lần, hệ thống sẽ hiển thị một hộp thoại cảnh báo (Alert dialog) và tự động mở biểu mẫu báo cáo điểm danh (Attendance Report Form). Nhân viên sẽ điền thông tin báo cáo để gửi lên hệ thống, sau đó quản trị viên/quản lý sẽ xem xét và chọn "Approve" (Duyệt) hoặc "Reject" (Từ chối) bản ghi điểm danh này.

4. Hệ thống phân chia những tác tử (Actors) nào và có bao nhiêu ca sử dụng chính?

Hệ thống xác định 3 tác tử: Unauthorized user (Người dùng chưa xác thực), Employee (Nhân viên) và Admin (Quản trị viên). Toàn bộ hệ thống được mô hình hóa qua 17 ca sử dụng (từ UC_01 đến UC_17).

5. Chức năng ghi nhận nhật ký công việc (Log work) hoạt động như thế nào?

Nhân viên đăng nhập vào hệ thống, mở màn hình lịch làm việc (Work calendar), chọn ngày làm việc cụ thể, sau đó nhấn nút "Add" để mở giao diện ghi nhật ký, điền các công việc/nhiệm vụ đã thực hiện trong ngày và lưu lại để quản lý theo dõi và xử lý bảng chấm công.


Kết luận

Đồ án tốt nghiệp "Building a human resource management system" do sinh viên Tạ Duy Hoàng và Ngô Anh Lương thực hiện dưới sự hướng dẫn của ThS. Nguyễn Đức Khoan tại Trường Đại học Sư phạm Kỹ thuật TP.HCM đã hoàn thành đầy đủ các mục tiêu đề ra về việc xây dựng hệ thống quản trị nhân sự tập trung. Hệ thống kết hợp các công nghệ hiện đại gồm Angular, Flutter, Express.js, MySQL và TensorFlow.js để số hóa các quy trình quản lý nhân sự, điểm danh sinh trắc học và quản lý nghỉ phép. Toàn bộ công trình thể hiện một quy trình kỹ nghệ phần mềm chuẩn mực từ khâu khảo sát tham chiếu, phân tích yêu cầu, thiết kế kiến trúc UML chi tiết đến đóng gói triển khai ứng dụng bằng Docker.