Human Resources & Auth / Aggregates / employee-aggregate.html
Aggregate Detail

Employee Aggregate

Đặc tả chi tiết cấu trúc thuộc tính, quan hệ thực thể nội bộ và luật nghiệp vụ toàn vẹn (Invariants) của hồ sơ nhân sự Employee.

📐 Mô Hình Tactical Lớp (Class Diagram)

Sơ đồ biểu diễn Aggregate Root Employee bảo vệ ranh giới giao dịch cho 2 Entity con: EmployeeSkillEmployeeIdCode.

Employee AGGREGATE ROOT EmployeeSkill ENTITY (1 - N) EmployeeIdCode ENTITY (1 - N)

🛡️ Luật Nghiệp Vụ Toàn Vẹn (Invariants)

Các luật nghiệp vụ bắt buộc phải kiểm tra và bảo đảm tính hợp lệ mỗi khi có sự thay đổi dữ liệu nhân sự.

  • Mã số nhân viên (`employeeCode`): Bắt buộc có giá trị, định dạng chữ hoa viết liền không chứa ký tự đặc biệt, và phải là duy nhất trên toàn hệ thống. Không được thay đổi sau khi khởi tạo.
  • Ràng buộc mã quét hoạt động (`EmployeeIdCode`): Mỗi nhân viên có thể sở hữu nhiều mã thẻ định danh vật lý trong lịch sử (đổi thẻ mất, thẻ cũ hư), nhưng hệ thống chỉ cho phép duy nhất tối đa một thẻ có trạng thái `isActive = true` tại một thời điểm.
  • Kỹ năng sản xuất (`EmployeeSkill`): Một nhân viên không được gán trùng lặp một mã kỹ năng (`skillId`) nhiều lần. Mỗi bản ghi kỹ năng phải tham chiếu tới danh mục chuẩn trong hệ thống (`MasterData`).
  • Tự động vô hiệu hóa thẻ khi nghỉ việc: Khi thuộc tính ngày thôi việc `dateOfLeaving` được thiết lập trên Employee, tất cả các thẻ `EmployeeIdCode` đang hoạt động của nhân viên đó phải tự động được cập nhật trạng thái `isActive = false` để tránh việc quét thẻ bất hợp pháp tại các trạm.