# Lazada - Tính năng

## Tổng quan

AutoShopee Kit tích hợp Lazada với các tính năng chính:
- **Clone sản phẩm** từ Shopee sang Lazada (qua AutoShopee API)
- **Content script** inject vào trang Lazada (affiliate tracking)
- **Seller API** lấy thông tin shop Lazada

## Clone sản phẩm (Shopee -> Lazada)

### Luồng hoạt động

```
Shopee Product (Extension)
       │
       ▼
getProductShopee            ← Lấy sản phẩm Shopee từ Vuex store
       │
       ▼
importProduct()             ← Gửi lên AutoShopee API để chuẩn hóa dữ liệu
       │
       ▼
saveUpload() / handlerUpload()  ← Lưu hoặc upload trực tiếp lên Lazada
       │
       ▼
Lazada Seller Center        ← Mở trang sản phẩm trên Lazada
```

### Component: `src/app/components/Lazada/Shopee/Upload.vue`

Giao diện upload sản phẩm từ Shopee sang Lazada:

| Thành phần | Mô tả |
|---|---|
| **Chọn shop** | Select shop Lazada đã kết nối OAuth |
| **Lưu & Chỉnh sửa** | Lưu sản phẩm lên AutoShopee server để chỉnh sửa trước khi upload |
| **Upload trực tiếp** | Upload sản phẩm trực tiếp lên Lazada (tốn score) |
| **Thêm shop** | Link đến trang OAuth kết nối shop Lazada |
| **Mua score** | Link đến trang nâng cấp khi hết score |

### Mixin: `src/app/components/Lazada/Shopee/mixin.js`

Logic chính của quá trình clone:

1. **Lấy sản phẩm Shopee**: Từ Vuex getter `getProductShopee`
2. **Refactor sản phẩm**: Chuẩn hóa weight (mặc định 10g), dimension (mặc định 10x10x10)
3. **Import sản phẩm**: Gọi `importProduct()` gửi dữ liệu lên AutoShopee API
4. **Chuẩn bị source info**: Đánh dấu nguồn gốc sản phẩm (`from`, `shopId`, `productId`, `url`), flag `isQueue: true`
5. **Hai chế độ upload**:
   - **Lưu & Chỉnh sửa** (`saveUpload`): Gửi lên server, mở trang chỉnh sửa tại `{appHost}/lazada/upload/product/edit/{id}`
   - **Upload trực tiếp** (`handlerUpload`): Gọi `handlerUpload()` API, mở trang sản phẩm trên Lazada Seller Center tại `{lazada.seller}/apps/product/publish?productId={item_id}`
6. **Score system**: Mỗi lần upload trực tiếp tốn 1 score

### Quản lý shop Lazada

- Kết nối shop qua OAuth: `{appHost}/lazada/shop/oauth`
- Lấy danh sách shop: Vuex action `LazadaGetListShop`
- Chọn shop: Vuex action `LazadaSelectShop`
- Getter danh sách: `getLazadaShopList`
- Getter shop đang chọn: `getLazadaShopSelect`

### So sánh với TikTok Upload

| Tính năng | Lazada | TikTok |
|---|---|---|
| Chọn shop | Co | Co |
| Chọn kho hàng | Khong | Co |
| Lưu & Chỉnh sửa | Co | Co |
| Upload trực tiếp | Co | Co |
| Score system | Co | Co |

## Content Script Lazada

### `src/content/lazada/loader.js`

Content script inject vào trang Lazada thực hiện **affiliate tracking**:

1. **Tạo UUID**: Mỗi phiên tạo một `affId` duy nhất
2. **Lấy URL affiliate**: Gọi `bridgeGetAffiliateUrl('lazada')` qua webext-bridge đến background
3. **Inject iframe**: Tạo iframe ẩn (0x0 pixel) với URL affiliate, append vào `document.body`
4. **Retry**: Thực thi ngay khi load và retry sau 5 giây
5. **Bỏ qua**: Không inject nếu URL chứa `/api/` hoặc iframe đã tồn tại

## API Lazada

### Client API (`src/app/api/lazada/client/`)

**`init.js`** - Khởi tạo Axios instance:
- Base URL: `configLazadaApi.home` (Lazada domain)
- Timeout: 10 giây
- Sử dụng `fetch-adapter` cho Chrome MV3
- Auto-unwrap response data

### Seller API (`src/app/api/lazada/seller/`)

**`init.js`** - Khởi tạo Axios instance cho Lazada Seller Center:
- Base URL: `LAZADA_DOMAIN_SELLER`
- Sử dụng `fetch-adapter`

**`get.js`** - API seller:
- `getLazadaSellerInfo()`: Lấy thông tin seller từ `/site/globalData`, trả về `result.globalData`

## Settings liên quan

Lazada có các setting riêng trong `src/app/plugins/setting/setting.js`:

| Setting | Key | Type | Default |
|---|---|---|---|
| `lazadaShopId` | `lazada_shop_id` | string | `''` |
| `lazadaShopName` | `lazada_shop_name` | string | `''` |
| `saveHistoryPrint.lazada` | (trong `platformSetting`) | bool | `true` |
| `affTrackingLazadaTime` | `tracker_id_lz_last_time` | number | `0` |

## Cấu trúc file

```
src/app/
├── components/Lazada/
│   └── Shopee/
│       ├── Upload.vue             # UI upload Shopee → Lazada
│       └── mixin.js               # Logic upload sản phẩm
├── api/lazada/
│   ├── client/
│   │   └── init.js                # Axios instance Lazada client
│   └── seller/
│       ├── init.js                # Axios instance Lazada seller
│       └── get.js                 # API thông tin seller
src/content/
└── lazada/
    └── loader.js                  # Content script affiliate tracking
```
