# Tài Liệu Yêu Cầu - Website Tiệm Nail
## Giới Thiệu
Website cho tiệm nail cung cấp thông tin về dịch vụ, giới thiệu công việc, và cho phép khách hàng đặt lịch hẹn trực tuyến. Hệ thống bao gồm chức năng quản lý booking với xác nhận qua SMS và giao diện quản trị cho shop.
## Thuật Ngữ
- **Hệ Thống Booking**: Hệ thống đặt lịch hẹn trực tuyến
- **Khách Hàng**: Khách hàng sử dụng website để đặt lịch
- **Nhân Viên**: Nhân viên làm nail tại tiệm
- **Quản Trị Viên**: Quản trị viên của tiệm nail
- **Dịch Vụ SMS**: Dịch vụ gửi tin nhắn SMS tự động
- **Lịch Hẹn**: Lịch hẹn đã được đặt
## Yêu Cầu
### Yêu Cầu 1: Trang Giới Thiệu
**User Story:** Là một khách hàng tiềm năng, tôi muốn xem thông tin về tiệm nail, để tôi có thể hiểu về dịch vụ và quyết định có sử dụng hay không.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI hiển thị trang About Us với thông tin về tiệm
2. Hệ Thống Booking PHẢI hiển thị trang Our Work với hình ảnh các công việc đã làm
3. Hệ Thống Booking PHẢI hiển thị trang Menus với danh sách dịch vụ và giá cả
4. Hệ Thống Booking PHẢI hiển thị trang Store Policy với chính sách của tiệm
5. Hệ Thống Booking PHẢI hiển thị trang Contact Us với thông tin liên hệ và địa chỉ
### Yêu Cầu 2: Đặt Lịch Hẹn
**User Story:** Là một khách hàng, tôi muốn đặt lịch hẹn trực tuyến, để tôi có thể chọn dịch vụ, nhân viên, và thời gian phù hợp mà không cần gọi điện.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI hiển thị trang Book Now với form đặt lịch
2. KHI Khách Hàng truy cập form đặt lịch, Hệ Thống Booking PHẢI hiển thị danh sách dịch vụ có sẵn để chọn
3. KHI Khách Hàng chọn một dịch vụ, Hệ Thống Booking PHẢI hiển thị danh sách nhân viên có sẵn để chọn
4. KHI Khách Hàng chọn một nhân viên, Hệ Thống Booking PHẢI hiển thị các ngày có sẵn để chọn
5. KHI Khách Hàng chọn một ngày, Hệ Thống Booking PHẢI hiển thị các khung giờ có sẵn cho ngày đó
6. Hệ Thống Booking PHẢI yêu cầu Khách Hàng cung cấp thông tin liên hệ bao gồm số điện thoại trước khi submit
7. KHI Khách Hàng submit form đặt lịch với thông tin hợp lệ, Hệ Thống Booking PHẢI tạo Lịch Hẹn với trạng thái chờ xác nhận
### Yêu Cầu 3: Xác Nhận Đặt Lịch Tự Động
**User Story:** Là một khách hàng, tôi muốn nhận xác nhận ngay sau khi đặt lịch, để tôi biết rằng yêu cầu của tôi đã được tiệm nhận.
#### Tiêu Chí Chấp Nhận
1. KHI Khách Hàng submit booking thành công, Hệ Thống Booking PHẢI gửi SMS xác nhận đến số điện thoại Khách Hàng trong vòng 60 giây
2. Hệ Thống Booking PHẢI bao gồm chi tiết lịch hẹn trong tin nhắn SMS xác nhận
3. Hệ Thống Booking PHẢI bao gồm thông báo trạng thái chờ xác nhận trong tin nhắn SMS
4. NẾU Dịch Vụ SMS không gửi được tin nhắn, THÌ Hệ Thống Booking PHẢI ghi log lỗi và hiển thị thông báo cho Quản Trị Viên
### Yêu Cầu 4: Quản Lý Booking Cho Shop
**User Story:** Là quản trị viên tiệm, tôi muốn xem và quản lý các booking, để tôi có thể xác nhận hoặc từ chối lịch hẹn dựa trên tình hình thực tế.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI cung cấp giao diện quản trị cho Quản Trị Viên để xem tất cả lịch hẹn
2. Hệ Thống Booking PHẢI hiển thị chi tiết lịch hẹn bao gồm thông tin khách hàng, dịch vụ, nhân viên, ngày và giờ
3. KHI Quản Trị Viên xem một lịch hẹn đang chờ, Hệ Thống Booking PHẢI hiển thị nút Confirm và Reject
4. KHI Quản Trị Viên nhấn nút Confirm, Hệ Thống Booking PHẢI cập nhật trạng thái lịch hẹn thành đã xác nhận
5. KHI Quản Trị Viên nhấn nút Reject, Hệ Thống Booking PHẢI cập nhật trạng thái lịch hẹn thành đã từ chối
6. Hệ Thống Booking PHẢI hiển thị trạng thái lịch hẹn là chờ xác nhận, đã xác nhận, hoặc đã từ chối
### Yêu Cầu 5: Thông Báo Trạng Thái Booking
**User Story:** Là một khách hàng, tôi muốn nhận thông báo về trạng thái booking của mình, để tôi biết lịch hẹn đã được xác nhận hay bị từ chối.
#### Tiêu Chí Chấp Nhận
1. KHI Quản Trị Viên xác nhận một lịch hẹn, Hệ Thống Booking PHẢI gửi SMS thông báo đến số điện thoại Khách Hàng trong vòng 60 giây
2. KHI Quản Trị Viên từ chối một lịch hẹn, Hệ Thống Booking PHẢI gửi SMS thông báo đến số điện thoại Khách Hàng trong vòng 60 giây
3. Hệ Thống Booking PHẢI bao gồm trạng thái lịch hẹn trong tin nhắn SMS thông báo
4. Hệ Thống Booking PHẢI bao gồm chi tiết lịch hẹn trong tin nhắn SMS thông báo
5. NẾU Dịch Vụ SMS không gửi được thông báo, THÌ Hệ Thống Booking PHẢI ghi log lỗi và thử gửi lại một lần sau 120 giây
### Yêu Cầu 6: Hiển Thị Responsive
**User Story:** Là một khách hàng sử dụng điện thoại, tôi muốn website hiển thị tốt trên thiết bị di động, để tôi có thể dễ dàng đặt lịch từ bất kỳ đâu.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI hiển thị tất cả các trang với thiết kế responsive cho thiết bị di động
2. Hệ Thống Booking PHẢI hiển thị tất cả các trang với thiết kế responsive cho máy tính bảng
3. Hệ Thống Booking PHẢI hiển thị tất cả các trang với thiết kế responsive cho máy tính để bàn
4. KHI Khách Hàng truy cập website từ bất kỳ thiết bị nào, Hệ Thống Booking PHẢI điều chỉnh layout để phù hợp với kích thước màn hình
5. Hệ Thống Booking PHẢI duy trì đầy đủ chức năng trên tất cả các loại thiết bị
### Yêu Cầu 7: Quản Lý Dịch Vụ và Nhân Viên
**User Story:** Là quản trị viên tiệm, tôi muốn quản lý danh sách dịch vụ và nhân viên, để tôi có thể cập nhật thông tin khi có thay đổi.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI cung cấp giao diện quản trị cho Quản Trị Viên để thêm dịch vụ mới
2. Hệ Thống Booking PHẢI cung cấp giao diện quản trị cho Quản Trị Viên để chỉnh sửa dịch vụ hiện có
3. Hệ Thống Booking PHẢI cung cấp giao diện quản trị cho Quản Trị Viên để xóa dịch vụ
4. Hệ Thống Booking PHẢI cung cấp giao diện quản trị cho Quản Trị Viên để thêm nhân viên mới
5. Hệ Thống Booking PHẢI cung cấp giao diện quản trị cho Quản Trị Viên để chỉnh sửa thông tin nhân viên
6. Hệ Thống Booking PHẢI cung cấp giao diện quản trị cho Quản Trị Viên để thiết lập lịch làm việc của nhân viên
### Yêu Cầu 8: Ngăn Chặn Booking Trùng Lặp
**User Story:** Là quản trị viên tiệm, tôi muốn hệ thống ngăn chặn việc đặt lịch trùng nhau, để tránh tình trạng một nhân viên bị book nhiều lịch cùng lúc.
#### Tiêu Chí Chấp Nhận
1. KHI Khách Hàng chọn một nhân viên và ngày, Hệ Thống Booking PHẢI chỉ hiển thị các khung giờ còn trống cho nhân viên đó
2. Hệ Thống Booking PHẢI loại trừ các khung giờ đã có lịch hẹn được xác nhận
3. Hệ Thống Booking PHẢI loại trừ các khung giờ đã có lịch hẹn đang chờ xác nhận
4. KHI Khách Hàng cố gắng đặt một khung giờ không còn trống, Hệ Thống Booking PHẢI hiển thị thông báo lỗi và ngăn không cho submit
5. Hệ Thống Booking PHẢI làm mới danh sách khung giờ còn trống mỗi 30 giây để phản ánh tình trạng thực tế
---
## Yêu Cầu Bổ Sung: Quản Lý Hủy Lịch và Xử Lý Đột Xuất
### Yêu Cầu 9: Chính Sách Hủy Lịch
**User Story:** Là một quản trị viên, tôi muốn có chính sách hủy lịch rõ ràng, để tôi có thể xử lý công bằng khi khách hàng hủy đột xuất.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI hỗ trợ cấu hình chính sách hủy lịch với các mức phí khác nhau
2. KHI Quản Trị Viên hủy một Lịch Hẹn, Hệ Thống Booking PHẢI tính toán phí hủy dựa trên thời gian còn lại đến lịch hẹn
3. KHI thời gian còn lại lớn hơn 24 giờ, Hệ Thống Booking PHẢI áp dụng phí hủy 0%
4. KHI thời gian còn lại từ 2 đến 24 giờ, Hệ Thống Booking PHẢI áp dụng phí hủy 50% giá dịch vụ
5. KHI thời gian còn lại nhỏ hơn 2 giờ, Hệ Thống Booking PHẢI áp dụng phí hủy 100% giá dịch vụ
6. Hệ Thống Booking PHẢI lưu trữ lý do hủy và người thực hiện hủy (khách hàng hoặc quản trị viên)
7. KHI Lịch Hẹn được hủy, Hệ Thống Booking PHẢI gửi SMS thông báo đến Khách Hàng với thông tin phí hủy
### Yêu Cầu 10: Xử Lý Khách Không Đến (No-Show)
**User Story:** Là một quản trị viên, tôi muốn đánh dấu khách không đến, để tôi có thể theo dõi độ tin cậy của khách hàng.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI cho phép Quản Trị Viên đánh dấu Lịch Hẹn là NO_SHOW
2. KHI Quản Trị Viên đánh dấu NO_SHOW, Hệ Thống Booking PHẢI cập nhật trạng thái Lịch Hẹn thành NO_SHOW
3. KHI Lịch Hẹn được đánh dấu NO_SHOW, Hệ Thống Booking PHẢI tăng số lần no-show trong lịch sử Khách Hàng
4. KHI Lịch Hẹn được đánh dấu NO_SHOW, Hệ Thống Booking PHẢI gửi SMS thông báo đến Khách Hàng
5. KHI Khách Hàng có số lần no-show lớn hơn 2, Hệ Thống Booking PHẢI yêu cầu đặt cọc cho các lịch hẹn tiếp theo
### Yêu Cầu 11: Lịch Sử và Độ Tin Cậy Khách Hàng
**User Story:** Là một quản trị viên, tôi muốn xem lịch sử đặt lịch của khách hàng, để tôi có thể đánh giá độ tin cậy và đưa ra quyết định phù hợp.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI theo dõi tổng số lịch hẹn, số lần hủy, và số lần no-show cho mỗi Khách Hàng
2. Hệ Thống Booking PHẢI tính toán điểm độ tin cậy dựa trên công thức: (Completed / Total) × 100
3. KHI Quản Trị Viên xem thông tin Khách Hàng, Hệ Thống Booking PHẢI hiển thị lịch sử đầy đủ bao gồm tất cả các lịch hẹn
4. Hệ Thống Booking PHẢI hiển thị cảnh báo KHI Khách Hàng có điểm độ tin cậy thấp hơn 70%
5. KHI Khách Hàng có số lần no-show lớn hơn 5, Hệ Thống Booking PHẢI không cho phép đặt lịch online
### Yêu Cầu 12: Hệ Thống Nhắc Nhở SMS
**User Story:** Là một quản trị viên, tôi muốn gửi SMS nhắc nhở tự động, để giảm tỷ lệ khách không đến.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI gửi SMS nhắc nhở đến Khách Hàng 24 giờ trước thời gian hẹn
2. Hệ Thống Booking PHẢI gửi SMS nhắc nhở đến Khách Hàng 2 giờ trước thời gian hẹn
3. KHI gửi SMS nhắc nhở, Hệ Thống Booking PHẢI bao gồm thông tin chi tiết về lịch hẹn
4. Hệ Thống Booking PHẢI chỉ gửi nhắc nhở cho các Lịch Hẹn có trạng thái CONFIRMED
5. Hệ Thống Booking PHẢI ghi nhận thời gian gửi nhắc nhở để tránh gửi trùng lặp
6. KHI SMS nhắc nhở gửi thất bại, Hệ Thống Booking PHẢI thử lại tối đa 3 lần
### Yêu Cầu 13: Danh Sách Chờ (Waitlist)
**User Story:** Là một khách hàng, tôi muốn đăng ký vào danh sách chờ khi slot đã đầy, để tôi có thể nhận được thông báo khi có người hủy.
#### Tiêu Chí Chấp Nhận
1. KHI Khách Hàng chọn một khung giờ đã đầy, Hệ Thống Booking PHẢI hiển thị tùy chọn "Tham gia danh sách chờ"
2. KHI Khách Hàng tham gia danh sách chờ, Hệ Thống Booking PHẢI lưu thông tin Khách Hàng và slot mong muốn
3. KHI có Lịch Hẹn bị hủy, Hệ Thống Booking PHẢI gửi SMS thông báo đến Khách Hàng đầu tiên trong danh sách chờ
4. Hệ Thống Booking PHẢI cho Khách Hàng 30 phút để xác nhận đặt lịch từ danh sách chờ
5. KHI Khách Hàng không phản hồi trong 30 phút, Hệ Thống Booking PHẢI chuyển sang Khách Hàng tiếp theo trong danh sách chờ
### Yêu Cầu 14: Hệ Thống Đặt Cọc
**User Story:** Là một quản trị viên, tôi muốn yêu cầu đặt cọc cho một số trường hợp, để đảm bảo khách hàng cam kết với lịch hẹn.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI yêu cầu đặt cọc KHI Khách Hàng là khách hàng mới (lần đầu đặt lịch)
2. Hệ Thống Booking PHẢI yêu cầu đặt cọc KHI Khách Hàng có lịch sử no-show lớn hơn 2 lần
3. Hệ Thống Booking PHẢI yêu cầu đặt cọc KHI giá trị dịch vụ lớn hơn 500,000 VNĐ
4. KHI yêu cầu đặt cọc, Hệ Thống Booking PHẢI hiển thị hướng dẫn thanh toán rõ ràng
5. Hệ Thống Booking PHẢI cho phép Quản Trị Viên xác nhận đã nhận được tiền cọc
6. KHI tiền cọc được xác nhận, Hệ Thống Booking PHẢI chuyển trạng thái Lịch Hẹn từ PENDING sang CONFIRMED
7. KHI Lịch Hẹn bị hủy trước 24 giờ, Hệ Thống Booking PHẢI hoàn lại 100% tiền cọc
8. KHI Lịch Hẹn bị hủy trong vòng 24 giờ, Hệ Thống Booking PHẢI giữ lại 50% tiền cọc
### Yêu Cầu 15: Quản Lý Hủy Lịch Từ Phía Tiệm
**User Story:** Là một quản trị viên, tôi muốn có thể hủy lịch hẹn từ phía tiệm, để xử lý các tình huống đột xuất như nhân viên ốm hoặc sự cố.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI cho phép Quản Trị Viên hủy Lịch Hẹn với lý do từ phía tiệm
2. KHI Quản Trị Viên hủy Lịch Hẹn, Hệ Thống Booking PHẢI đánh dấu rõ "Cancelled by salon"
3. KHI Lịch Hẹn bị hủy bởi tiệm, Hệ Thống Booking PHẢI gửi SMS xin lỗi đến Khách Hàng
4. KHI Lịch Hẹn bị hủy bởi tiệm, Hệ Thống Booking PHẢI đề xuất các slot khác có sẵn
5. Hệ Thống Booking PHẢI không tính phí hủy KHI Lịch Hẹn bị hủy bởi tiệm
6. Hệ Thống Booking PHẢI hoàn lại 100% tiền cọc (nếu có) KHI Lịch Hẹn bị hủy bởi tiệm
### Yêu Cầu 16: Báo Cáo và Phân Tích
**User Story:** Là một quản trị viên, tôi muốn xem báo cáo về tỷ lệ hủy và no-show, để đánh giá hiệu quả của chính sách và cải thiện.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI tính toán và hiển thị tỷ lệ no-show: (No-shows / Total bookings) × 100
2. Hệ Thống Booking PHẢI tính toán và hiển thị tỷ lệ hủy: (Cancellations / Total bookings) × 100
3. Hệ Thống Booking PHẢI tính toán và hiển thị tỷ lệ hủy muộn: (Late cancellations / Total cancellations) × 100
4. Hệ Thống Booking PHẢI hiển thị biểu đồ xu hướng theo thời gian cho các chỉ số trên
5. Hệ Thống Booking PHẢI cho phép Quản Trị Viên xuất báo cáo dưới dạng PDF hoặc Excel
6. Hệ Thống Booking PHẢI hiển thị danh sách khách hàng có độ tin cậy thấp nhất
7. Hệ Thống Booking PHẢI tính toán tác động doanh thu của các lịch hẹn bị hủy
### Yêu Cầu 17: Cấu Hình Chính Sách
**User Story:** Là một quản trị viên, tôi muốn có thể cấu hình các chính sách, để điều chỉnh phù hợp với nhu cầu kinh doanh.
#### Tiêu Chí Chấp Nhận
1. Hệ Thống Booking PHẢI cho phép Quản Trị Viên cấu hình thời gian hủy miễn phí (mặc định 24 giờ)
2. Hệ Thống Booking PHẢI cho phép Quản Trị Viên cấu hình phần trăm phí hủy cho từng mức thời gian
3. Hệ Thống Booking PHẢI cho phép Quản Trị Viên bật/tắt tính năng nhắc nhở SMS
4. Hệ Thống Booking PHẢI cho phép Quản Trị Viên cấu hình thời gian gửi nhắc nhở (mặc định 24h và 2h)
5. Hệ Thống Booking PHẢI cho phép Quản Trị Viên cấu hình ngưỡng yêu cầu đặt cọc
6. Hệ Thống Booking PHẢI cho phép Quản Trị Viên cấu hình phần trăm đặt cọc (mặc định 30%)
7. KHI Quản Trị Viên thay đổi cấu hình, Hệ Thống Booking PHẢI áp dụng ngay lập tức cho các lịch hẹn mới
---
## Tóm Tắt Yêu Cầu Mới
**Tổng số yêu cầu mới:** 9 (Yêu cầu 9-17)
**Phân loại theo độ ưu tiên:**
- **Cao (Critical):** Yêu cầu 9, 10, 11, 12 - Xử lý hủy lịch và no-show
- **Trung bình (Important):** Yêu cầu 13, 14, 15 - Waitlist, deposit, admin cancel
- **Thấp (Nice to have):** Yêu cầu 16, 17 - Analytics và configuration
**Tác động kinh doanh:**
- Giảm tỷ lệ no-show từ 15-20% xuống 5-10%
- Bảo vệ doanh thu khi khách hủy đột xuất
- Cải thiện trải nghiệm khách hàng với nhắc nhở tự động
- Tăng hiệu quả sử dụng slot với waitlist system