# Vòng lặp Học tập & Tích hợp CRM (Deep Dive)

Một trong những chức năng cốt lõi của tính năng Social Inbox không chỉ là quản lý tin nhắn hiển thị mà còn **đưa dữ liệu mạng xã hội vào luồng học tập của AI (Learning Loop)** và kết nối với các **hệ thống Quản lý Khách hàng (CRM)**.

## 1. Cơ chế Learning Loop cho Social Messages

Trong module API route, việc xử lý học tập được thực thi ngầm qua `BackgroundTasks` trong FastAPI. Hàm `_feed_to_feedback_tracker` đóng vai trò là cầu nối giữa Social Inbox và hệ thống theo dõi phản hồi (`feedback_tracker`) chung của Canifa.

### Luồng xử lý tin nhắn và bình luận tiêu cực
Hệ thống được lập trình để *chỉ quan tâm* đến các thông điệp có `sentiment == "negative"`. Khi phát hiện phân tích cảm xúc trả về trạng thái tiêu cực, đoạn dữ liệu ngay lập tức được ánh xạ và đẩy vào Tracker để AI học tập:

*   **Trace ID:** Định dạng theo kiểu `social_{platform}_{timestamp}` (Ví dụ: `social_facebook_1699999999`) đảm bảo tính unique.
*   **Rating:** Cố định ở mức `0` (tương đương với mức độ hài lòng thấp nhất / dislike).
*   **User Category:** Đánh dấu nguồn gốc là `social_feedback`.
*   **AI Category:** Gắn nhãn loại vấn đề là `social_negative_comment`.
*   **AI Severity:** Đặt mặc định là `low` để theo dõi nhưng không gửi cảnh báo khẩn cấp trừ khi có logic đánh giá sâu hơn.
*   **AI Summary:** Tạo tóm tắt tự động theo cấu trúc gồm nền tảng, tên người dùng, và trích xuất 100 ký tự đầu tiên của nội dung phản ánh (VD: `[FACEBOOK] Negative comment từ @NguyenVanA: Chất liệu áo len năm nay...`).

Nhờ dữ liệu này, Product Owner có thể nhìn ra bức tranh tổng thể các phàn nàn trên các kênh Social ngay trong Dashboard phân tích chung, qua đó tinh chỉnh prompt cho Chatbot hoặc cải thiện sản phẩm nội bộ.

## 2. Tích hợp Thu thập Lead thông qua CRM Tool

Bên cạnh việc lắng nghe thụ động tại Inbox, Chatbot AI Agent có thể chủ động thu thập thông tin khách hàng thông qua LangChain Tool tích hợp là `collect_customer_info` (nằm trong thư mục `backend/agent/tools/customer_info_tool.py`).

### Cơ chế hoạt động của CRM Tool
*   **Điều kiện kích hoạt:** Được gọi chủ động bằng LLM Agent khi khách hàng (User) diễn đạt ý định cần tư vấn sâu hơn, nhận mã khuyến mãi hoặc đặt hàng ngay trong đoạn chat/comment.
*   **Input parameters:** Thông qua Tool Call của LangChain, AI sẽ trích xuất `name` (Bắt buộc), `phone` (Bắt buộc), và `email` (Không bắt buộc) trực tiếp từ ngữ cảnh hội thoại.
*   **Payload Output:**
    ```json
    {
      "customer_name": "Nguyen Van A",
      "phone_number": "0987654321",
      "email_address": "a@example.com",
      "status": "pending_consultation"
    }
    ```
*   **Cơ chế lưu trữ CRM:** Tool hiện đang tạo Record và in ra log console (Ví dụ: `[TOOL] --- 📝 Thu thập thông tin khách hàng...`). Cấu trúc đã được design ready-to-use, chỉ cần thay đổi phần giả lập (mock) bằng các HTTP POST đến nền tảng CRM thực tế của doanh nghiệp (như HubSpot, Salesforce, KiotViet CRM, hoặc Google Sheets) để nhân viên CSKH có thể tiếp cận ngay lập tức. Cici sẽ phản hồi xác nhận lưu thông tin thành công cho khách hàng sau khi hoàn tất.