Spaces:
Sleeping
Sleeping
| 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`). | |
| """ |