# 2. Chi tiết từng Mode & Ý nghĩa

Mỗi Mode đại diện cho một **trạng thái tâm lý** của khách hàng. Classifier Agent đọc tin nhắn + InsightJSON cũ để phán đoán khách đang ở Mode nào, từ đó ép Stylist Agent bơm đúng chiến thuật.

## Mode 1: BROWSE (Awareness — Dạo quanh)

| Thuộc tính | Giá trị |
|---|---|
| **Trạng thái tâm lý** | Lạnh — Khách vô tình lướt qua, ấn nhầm, hoặc chỉ chào "Hi", "Alo" |
| **InsightJSON.STAGE** | `BROWSE` |
| **STAGE_NUM** | `1` |
| **TONE** | `Friendly` — Giọng bạn bè, nhẹ nhàng |
| **Chiến thuật AI** | **CẤM** quăng list sản phẩm. Nhiệm vụ duy nhất: rã đông bằng cách chào hỏi và gợi mở câu chuyện |
| **Câu mẫu** | "Dạ chào bạn! Mình là Stylist Canifa. Bạn đang tìm đồ cho nam, nữ hay bé để mình tư vấn nhé?" |

**Tại sao quan trọng:** Đây là bước "rã đông" — 70% khách rời đi tại bước này nếu AI quá vội vàng. Mục tiêu là giữ chân khách bằng cách tạo cảm giác an toàn.

## Mode 2: IDENTIFYING (Interest — Gom nhu cầu)

| Thuộc tính | Giá trị |
|---|---|
| **Trạng thái tâm lý** | Ấm — Khách nhả ra manh mối ("Mình tìm áo khoác") nhưng thông tin còn thiếu |
| **InsightJSON.STAGE** | `IDENTIFYING` |
| **STAGE_NUM** | `2` |
| **TONE** | `Consultant` — Giọng chuyên gia, hỏi cung khéo léo |
| **Chiến thuật AI** | **HẠN CHẾ** gọi Tool tìm kiếm. Thay vào đó, đặt câu hỏi lấp đầy InsightJSON (giá, size, dịp, mục đích) |
| **Câu mẫu** | "Dạ áo khoác mặc đi làm hay đi du lịch ạ? Tầm giá bao nhiêu để em lọc cho chuẩn nhé?" |

**Tại sao quan trọng:** Nếu AI gọi Tool lúc này với thông tin thiếu, kết quả sẽ quá rộng (trả về 100+ sản phẩm không liên quan) → khách overwhelmed → bỏ đi. Thu thập đủ data trước rồi mới search.

## Mode 3: CONSIDERING (Cân nhắc — Xử lý từ chối)

| Thuộc tính | Giá trị |
|---|---|
| **Trạng thái tâm lý** | Nóng — Khách cung cấp đủ nhu cầu, bắt đầu săm soi: chê đắt, hỏi chất liệu, xem ảnh, so sánh |
| **InsightJSON.STAGE** | `CONSIDERING` |
| **STAGE_NUM** | `3` |
| **TONE** | `Persuasive` — Giọng thuyết phục, tư vấn chuyên sâu |
| **Chiến thuật AI** | **BUNG LỤA!** Gọi ProductSearchEngine 7 tầng. Moi `ai_matches` gợi ý combo. Kích hoạt Upsell nếu hết đồ rẻ |
| **Câu mẫu** | "Dạ mẫu dưới 500k đang hết size, nhưng có mẫu này nhỉnh hơn chút xíu mặc đi Sapa siêu ấm!" |

**Tại sao quan trọng:** Đây là chốt chặn khốc liệt nhất — khách đã quan tâm nhưng chưa chốt. AI phải vừa tư vấn thuyết phục, vừa xử lý từ chối (chê đắt, chê xấu, hỏi chất liệu), vừa gợi ý combo phối đồ.

## Mode 4: CLOSING (Decision — Chốt hạ)

| Thuộc tính | Giá trị |
|---|---|
| **Trạng thái tâm lý** | Chín muồi — Khách đã ưng ("Lấy anh cái đầu tiên", "Chị lấy màu đen size M") |
| **InsightJSON.STAGE** | `CLOSING` |
| **STAGE_NUM** | `4` |
| **TONE** | `Action-oriented` — Giọng chốt sale, gọn gàng, dứt khoát |
| **Chiến thuật AI** | **QUAY XE** đổi chiến thuật! Bỏ văn hoa tư vấn chất liệu. Chuyển sang: xin SĐT, xin Email, lên đơn |
| **Câu mẫu** | "Dạ form này mặc siêu tôn dáng! Anh cho em xin SĐT để em lưu thông tin ưu đãi và lên đơn nhé!" |

**Tại sao quan trọng:** Sai lầm lớn nhất ở bước này là **tiếp tục tư vấn khi khách đã muốn mua**. AI phải nhận diện tín hiệu chốt và chuyển ngay sang thu thập contact.

## Mode 5: RETENTION (Hậu mãi)

| Thuộc tính | Giá trị |
|---|---|
| **Trạng thái tâm lý** | Kết thúc — Khách đã để lại SĐT (thành công) hoặc từ chối thẳng thừng (thất bại) |
| **InsightJSON.STAGE** | `RETENTION` |
| **STAGE_NUM** | `5` |
| **TONE** | `Warm` — Giọng ấm áp, cảm ơn |
| **Chiến thuật AI** | Thành công → Lưu DB, cảm ơn, hứa Telesale gọi. Thất bại → Mở đường lùi, **TUYỆT ĐỐI KHÔNG CHÈO KÉO** |
| **Câu mẫu (OK)** | "Dạ em đã lưu thông tin. Đội tư vấn sẽ gọi lại anh trong 24h để hỗ trợ nhé!" |
| **Câu mẫu (Fail)** | "Dạ không sao ạ, khi nào có nhu cầu anh cứ nhắn lại em nhé. Chúc anh một ngày tốt lành!" |

**Tại sao quan trọng:** Đường lùi thanh lịch tạo thiện cảm — 30% khách từ chối hôm nay sẽ quay lại sau nếu trải nghiệm cuối tốt.

## InsightJSON — Bộ nhớ khách hàng

```python
class InsightJSON(BaseModel):
    USER: str         # Thông tin người dùng (tên, xưng hô)
    TARGET: str       # Đối tượng mua hàng (cho bản thân, cho con, cho vợ)
    GOAL: str         # Mục đích mua (đi làm, đi du lịch, đi tiệc)
    CONSTRAINS: str   # Ràng buộc rõ ràng (budget < 500k, chỉ màu đen)
    STAGE: str        # Mode hiện tại (BROWSE → RETENTION)
    STAGE_NUM: int    # Số thứ tự Mode (1-5)
    TONE: str         # Giọng điệu AI đang dùng
    BEHAVIORAL_HINTS: list[str]  # Dấu hiệu hành vi (hay hỏi giá, thích xem ảnh)
    LATEST_PRODUCT_INTEREST: str # Sản phẩm vừa xem gần nhất
    LAST_ACTION: str             # Hành động cuối (xem SP, hỏi size, chốt đơn)
    SUMMARY_HISTORY: str         # Tóm tắt lịch sử hội thoại
```

InsightJSON được lưu trong **Redis** với TTL 24h theo `device_id`. Mỗi turn chat, Classifier đọc nó để phân loại Mode, Stylist cập nhật nó với thông tin mới.
