# Module `hr` — Nhân sự

> ⛔ **ĐÃ THAY THẾ (08/7):** không scaffold module này — dùng **hrm built-in** (`core/hrm-builtin-2026-07-08.md`). Trang giữ làm spec nghiệp vụ tham chiếu. Xem [quan hệ module](../quan-he-module-2026-07-07.md).

> 07/7/2026 · Giai đoạn: **v1.5** · WS đào tạo · Bản HTML: [hr.html](hr.html) · Sơ đồ tổng thể: [../so-do-ws-module-feature-2026-07-06.md](../so-do-ws-module-feature-2026-07-06.md)
> Trạng thái: Chưa có trong code — scaffold ở v1.5 (danh mục phòng ban/chức danh có thể lên sớm cùng MVP nếu cần bàn giao hồ sơ liên phòng).

## 1. Vai trò
Hồ sơ **nhân viên**, cây **phòng ban – chức danh** (theo WS0), hợp đồng lao động và chứng chỉ tập huấn.

## 2. Feature / BO / Action

| Feature | BO chính | Action |
|---|---|---|
| `employee` | Nhân viên | view·create·edit·delete |
| `org` | Phòng ban · chức danh (danh mục cây) | view·configure |
| `contract` | Hợp đồng, chứng chỉ tập huấn | view·create·edit·configure |

## 3. Dữ liệu chính

| BO | Trường chính |
|---|---|
| **Nhân viên** | Mã NV · họ tên · CCCD · SĐT/email · **phòng ban** · **chức danh** · **vai trò (nhiều)** · ngày vào làm · tài khoản đăng nhập (liên kết) |
| **Phòng ban / chức danh** | Cây cha–con · loại phòng · chức danh + cấp (theo danh mục WS0) |
| **Hợp đồng** | Loại HĐ · thời hạn · **ngày hết hạn** (nhắc qua notify) · file scan |

## 4. Quy tắc nghiệp vụ
1. Một người: 1 phòng + 1 chức danh chính + **nhiều vai trò** (kiêm nhiệm)
2. GV là nhân viên có hồ sơ nghiệp vụ riêng bên **teacher** — hr giữ hợp đồng lao động, không trùng dữ liệu
3. Thay đổi vai trò/phân quyền ghi nhật ký
4. Hết hạn hợp đồng/chứng chỉ tập huấn → notify

## 5. Liên kết chéo
- **teacher** — GV ↔ nhân viên (mã NV)
- **payroll** — đơn giá, hợp đồng
- **crm** — CTV
- **notify** — nhắc hạn HĐ

## 6. Câu hỏi mở
- Danh sách phòng ban + nhân viên Vĩnh An (việc #3, #4) → seed
- Vị trí kiêm nhiệm thực tế?

## 7. Ma trận phân quyền (→ manifest & seed role)

### 7.1 Khai báo `permissions[]` trong `manifest.json`

```json
[
  {
    "group": "main",
    "feature": "employee",
    "label": "Nhân viên",
    "actions": [
      "view",
      "create",
      "edit",
      "delete"
    ]
  },
  {
    "group": "main",
    "feature": "org",
    "label": "Phòng ban & chức danh",
    "actions": [
      "view",
      "configure"
    ]
  },
  {
    "group": "main",
    "feature": "contract",
    "label": "Hợp đồng",
    "actions": [
      "view",
      "create",
      "edit",
      "configure"
    ]
  }
]
```


### 7.2 Ma trận vai trò × feature (seed `rt_role`)

| Feature | `QTHT` | `GIAM_DOC` | `NHAN_SU` |
|---|:--:|:--:|:--:|
| `employee` | R | R | W |
| `org` | W | R | W |
| `contract` | R | R | W |

> **R** xem · **W** tạo/sửa · **A** duyệt · **—** không có quyền · ¹ dữ liệu **phân công** · ² **của chính mình** · ³ **theo trạng thái** hồ sơ. Vai trò không liệt kê = không có quyền. Permission key đầy đủ: `hr.main.<feature>.<action>`.
