📖 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.
📐 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).
📂 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.
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.
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`).
🔌 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.
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.
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 đó.
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.
💾 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.