# 6. Troubleshooting & Gotchas

## AI cứ quăng list sản phẩm khi khách mới chào

**Triệu chứng:** Khách nhắn "Hi" nhưng AI nhảy vào Mode 3 luôn, quăng ra 5 sản phẩm.

**Nguyên nhân:** Classifier Agent không phân loại đúng → `tool_name` không null khi lẽ ra phải Early Exit.

**Sửa:** Mở `prompts.py`, tìm `CLASSIFIER_SYSTEM_PROMPT`, thêm dòng CHỮ HOA:
```
- NẾU TIN NHẮN CHỈ LÀ CHÀO HỎI (hi, hello, alo, chào shop), tool_name PHẢI = null
```

## AI không chuyển sang Mode 4 (CLOSING) dù khách muốn mua

**Triệu chứng:** Khách nói "OK lấy luôn" nhưng AI tiếp tục giới thiệu thêm sản phẩm.

**Nguyên nhân:** InsightJSON.STAGE vẫn ở `CONSIDERING` vì Classifier chưa nhận ra tín hiệu chốt.

**Sửa:** Mở `prompts.py`, tìm `CLASSIFIER_SYSTEM_PROMPT`, bổ sung các ví dụ tín hiệu chốt:
```
- CÁC TÍN HIỆU CHỐT (chuyển sang CLOSING): "lấy luôn", "ok mua", "cho anh cái đó",
  "lấy anh cái đầu", "chị lấy", "đặt hàng", "order", "mua ngay"
```

## Upsell quá mạnh — khách phản hồi tiêu cực

**Triệu chứng:** Khách chê đắt 2 lần nhưng AI vẫn tiếp tục gợi ý đồ đắt hơn.

**Nguyên nhân:** Stylist prompt chưa có guardrail xử lý từ chối giá lặp lại.

**Sửa:** Thêm vào `STYLIST_SYSTEM_PROMPT`:
```
- NẾU KHÁCH NÓI "đắt quá" HOẶC "không đủ tiền" >= 2 LẦN: DỪNG UPSELL.
  Chuyển sang gợi ý đồ đang giảm giá hoặc combo tiết kiệm.
```

## InsightJSON bị reset giữa chừng

**Triệu chứng:** AI quên hết thông tin khách đã cung cấp, hỏi lại từ đầu.

**Nguyên nhân:**
1. Redis TTL hết hạn (default 24h)
2. `device_id` thay đổi giữa phiên (khách đổi trình duyệt)
3. Bug trong Stylist output — `updated_insight` trả về null

**Sửa:** Kiểm tra Redis key `lead_insight:{device_id}`. Nếu key tồn tại nhưng AI vẫn quên → check log `[STYLIST]` xem `updated_insight` có null không.

## Cascading Search trả về quá ít kết quả

**Triệu chứng:** AI nói "Em tìm thấy 1 sản phẩm phù hợp" dù catalog có hàng nghìn mẫu.

**Nguyên nhân:** Tags trong `InferredSearchArgs` quá hẹp, kết hợp với giá thấp → Tầng 1-4 đều empty.

**Sửa:** Kiểm tra log `[SEARCH]` xem tầng nào trả về kết quả. Nếu chỉ tầng 6-7 mới có → tags cần nới lỏng hoặc data catalog cần bổ sung tags mới.

## Performance chậm (> 5 giây)

**Nguyên nhân phổ biến:**

| Bottleneck | Metric | Ngưỡng |
|---|---|---|
| Classifier LLM | `classifier_ms` | Nên < 1500ms |
| Stylist LLM | `stylist_ms` | Nên < 2000ms |
| StarRocks query | `tool_ms` | Nên < 500ms |
| Canifa Stock API | (trong tool_ms) | Nên < 1000ms |

**Sửa:** Kiểm tra Langfuse trace. Nếu `classifier_ms` > 2000ms → LLM model quá nặng, cân nhắc dùng model nhẹ hơn cho Classifier.
