# Sao Chép Sản Phẩm Shopee (Clone Product)

## Tổng quan

Chức năng **Sao Chép Sản Phẩm** cho phép người bán sao chép (clone) sản phẩm từ bất kỳ shop Shopee nào sang shop của mình. Hỗ trợ tùy chỉnh thông tin sản phẩm trước khi đăng, xử lý ảnh nâng cao, và tích hợp AI viết lại nội dung.

Ngoài ra, trang này còn hỗ trợ chuyển đổi sản phẩm sang **TikTok Shop** và **Lazada**.

---

## Giao diện Tab

**Đường dẫn:** `Shopee > Sản phẩm > Clone`

Trang gồm các tab:

| Tab | Mô tả |
|-----|-------|
| **Sản phẩm Shopee** | Sao chép sản phẩm vào shop Shopee của mình |
| **Shopee → TikTok** | Chuyển sản phẩm Shopee lên TikTok Shop |
| **Shopee → Lazada** | Chuyển sản phẩm Shopee lên Lazada |
| **Shop Shopee** | Quản lý shop Shopee đang kết nối |
| **Affiliate** | Liên kết affiliate (chế độ Beta) |

Trang nhận `productId` và `shopId` từ query URL để tải thông tin sản phẩm nguồn.

---

## Tab Sản phẩm Shopee (Chi tiết)

### 1. Thông tin sản phẩm

Hiển thị và cho phép chỉnh sửa thông tin sản phẩm nguồn trước khi clone:

| Trường | Mô tả |
|--------|-------|
| **SKU** | Mã SKU sản phẩm (mặc định là Item ID gốc) |
| **Tên sản phẩm** | Tiêu đề sản phẩm (có thể chỉnh sửa) |
| **Mô tả** | Mô tả chi tiết sản phẩm (xem/sửa qua popup) |

### 2. Tùy chỉnh tiêu đề & mô tả

| Tùy chọn | Mô tả |
|-----------|-------|
| **Thêm trước tiêu đề** | Thêm text vào đầu tên sản phẩm |
| **Thêm sau tiêu đề** | Thêm text vào cuối tên sản phẩm |
| **Thêm trước mô tả** | Thêm text vào đầu mô tả |
| **Thêm sau mô tả** | Thêm text vào cuối mô tả |

### 3. Tùy chỉnh thông số

| Thông số | Mô tả |
|----------|-------|
| **Cân nặng mặc định** | Ghi đè cân nặng sản phẩm (gram) |
| **Tồn kho mặc định** | Ghi đè số lượng tồn kho |
| **Ngày hết hạn** | Số ngày hết hạn (dùng cho sản phẩm có attribute Expiry Date) |
| **Điều chỉnh giá** | Công thức thay đổi giá (hỗ trợ nhiều định dạng, xem tooltip) |
| **Thay thế SĐT** | Thay thế số điện thoại trong mô tả |

### 4. Tùy chọn nâng cao (Checkbox)

| Tùy chọn | Mô tả |
|-----------|-------|
| **Giá trước giảm** | Sử dụng giá trước khi giảm giá làm giá bán |
| **Xoay ảnh** | Xoay/đảo thứ tự ảnh sản phẩm |
| **Mô tả có hình ảnh** | Giữ nguyên description JSON (mô tả kèm ảnh xen kẽ) |
| **Bỏ qua SKU trùng** | Kiểm tra SKU trùng trước khi clone, nếu trùng thì hủy |
| **AI viết tiêu đề** | Dùng GPT viết lại tiêu đề sản phẩm (yêu cầu usage) |
| **AI viết mô tả** | Dùng GPT viết lại mô tả sản phẩm (yêu cầu usage) |
| **Đổi MD5 ảnh** | Thay đổi MD5 hash của ảnh để tránh phát hiện trùng |
| **Watermark** | Thêm watermark vào ảnh sản phẩm (cấu hình tại Settings > Shopee Clone) |

### 5. Cấu hình đăng sản phẩm

| Cấu hình | Mô tả |
|-----------|-------|
| **Kho hàng** | Chọn kho hàng (nếu shop có warehouse) |
| **Đơn vị vận chuyển** | Chọn kênh logistics (bắt buộc ít nhất 1) |
| **Lấy tồn kho gốc** | Lấy số lượng tồn kho thực tế từ sản phẩm nguồn |
| **Ẩn sản phẩm** | Đăng ở trạng thái unlisted (không hiển thị trên shop) |

---

## Công cụ bổ sung

Dropdown **"Công cụ"** cung cấp:

