# Constants & Enums

## Tổng quan

Thư mục `src/app/constant/` chứa các hằng số, enum và giá trị cấu hình được sử dụng xuyên suốt ứng dụng. Các constant được nhóm theo domain: Shopee, TikTok, Lazada, User, Storage, và Crypt.

```
src/app/constant/
├── shopee.js      # URL patterns, usage types & limits cho Shopee
├── tiktok.js      # URL patterns, usage types & limits cho TikTok
├── lazada.js      # URL patterns cho Lazada
├── user.js        # Các gói người dùng (plan)
├── storage.js     # Keys cho localStorage & sessionStorage
└── crypt.js       # Key mã hóa API
```

## Shopee (`shopee.js`)

### `SHOPEE_SPY_ENABLED`

| Thuộc tính | Giá trị |
|------------|---------|
| Type | `boolean` |
| Default | `false` |

Flag bật/tắt tính năng spy (theo dõi). Hiện tại đang tắt.

### `SHOPEE_HEADER_KEYS`

Các key header HTTP dùng trong request đến API Shopee.

| Key | Giá trị | Mô tả |
|-----|---------|--------|
| `IGNORE` | `af-ac-ignore` | Header báo bỏ qua anti-crawl |
| `GET` | `af-ac-enc-dat` | Header chứa dữ liệu mã hóa anti-crawl |

Sử dụng trong: `src/app/api/shopee/`, content scripts Shopee

### `SHOPEE_URLS`

URL patterns để intercept request qua `webRequest` API.

| Key | URL Pattern | Mô tả |
|-----|------------|--------|
| `PRODUCT_GET_PC` | `https://shopee.vn/api/v4/pdp/get_pc*` | API lấy chi tiết sản phẩm (trang khách) |
| `SEARCH_SEARCH_ITEMS` | `https://shopee.vn/api/v4/search/search_items*` | API tìm kiếm sản phẩm |
| `CLIENT_GLOBAL` | `https://shopee.vn/api*` | Tất cả API client Shopee |
| `SELLER_ORDER_PRINT_JOB` | `https://banhang.shopee.vn/api/v3/logistics/get_sd_job*` | API lấy job in đơn hàng |
| `SELLER_ORDER_PRINT_PDF` | `https://banhang.shopee.vn/api/v3/logistics/download_sd_job*` | API tải PDF đơn hàng |
| `CHAT_WEBCHAT` | `https://banhang.shopee.vn/webchat/api/*/messages*` | API chat webchat |

Sử dụng trong: `src/background/`, `src/content/shopee/`

### `SHOPEE_USAGE_TYPE`

Enum các loại usage cần tracking.

| Key | Giá trị | Mô tả |
|-----|---------|--------|
| `productClone` | `'productClone'` | Clone sản phẩm |
| `downloadImage` | `'downloadImage'` | Tải hình ảnh |
| `downloadVideo` | `'downloadVideo'` | Tải video |

Sử dụng trong: `src/app/pinia/usage`, `src/app/service/`

### `SHOPEE_USAGE_LIMITS`

Giới hạn sử dụng theo gói user cho từng tính năng.

**productClone:**

| Gói | dailyLimit | waitFor (giây) | totalMax |
|-----|-----------|----------------|----------|
| Free | 20 | 60 | 200 |
| Vip | Infinity | 0 | - |
| VipPlus | Infinity | 0 | - |

**downloadImage:**

| Gói | dailyLimit | waitFor (giây) |
|-----|-----------|----------------|
| Free | 50 | 20 |
| Vip | Infinity | 0 |
| VipPlus | Infinity | 0 |

**downloadVideo:**

| Gói | dailyLimit | waitFor (giây) |
|-----|-----------|----------------|
| Free | 50 | 30 |
| Vip | Infinity | 0 |
| VipPlus | Infinity | 0 |

Sử dụng trong: `src/app/pinia/usage`, `src/app/service/`

### `SHOPEE_AUTO_RUN_LIMITS`

Giới hạn số lượt chạy mỗi lần cho các tính năng tự động, theo gói user.

| Tính năng | Vip | VipPlus |
|-----------|-----|---------|
| `ratingOrder` | 10 lượt/lần chạy | Không giới hạn |
| `replyRating` | 10 lượt/lần chạy | Không giới hạn |
| `sendMessage` | 50 lượt/lần chạy | Không giới hạn |

**Type:** `ShopeeAutoRunLimits` (định nghĩa trong `src/app/types/Constant/Usage.js`)

Sử dụng trong: `RatingOrder.vue`, `ReplyRating.vue`, `SendMessage/Send.vue` — hiển thị Alert cảnh báo khi gần đạt giới hạn, disable nút khi đạt giới hạn.

## TikTok (`tiktok.js`)

### `TIKTOK_USAGE_TYPE`

Enum các loại usage cho TikTok.

| Key | Giá trị | Mô tả |
|-----|---------|--------|
| `productClone` | `'productClone'` | Clone sản phẩm TikTok → Shopee |

### `TIKTOK_USAGE_LIMITS`

Giới hạn sử dụng cho TikTok.

**productClone:**

| Gói | dailyLimit | waitFor (giây) | totalMax |
|-----|-----------|----------------|----------|
| Free | 2 | 300 | 20 |
| Vip | 10 | 0 | - |
| VipPlus | 100 | 0 | - |

### `TIKTOK_URLS`

URL patterns cho TikTok.

| Key | URL Pattern | Mô tả |
|-----|------------|--------|
| `SELLER_PRINT_PDF` | `https://seller-vn.tiktok.com/easesafe/oec_fulfillment_doc_tts/object/*` | API tải PDF đơn hàng TikTok |

