> ## 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-OWN-09: Đặt lịch Dịch vụ Thường (Time-based)

> Chủ nuôi chọn dịch vụ, nhân viên và thời gian đặt lịch thực hiện các dịch vụ tính theo giờ (Spa, Grooming...).

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

* Merchant đã hoàn tất thiết lập **US-MER-05** (Nhân viên & Kỹ năng) và **US-MER-06** (Cấu hình Dịch vụ/Slot).
* **Cửa sổ đặt lịch:** Người dùng chỉ có thể đặt lịch trong vòng **14 ngày tới** tính từ ngày hiện tại.

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

> **US-OWN-09.1: Chọn số lượng thú cưng**
>
> * Người dùng chọn số lượng thú cưng tham gia dịch vụ (VD: 1, 2, 3...).
> * **Ràng buộc:** Số lượng không được vượt quá *Sức chứa tối đa (Max Capacity)* của dịch vụ trong khung giờ đó, trừ khi Merchant cấu hình cho phép Over-booking.

> **US-OWN-09.2: Chọn ngày đặt lịch (Date Picker)**
>
> * Hiển thị danh sách 14 ngày tiếp theo dưới dạng Card (Scroll ngang) hoặc Lịch (Calendar).
> * Chỉ các ngày Merchant có trạng thái **Mở cửa** mới có thể chọn. Ngày đóng cửa hoặc hết sạch chỗ sẽ bị làm mờ (Disabled).

> **US-OWN-09.5: Ẩn danh nhân viên & Giữ chỗ tạm thời (Soft Lock)**
>
> * **Ẩn danh (Staff Anonymity):** Pet Owner tuyệt đối không thấy tên nhân viên phục vụ. Giao diện chỉ hiển thị luồng: `[Số lượng] -> [Ngày] -> [Giờ]`.
> * **Giữ chỗ tạm thời (Soft Lock):** Khi chọn một khung giờ và sang bước tiếp, hệ thống tạm giữ (Lock) 1 suất của nhân viên phù hợp trong vòng **5 phút** để tránh bị khách khác tranh chỗ.

> **US-OWN-09.8: Thông tin tổng kết (Summary)**
>
> Trước khi hoàn tất, màn hình hiển thị:
>
> * **Ô nhập ghi chú:** Lời nhắn cho Merchant.
> * **Tổng tiền:** Giá dịch vụ × Số lượng thú.
> * **Thanh toán:** Bắt buộc thanh toán trả trước 100% giá trị dịch vụ.

## 3. Khả dụng & Cơ chế quá tải (Business Rules)

**1. US-OWN-09.3: Logic tính toán Khả dụng (Availability)**

Khung giờ (Slot) được coi là khả dụng ("Còn chỗ") nếu thỏa mãn ĐỒNG THỜI 2 điều kiện:

1. **Sức chứa:** *(Tổng capacity) - (Số thú đã đặt)* ≥ Số lượng thú khách đang đặt.
2. **Nhân lực:** Có ít nhất **01 nhân viên** (có kỹ năng phù hợp) đang trạng thái "Rảnh" xuyên suốt thời lượng dịch vụ.

**2. US-OWN-09.4: Cơ chế Quá tải (Over-booking Handling)**

Nếu Merchant bật *"Cho phép đặt quá tải"*:

* Slot hết chỗ vẫn cho phép chọn nhưng hiển thị Cảnh báo: *"Khung giờ này đang có nhiều lượt đặt, có thể ảnh hưởng đến trải nghiệm. Bạn có chắc chắn muốn tiếp tục?"*
* **Xử lý:** Đơn hàng này sẽ bị treo ở trạng thái `Chờ xác nhận (Pending)`, không tự động gán nhân viên. Merchant phải tự duyệt thủ công.

**3. US-OWN-09.7: Xác nhận & Tự động gán (Auto-Assign Algorithm)**

Sau khi người dùng nhấn "Xác nhận đặt lịch":

* Trừ đơn *Quá tải*, hệ thống chạy thuật toán tự động phân công nhân viên (`Staff_ID`).
* **Ưu tiên:** Chọn nhân viên có ít lịch nhất trong ngày để cân bằng tải, hoặc Xoay vòng (Round-robin).


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