| Công cụ | Mô tả |
|---------|-------|
| **Tải tất cả ảnh** | Tải xuống toàn bộ ảnh sản phẩm dạng ZIP |
| **Xem tất cả ảnh** | Mở popup xem toàn bộ ảnh sản phẩm |
| **Tải video** | Tải video sản phẩm (nếu có) |
| **Spy sản phẩm** | Xem chi tiết phân tích sản phẩm (chế độ Beta) |
| **Lấy đánh giá** | Thu thập đánh giá/review của sản phẩm |

---

## Đồng bộ Video

Khi sản phẩm nguồn có video, hiển thị thêm khu vực **Đồng bộ Video**:

1. Tìm kiếm sản phẩm trong shop của bạn (theo tên hoặc ID)
2. Chọn sản phẩm đích
3. Nhấn **"Đồng bộ video"** để copy video từ sản phẩm nguồn sang sản phẩm đích

---

## Quy trình Clone sản phẩm

Khi nhấn nút **"Copy sang Shopee"**, hệ thống thực hiện:

1. **Kiểm tra usage** — Xác minh quyền sử dụng chức năng clone
2. **Kiểm tra SKU trùng** (nếu bật) — Tìm kiếm SKU trên shop, hủy nếu trùng
3. **Kiểm tra logistics** — Phải chọn ít nhất 1 đơn vị vận chuyển
4. **Lấy tồn kho** (nếu bật) — Fetch stock thực tế từ sản phẩm nguồn
5. **Lấy attributes** — Lấy danh sách thuộc tính theo category
6. **Render payload** — Chuyển đổi dữ liệu sản phẩm sang định dạng Shopee Seller
7. **Xử lý ảnh** — Áp dụng watermark / đổi MD5 / upload lại ảnh (concurrency 4)
8. **AI viết lại** (nếu bật) — GPT viết lại tiêu đề và/hoặc mô tả
9. **Tạo sản phẩm** — Gọi API Shopee Seller tạo sản phẩm mới (retry tối đa 3 lần)
10. **Ghi log usage** — Lưu lịch sử clone vào PouchDB
11. **Mở trang sản phẩm** — Chuyển đến trang quản lý sản phẩm mới trên Shopee Seller

### Xử lý lỗi tự động (Auto-retry)

Hệ thống tự động xử lý và retry khi gặp các lỗi phổ biến:

| Lỗi | Xử lý tự động |
|-----|---------------|
| **Image is invalid** | Loại bỏ ảnh lỗi và thử lại |
| **Image for product description** | Bỏ description JSON |
| **Brand** | Reset brand_id về 0 |
| **Product is duplicated** | Thêm ký tự vào tên sản phẩm |
| **Hỏa tốc** | Loại kênh Hỏa Tốc khỏi logistics |
| **Size chart** | Thêm size chart mặc định |
| **Condition** | Set condition = 1 |
| **Create product (chung)** | Xóa video, sau đó xóa attributes |
| **Weight/dimension out of range** | Chuyển sang kênh logistics mặc định |
| **Attribute info invalid** | Chuyển đổi date format sang Unix, sau đó loại bỏ attribute không bắt buộc |
| **Listing limit** | Dừng (shop đã đạt giới hạn sản phẩm) |

### Mã lỗi

| Mã lỗi | Mô tả |
|---------|-------|
| `100011445` | Shop đang tắt |
| `100010006` | Shop đã đạt giới hạn sản phẩm tối đa |
| `100021445` | Shop chưa bật đơn vị vận chuyển |
| `100010239` | Logistics không hợp lệ |
| `100010243` | Clone quá nhanh, cần chờ |
| `100010242` | Sản phẩm bị trùng |

---

## Lưu trữ cấu hình

- **Cấu hình clone** (editData) được lưu vào `localStorage` và Vuex, tự động khôi phục khi mở lại
- **Kho hàng** được lưu vào `sessionStorage`
- **Logistics** được lưu trong Vuex store

---

## Lưu ý quan trọng

1. **Yêu cầu đăng nhập Seller:** Phải đăng nhập Shopee Seller Center trước khi clone
2. **Logistics bắt buộc:** Phải chọn ít nhất 1 đơn vị vận chuyển
3. **Usage giới hạn:** Chức năng clone, tải ảnh, tải video đều có giới hạn usage theo gói tài khoản
4. **AI Writer:** Tính năng GPT viết lại tiêu đề/mô tả yêu cầu usage riêng
5. **Ảnh concurrency:** Xử lý ảnh (watermark/MD5) chạy đồng thời tối đa 4 ảnh
6. **Auto-retry:** Hệ thống tự động retry tối đa 3 lần với timeout 30 giây mỗi lần