Sử dụng trong: `src/background/`, `src/content/tiktok/`

## Lazada (`lazada.js`)

### `LAZADA_URLS`

URL patterns cho Lazada.

| Key | URL Pattern | Mô tả |
|-----|------------|--------|
| `SELLER_PRINT_PDF` | `https://sellercenter.lazada.vn/oss/galaxy/proxy/logistics-waybill-oss*` | API tải PDF đơn hàng Lazada |

Sử dụng trong: `src/background/`, `src/content/lazada/`

## User (`user.js`)

Định nghĩa các gói người dùng (plan).

| Constant | Giá trị | Mô tả |
|----------|---------|--------|
| `USER_PLAN_FREE` | `'Free'` | Gói miễn phí |
| `USER_PLAN_VIP` | `'Vip'` | Gói VIP |
| `USER_PLAN_PLUS` | `'VipPlus'` | Gói VIP Plus |

Sử dụng trong: `src/app/pinia/usage`, `src/app/store/user`, các component hiển thị plan

## Storage (`storage.js`)

### `STORAGE_KEYS`

Tập trung tất cả key cho localStorage và sessionStorage, tránh xung đột và dễ quản lý.

#### `LOCAL_STORAGE`

| Key | Giá trị | Mô tả |
|-----|---------|--------|
| `SHOPEE_PRODUCT_CLONE_EDIT_DATA` | `shopee-product-clone-edit-data` | Dữ liệu chỉnh sửa khi clone sản phẩm |
| `SHOPEE_FLASHSALE_PRICE_BASE_ORGINAL_BY` | `shopee-flashsale:price-base-orginal-by` | Cơ sở giá flash sale |
| `SHOPEE_FLASHSALE_SET_METHOD` | `shopee-flashsale:set-method` | Phương thức set flash sale |
| `SHOPEE_FLASHSALE_BEFORE_HOUR_SET` | `shopee-flashsale:before-hour-set` | Số giờ trước khi set flash sale |
| `SHOPEE_FLASHSALE_DELAY_TIME` | `shopee-flashsale:delay-time` | Thời gian delay giữa các lần set |
| `SHOPEE_FLASHSALE_PERCENT_MIN` | `shopee-flashsale:percent-min` | Phần trăm giảm giá tối thiểu |
| `SHOPEE_FLASHSALE_CAMPAIGN_TIME_FLASHSALE_BEFORE` | `shopee-flashsale:campaign-time-flashsale-before` | Thời gian trước flash sale campaign |
| `SHOPEE_FLASHSALE_CAMPAIGN_DAY_SCHEDULER_BEFORE` | `shopee-flashsale:campaign-day-scheduler-before` | Số ngày trước khi lên lịch campaign |
| `SHOPEE_FLASHSALE_CAMPAIGN_TIME_SCHEDULER_BEFORE` | `shopee-flashsale:campaign-time-scheduler-before` | Thời gian trước khi lên lịch campaign |
| `BANNER_POPUP(key)` | `banner-popup-{key}` | Trạng thái banner popup (dynamic key) |
| `BANNER_NAV(key)` | `banner-nav-{key}` | Trạng thái banner navigation (dynamic key) |

#### `SESSION_STORAGE`

| Key | Giá trị | Mô tả |
|-----|---------|--------|
| `SHOPEE_PRODUCT_CLONE_SHOP_WAREHOUSE` | `shopee-product-clone-shop-warehouse` | Danh sách warehouse của shop khi clone |
| `SHOPEE_FLASHSALE_SCHEDULER_SLOT` | `shopee-flashsale:scheduler-slot` | Slot lịch flash sale |
| `SHOPEE_FLASHSALE_TIME_SLOT` | `shopee-flashsale:time-slot` | Khung giờ flash sale |
| `SHOPEE_FLASHSALE_CAMPAIGN_SAVE` | `shopee-flashsale:campaign-save` | Campaign flash sale đã lưu |
| `SHOPEE_FLASHSALE_CAMPAIGN_LIST` | `shopee-flashsale:campaign-list` | Danh sách campaign |
| `SHOPEE_FLASHSALE_LIST_FS_SAVE` | `shopee-flashsale:list-fs-save` | Danh sách flash sale đã lưu |
| `SHOPEE_FLASHSALE_LIST_FS_SCHEDULER` | `shopee-flashsale:list-fs-scheduler` | Danh sách flash sale lên lịch |
| `SHOPEE_FLASHSALE_LIST_FS_NEXT` | `shopee-flashsale:list-fs-next` | Danh sách flash sale sắp tới |
| `SHOPEE_FLASHSALE_LIST_FS_CURRENT` | `shopee-flashsale:list-fs-current` | Danh sách flash sale hiện tại |
| `SHOPEE_FLASHSALE_LIST_FS_END` | `shopee-flashsale:list-fs-end` | Danh sách flash sale đã kết thúc |
| `SHOPEE_FLASHSALE_TAB_ACTIVE` | `shopee-flashsale:tab-active` | Tab flash sale đang active |
| `SHOPEE_FLASHSALE_TASK_LASTEST` | `shopee-flashsale:task-lastest` | Task flash sale mới nhất |
| `PRINTER_PDF_LIST_CONFIG` | `printer-pdf:list-config` | Cấu hình danh sách máy in PDF |

Sử dụng trong: `src/app/views/`, `src/app/components/Shopee/`, `src/app/pinia/`

## Crypt (`crypt.js`)

### `CRYPT_API_KEY`

| Thuộc tính | Giá trị |
|------------|---------|
| Type | `string` |
| Giá trị | `'funtionz'` |

Key dùng để mã hóa/giải mã dữ liệu API nội bộ.

Sử dụng trong: `src/app/api/`, `src/app/lib/`
