Đặc tả Kỹ thuật: Module HRM
Tài liệu này chi tiết về kiến trúc kỹ thuật, stack công nghệ và các mẫu tích hợp cho module HRM (Quản trị Nguồn nhân lực).
1. Kiến trúc Cấp cao
Module HRM được xây dựng như một Hệ thống Tự vận hành (SCS) trong hệ sinh thái VENI-AI. Nó duy trì lược đồ cơ sở dữ liệu riêng trong khi dựa vào Shell để quản lý Danh tính và Truy cập.
Sơ đồ Thành phần
2. Stack Công nghệ
Backend (API)
- Runtime: Bun (Runtime JS hiệu năng cao)
- Framework: Ignis Framework (DI/IoC nội bộ)
- Router: Hono (Web framework siêu nhanh)
- ORM: Drizzle ORM (TypeScript-first)
- Cơ sở dữ liệu: PostgreSQL 15+
Frontend (UI)
- Thư viện: React 18
- Công cụ Build: Vite
- Tích hợp: Webpack Module Federation (để nhúng vào Shell)
- Styling: Tailwind CSS v4 + ARDOR UI Kit
- Biểu đồ: D3.js (cho Sơ đồ tổ chức)
- Lịch: FullCalendar React
3. Các Mẫu Tích hợp
3.1 Xác thực & Đa thuê bao
HRM là một ứng dụng đa thuê bao nơi việc cô lập dữ liệu được thực thi nghiêm ngặt ở cấp cơ sở dữ liệu bằng orgId.
- Xác minh JWT: API sử dụng JWKS công khai của Shell để xác minh Platform JWT.
- Ngữ cảnh Thuê bao:
organizationIdvàuserIdđược trích xuất từ JWT và đưa vào ngữ cảnh dịch vụ.
3.2 Ủy quyền (RBAC)
Kiểm tra quyền hạn được thực hiện bằng decorator @authorize() trong các controller, giao tiếp với dịch vụ RBAC dựa trên Casbin của Shell.
| Phạm vi | Logic |
|---|---|
employees:read | Cho phép liệt kê và xem hồ sơ công khai. |
employees:write | Cho phép tạo/cập nhật hồ sơ (HR Admin). |
leave_requests:approve | Cho phép quản lý xử lý các yêu cầu nghỉ phép. |
3.3 Lưu trữ Đối tượng
Ảnh hồ sơ nhân viên và tài liệu onboarding được lưu trữ trong MinIO/S3.
- Đường dẫn:
avatars/{orgId}/{employeeId}.jpg - Bảo mật: Các tệp được phục vụ qua URL có chữ ký hoặc proxy với kiểm tra RBAC.
4. Logic Triển khai Cốt lõi
4.1 Tính toán Số dư Nghỉ phép
Số dư nghỉ phép được cập nhật nguyên tử bằng các transaction cơ sở dữ liệu.
- Kiểm tra
leave_balancesxem có đủtotalDays - usedDayskhông. - Chèn
leave_requestsvớistatus='pending'. - Khi Phê duyệt: Tăng
usedDaystrongleave_balances.
4.2 Tạo Sơ đồ Tổ chức
Sơ đồ tổ chức sử dụng cấu trúc cây đệ quy ở frontend:
- Đầu vào: Mảng phẳng các nhân viên với
managerId. - Xử lý: D3.js
stratify()chuyển đổi mảng này thành JSON phân cấp. - Dựng hình: Cây dựa trên SVG với khả năng thu phóng/di chuyển.
4.3 Quy trình Onboarding
Được kích hoạt bởi một hook sự kiện khi tạo nhân viên.
- Nếu
employee.jobTitlehoặc một tag cụ thể khớp vớionboarding_templates.roleTag, hệ thống sẽ sao chép tất cảonboarding_template_tasksthànhchecklist_itemscho nhân viên mới.
5. Bảo mật & Quản trị
- Mã hóa Dữ liệu: Các trường nhạy cảm (như số điện thoại liên hệ khẩn cấp) được mã hóa khi lưu trữ (dự kiến v1.1).
- Nhật ký Kiểm toán: Mọi thay đổi đối với trạng thái nhân viên hoặc phê duyệt nghỉ phép đều được ghi lại với ID tác nhân và dấu thời gian.
- Cô lập Thuê bao: Truy cập dữ liệu chéo thuê bao bị ngăn chặn bởi các bộ lọc
orgIdbắt buộc trong mọi truy vấn SQL.
Liên kết liên quan