# 4. Upsell & Nghiệp vụ Bán hàng

Upsell là cơ chế **tự động nâng giá** khi hệ thống không tìm đủ sản phẩm trong tầm giá khách yêu cầu. Đây là chiến thuật kinh doanh cốt lõi, được tích hợp trực tiếp vào thuật toán tìm kiếm.

## Tại sao cần Upsell?

Trong thực tế, **60% khách hàng đưa ra budget thấp hơn khả năng chi trả thực**. Khi AI chỉ search đúng budget, hệ thống sẽ:
- Trả về ít kết quả (hoặc hết hàng)
- AI buộc phải nói "Dạ em hết hàng" → MẤT KHÁCH

Upsell giải quyết vấn đề này bằng cách **nới dần biên giá** qua 7 tầng Cascading Search.

## Cơ chế Upsell trong Cascading Search

| Tầng | Giá tối đa | Chiến thuật |
|---|---|---|
| 1-2 | `price_max` (đúng budget) | Tìm chính xác ý khách |
| 3-4 | `price_max` (nới lỏng filter) | Bỏ tags, bỏ gender nhưng giữ giá |
| **5** | `price_max * 1.5` | **Upsell nhẹ** — "Nhỉnh hơn chút xíu" |
| **6** | `price_max * 2.0` | **Upsell mạnh** — "Đắt hơn nhưng xài 3 mùa" |
| **7** | Không giới hạn | **Hail Mary** — Lôi đồ xịn nhất ra |

## Stylist AI xử lý Upsell như thế nào?

Khi ProductSearchEngine trả về sản phẩm từ tầng 5-7 (vượt budget), Stylist Agent **không bao giờ** nói thẳng "Đồ này vượt ngân sách". Thay vào đó, AI sử dụng các chiến thuật:

| Tầng | Chiến thuật Stylist | Câu mẫu |
|---|---|---|
| Tầng 5 (1.5x) | So sánh giá trị | "Dạ mẫu dưới 500k đang hết, nhưng mẫu này chỉ nhỉnh hơn 200k mà ấm gấp đôi!" |
| Tầng 6 (2x) | Đầu tư dài hạn | "Mẫu này giá cao hơn nhưng chất liệu len merino xài được 3 mùa đông luôn anh!" |
| Tầng 7 (no limit) | Premium positioning | "Đây là best-seller mùa này, chất lượng thuộc top và đang còn đủ size!" |

## Guardrails chống lạm dụng Upsell

Để tránh AI biến thành "bán hàng ép" gây phản cảm:

- **Tầng 5-6**: Stylist phải đề cập lý do vượt giá (hết hàng rẻ, chất lượng tốt hơn)
- **Tầng 7**: Chỉ gợi ý 1-2 sản phẩm, kèm disclaimer "Anh xem thử, không thích cũng không sao"
- **Nếu khách nói "đắt quá" 2 lần**: AI phải dừng Upsell, chuyển sang gợi ý đồ sale hoặc combo tiết kiệm
- **Tuyệt đối KHÔNG**: Tự ý đề cập giảm giá, voucher, hoặc khuyến mãi nếu không có trong data

## Combo & Cross-sell

Ngoài Upsell, Stylist còn sử dụng **ai_matches** (dữ liệu phối đồ từ Fashion Matching Engine) để gợi ý combo:

```
Khách tìm: Áo khoác nam
→ ai_matches gợi ý: + Quần khaki (phối đi làm) + Khăn len (phối đi Sapa)
→ Stylist: "Anh ơi áo này phối với quần khaki Canifa thì siêu thanh lịch luôn, để em gửi link cả set nhé!"
```

File tham chiếu: `backend/agent/lead_stage_agent/product_search_engine.py` — hàm `_cascading_search()`
