Human Resources & Authorization Domain / HTML Specification
Bounded Context 6

Human Resources & Authorization Domain

Tài liệu đặc tả nghiệp vụ quản lý vòng đời nhân sự, kỹ năng sản xuất, phân quyền người dùng và kiểm soát truy cập hệ thống Kingston.

📖 1. Ngôn Ngữ Chung (Ubiquitous Language)

Chuẩn hóa các thuật ngữ quản lý nhân lực và phân quyền tài khoản sử dụng thống nhất trong codebase.

Thuật ngữ (Việt - Anh) Mã nguồn (Model) Định nghĩa nghiệp vụ & Ranh giới
Nhân viên
Employee
Employee Cá nhân thuộc biên chế nhà máy Kingston, được gán mã nhân viên độc lập và các thông tin hồ sơ liên quan.
Kỹ năng nhân viên
Employee Skill
EmployeeSkill Danh mục các chứng chỉ năng lực tay nghề vận hành của nhân viên (ví dụ: Hàn, Cưa gỗ, Lắp ráp).
Mã thẻ quét
Employee ID Code
EmployeeIdCode RFID/Barcode định danh vật lý gán với nhân viên để thực thi thao tác check-in tại các trạm máy.
Tài khoản
User
User Đối tượng người dùng đăng nhập phần mềm hệ thống, có thể liên kết 1-to-1 với một Nhân viên.
Vai trò hệ thống
Role
Role Tập hợp các phân quyền nghiệp vụ hệ thống cấp cho người dùng (ví dụ: Admin, Kế hoạch, Quản xưởng).
Quyền truy cập
Role Permission
RolePermission Chuỗi mã định nghĩa quyền truy xuất hoặc thực thi chức năng/API cụ thể (ví dụ: `create:work-order`).

📐 2. Sơ Đồ Thiết Kế Domain Model

Sơ đồ biểu diễn quan hệ nghiệp vụ giữa 2 nhóm Aggregate Core: Nhân Sự (Employee) và Phân Quyền (User/Role).

Employee Aggregate User & Authorization Aggregate Employee Aggregate Root EmployeeSkill Entity EmployeeIdCode Entity User Aggregate Root Role Aggregate Root RolePermission Entity Liên kết 1-1 UserRole

📂 3. Các Aggregates & Ranh Giới Nghiệp Vụ

Chi tiết ranh giới dữ liệu và các điều kiện ràng buộc nghiệp vụ (Invariants) cho từng Aggregate.

HR Boundary

Employee Aggregate

Quản lý vòng đời nhân sự xưởng, kỹ năng vận hành và thẻ quét thông tin cá nhân vật lý.

  • Quy tắc 1: `employeeCode` phải là duy nhất trên toàn hệ thống và không được thay đổi sau khi tạo.
  • Quy tắc 2: Mỗi nhân viên có thể sở hữu nhiều mã thẻ định danh (`EmployeeIdCode`), nhưng chỉ có tối đa 1 thẻ hoạt động (`isActive = true`).
  • Quy tắc 3: Khi nhân viên rời công ty (`dateOfLeaving` có giá trị), toàn bộ thẻ định danh liên quan phải tự động vô hiệu hóa.
📖 Xem đặc tả chi tiết Employee Aggregate
Auth Boundary

User & Authorization Aggregate

Kiểm soát thông tin bảo mật tài khoản người dùng, vai trò phân quyền và phiên làm việc.

  • Quy tắc 1: Tài khoản đăng nhập (`User`) liên kết 1-to-1 không trùng lặp với hồ sơ nhân viên (`Employee`).
  • Quy tắc 2: Một User có thể được gán nhiều vai trò (`Role`), quyền hạn tích lũy của User là hợp các quyền (`PermissionCode`) từ tất cả các vai trò đó.
  • Quy tắc 3: Phiên làm việc (`UserToken`) sẽ bị vô hiệu hóa lập tức nếu tài khoản bị khoá (`status = 0`).
📖 Xem đặc tả chi tiết User & Auth Aggregate

🔌 4. Domain Events & Domain Services

Mô tả các sự kiện kích hoạt và các hàm dịch vụ logic xuyên suốt các phân hệ khác.

Domain Events

  • `EmployeeOnboardedEvent`: Phát ra khi nhân viên mới được tiếp nhận, kích hoạt việc cấp phát thẻ ID vật lý và chuẩn bị tài khoản.
  • `EmployeeRoleChangedEvent`: Kích hoạt khi thay đổi vai trò nhân sự, tự động cập nhật lại quyền hạn truy cập của User liên kết.
  • `EmployeeCardDeactivatedEvent`: Phát đi khi thẻ ID bị thu hồi, tự động từ chối check-in tại các trạm máy.

Domain Services

`AuthorizationService`

Kiểm tra phân quyền động và tổng hợp quyền của người dùng:

  • Check SuperAdmin: Nếu `isSuperAdmin = true`, bỏ qua kiểm tra, mặc định có mọi quyền.
  • Hợp quyền: Quyền khả dụng = Hợp các Permissions của Roles đang hoạt động.
  • Kiểm tra khả dụng: Từ chối hành động nếu User hoặc Employee có trạng thái không hoạt động.

🏁 5. Luồng Nghiệp Vụ Chính (Happy Path Flow)

Sơ đồ các bước tiếp nhận nhân viên mới, cấp thẻ quét và kích hoạt phân quyền truy cập hệ thống.

1

Tiếp nhận nhân sự

HR tạo hồ sơ Employee mới trong hệ thống với đầy đủ bộ phận, chức danh và thông tin cá nhân.

2

Cấp thẻ quét & kỹ năng

Cấu hình danh sách kỹ năng tay nghề và gán mã thẻ ID vật lý hoạt động cho nhân viên đó.

3

Liên kết tài khoản & Phân quyền

Tạo tài khoản User liên kết, gán vai trò hệ thống tương ứng (ví dụ: Workshop Leader) để cấp quyền truy cập phần mềm.

🔌 Xem chi tiết quy trình Tuyển dụng & Onboarding 🔑 Xem chi tiết quy trình Kiểm soát phân quyền

💾 6. Thông Tin Kỹ Thuật (Technical Spec)

Bản đồ cấu trúc cơ sở dữ liệu vật lý (MySQL DDL / Prisma) và danh sách đặc tả API của phân hệ Nhân sự & Phân quyền.

Xem DB Schema 🔎 Xem API Specs 🔎