> ## Documentation Index
> Fetch the complete documentation index at: https://tomotek.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# US-MER-05: Quản lý Danh sách nhân sự

> Merchant quản lý thông tin nhân viên và thiết lập ca làm việc dựa trên khung giờ hoạt động của cửa hàng.

## 1. Điều kiện tiên quyết (Pre-conditions)

* Merchant đã hoàn tất **US-MER-03** (Thiết lập cửa hàng - Giờ mở cửa chung).
* Hệ thống có khung giờ gốc của Shop để làm giới hạn (boundary) cho ca làm việc của nhân viên.

## 2. Tiêu chí chấp nhận (Acceptance Criteria)

> [accordion] US-MER-05.1 & 05.2: Quản lý Hồ sơ nhân sự
>
> * **Thêm mới:** Tên nhân viên (bắt buộc, \<50 ký tự), Chức vụ (không bắt buộc), 1 ảnh chân dung (không bắt buộc, \<5MB).
> * **Quản lý trạng thái:** Cho phép Bật/Tắt (Active/Inactive) hoặc Xóa nhân viên. Khi Inactive, nhân viên không xuất hiện trong danh sách nhận lịch mới trên App khách.

> [accordion] US-MER-05.3 & 05.4: Giao diện Thiết lập ca (Shift Grid)
>
> * **Cấu trúc Grid:** Trục X là các Thứ (T2-CN), Trục Y là Danh sách nhân viên (Ảnh, Tên, Chức vụ).
> * **Chức năng thêm khung giờ (Split Shift):** Tương tự cài đặt cửa hàng, mỗi cell của nhân viên chứa các khung giờ làm việc.
> * **Tương tác:** Cho phép click trực tiếp vào ô Grid để chọn/bỏ chọn khung giờ ca làm việc và nhấn "Lưu" tổng thể.

## 3. Ràng buộc & Xử lý xung đột Ca làm việc (Business Rules)

**1. US-MER-05.5: Logic phân loại thay đổi**

* **Nhóm A: Mở rộng ca (Safe Changes):** Thêm nhân viên mới, chọn thêm khung giờ làm. -> Lưu ngay và sinh thêm Available Slots trên App khách.
* **Nhóm B: Thu hẹp/Xóa ca (Breaking Changes):** Bỏ chọn khung giờ, tắt trạng thái Inactive hoặc Xóa nhân viên. -> Kích hoạt bộ kiểm tra xung đột.

**2. US-MER-05.6: Logic kiểm tra xung đột**

Hệ thống quét toàn bộ Booking (Confirmed/Pending) gắn với Staff\_ID đó:

* Xung đột xảy ra khi Booking rơi vào ngày/giờ mà nhân viên vừa bị xóa ca.
* Hoặc nhân viên bị Inactive/Xóa nhưng vẫn còn lịch hẹn chưa hoàn thành.

**3. US-MER-05.7: Chi tiết các tùy chọn xử lý**

Nếu có xung đột, hiển thị Dialog với 3 hướng giải quyết:

1. **Giữ nguyên booking cũ (Exception):** Lưu ca mới, nhưng sinh ra ngoại lệ cho các ngày đã có booking để nhân viên hoàn thành nốt.
2. **Hủy Booking bị xung đột (Cancellation):** Hủy toàn bộ đơn hàng trong khung giờ bị xóa và thông báo cho khách.
3. **Tự xử lý thủ công (Manual Re-assignment):** Ghi đè lịch mới. Đơn hàng hiển thị cờ `Conflict Staff`. Merchant phải vào Quản lý Booking tự điều phối sang nhân viên khác.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.