chatbot_server / function /prompt /table /cart_cartItem.py
kltn21110's picture
Upload 239 files
325b400 verified
prompt_cart_management = """
### 1. Giỏ hàng (cart) và Mục trong giỏ hàng (cart_item)
#### A. Quyền hạn và quy tắc hoạt động:
##### **1. Giỏ hàng (cart)**
- **ADMIN Role:**
- Có quyền **tạo mới (INSERT) giỏ hàng** cho bất kỳ người dùng nào.
- Chỉ cho phép tạo giỏ hàng mới khi trong giỏ của họ không còn giỏ nào ở trạng thái **'NEW'**.
- Không có quyền chỉnh sửa giỏ hàng của người dùng khác sau khi tạo.
- **CUSTOMER/SHIPPER Roles:**
- Chỉ được phép **chỉnh sửa (UPDATE)** các giỏ hàng **thuộc về họ** nếu giỏ hàng đang ở trạng thái **'NEW'**.
- Không thể sửa đổi giỏ hàng nếu trạng thái khác **'NEW'**.
- Không thể tạo giỏ hàng mới cho người dùng khác.
- Chỉ cho phép tạo giỏ hàng mới khi trong giỏ của họ không còn giỏ nào ở trạng thái **'NEW'**.
- **Xóa giỏ hàng:**
- Không cho phép xóa vĩnh viễn (`DELETE`).
- Nếu cần đánh dấu giỏ hàng là đã xóa, cập nhật trường `isdeleted = 1` và thiết lập `date_deleted`.
---
##### **2. Mục trong giỏ hàng (cart_item)**
- Khi thêm sản phẩm vào giỏ hàng:
- **Mặc định số lượng (`quantity`) là 1** nếu không được chỉ định.
- Kiểm tra tồn kho của **biến thể sản phẩm (`product_variant`)** trước khi thêm vào giỏ hàng:
- Nếu số lượng sản phẩm không đủ, trả về lỗi:
**"ERROR: Insufficient stock for this product variant."**
- Nếu sản phẩm có trạng thái `isdeleted = 1`, không được phép thêm vào giỏ hàng và trả về lỗi:
**"ERROR: This product variant is no longer available."**
- **Quyền chỉnh sửa giỏ hàng:**
- Người dùng chỉ được phép **cập nhật mục trong giỏ hàng của chính họ**. Không được phép đụng vào giỏ hàng của người khác
- Nếu cố gắng sửa đổi giỏ hàng của người khác, trả về lỗi:
**"ERROR: Unauthorized modification of another user's cart."**
- **Xóa sản phẩm khỏi giỏ hàng:**
- Không cho phép xóa vật lý (`DELETE`).
- Nếu cần xóa sản phẩm khỏi giỏ hàng, thực hiện xóa logic (`is_deleted = 1`, `data_deleted`).
---
### 2. Các bước kiểm tra dữ liệu khi thao tác với giỏ hàng và sản phẩm trong giỏ hàng
#### **A. Kiểm tra trước khi thêm sản phẩm vào giỏ hàng**
1. **Xác định giỏ hàng hợp lệ**:
- Nếu giỏ hàng không thuộc về người dùng hiện tại, trả về lỗi:
**"ERROR: Unauthorized modification of another user's cart."**
- Nếu trạng thái giỏ hàng khác **'NEW'**, không cho phép sửa đổi.
2. **Kiểm tra sản phẩm hợp lệ**:
- Nếu sản phẩm **không tồn tại hoặc đã bị đánh dấu `is_deleted = 1`**, trả về lỗi:
**"ERROR: This product variant is no longer available."**
- Nếu tồn kho **không đủ số lượng yêu cầu**, trả về lỗi:
**"ERROR: Insufficient stock for this product variant."**
3. **Thêm sản phẩm vào giỏ hàng**:
- Nếu số lượng sản phẩm không được cung cấp, thiết lập `quantity = 1` mặc định.
- Nếu sô lượng sản phẩm yêu cầu lớn hơn số sản phẩm còn lại hiện có thì hãy báo lỗi.
---
#### **B. Kiểm tra trước khi cập nhật mục trong giỏ hàng**
1. **Xác minh quyền chỉnh sửa**:
- Nếu giỏ hàng không thuộc về người dùng hiện tại, trả về lỗi:
**"ERROR: Unauthorized modification of another user's cart."**
- Nếu trạng thái giỏ hàng khác **'NEW','PAUSE**, không cho phép cập nhật.
2. **Kiểm tra số lượng sản phẩm hợp lệ**:
- Nếu sản phẩm **không tồn tại hoặc `is_deleted = 1`**, không được phép cập nhật số lượng và trả về lỗi:
**"ERROR: This product variant is no longer available."**
- Nếu tồn kho không đủ số lượng mong muốn, trả về lỗi:
**"ERROR: Insufficient stock for this product variant."**
3. **Thực hiện cập nhật số lượng sản phẩm trong giỏ hàng**.
---
#### **C. Kiểm tra trước khi xóa mục trong giỏ hàng**
1. Không cho phép xóa vật lý (`DELETE`).
2. Nếu muốn xóa, thực hiện xóa logic bằng cách cập nhật:
- `is_deleted = 1`
- `data_deleted = CURRENT_TIMESTAMP`
---
## **. Xác Thực Danh Tính Trước Khi Xử Lý Yêu Cầu**
- **Quy tắc xác thực:**
- Nếu vai trò là **ADMIN**, hệ thống cấp quyền truy cập ngay lập tức.
- Nếu vai trò là **CUSTOMER hoặc SHIPPER**, hệ thống phải **xác minh rằng thông tin yêu cầu thuộc về chính người dùng đang xác thực** (dựa trên `user_id`).
- **Truy vấn thông tin cá nhân qua email hoặc số điện thoại:**
- Hệ thống **phải xác minh email hoặc số điện thoại khớp với tài khoản của user_id đã xác thực**.
- Nếu không khớp, hệ thống **ngay lập tức từ chối truy vấn** với lỗi:
- **"ERROR: Unauthorized access to another user's information."**
🚨 **Lưu ý quan trọng:**
- Nếu thao tác vi phạm quyền hạn hoặc không thỏa mãn điều kiện kiểm tra, **trả về lỗi ngay lập tức và không thực thi truy vấn SQL**.
- Đảm bảo kiểm tra tồn kho trước khi thêm hoặc cập nhật sản phẩm trong giỏ hàng.
- Việc xóa sản phẩm hoặc giỏ hàng chỉ được thực hiện dưới dạng **xóa logic** (`is_deleted = 1`).
"""