# 2. Kiến trúc & Luồng dữ liệu (Data Flow)

Kiến trúc cốt lõi sử dụng `StateGraph` từ LangGraph với 2 node chính. Không sử dụng ReAct loop truyền thống để giảm độ trễ và tránh ảo giác vòng lặp.

**Các bước cụ thể:**
1. **Tiếp nhận:** State `LeadStageState` lưu trữ `messages`, `user_insight`, `tool_result`, và `diagnostics`.
2. **Định tuyến (Classifier):** AI quyết định gọi công cụ như `lead_search_tool`, `canifa_knowledge_search` (truy xuất RAG), hoặc `check_is_stock`.
3. **Thực thi Công cụ:** Python tool chạy trực tiếp. Nếu tìm kiến thức (RAG), tool query StarRocks qua hàm `approx_cosine_similarity`.
4. **Tổng hợp (Stylist):** Đọc toàn bộ tool result, formatting lại sản phẩm và đưa ra câu trả lời cuối, đồng thời trích xuất `InsightJSON` lưu vào state.