{
  "description": "Chi tiết API cho FAQ Manager, hỗ trợ đầy đủ tính năng CRUD và AI Variant Generation.",
  "endpoints": [
    {
      "method": "GET",
      "path": "/api/faqs",
      "description": "Lấy danh sách câu hỏi và câu trả lời có hỗ trợ phân trang, lọc theo category, tìm kiếm theo chuỗi (LIKE %search%) và hiển thị biến thể.",
      "parameters": {
        "category": "string (optional) - Lọc theo danh mục",
        "search": "string (optional) - Tìm kiếm chữ cơ bản",
        "variants": "boolean (default: true) - Trả về cả bản gốc và biến thể (is_variant)",
        "page": "int (default: 1)",
        "limit": "int (default: 50, max: 500)"
      },
      "response_keys": ["faqs", "total", "page", "limit"]
    },
    {
      "method": "POST",
      "path": "/api/faqs",
      "description": "Tạo một FAQ gốc mới (mặc định is_variant = 0, parent_id = NULL).",
      "payload": {
        "question": "string (required)",
        "answer": "string (required)",
        "category": "string (default: 'chung')"
      }
    },
    {
      "method": "PUT",
      "path": "/api/faqs/{faq_id}",
      "description": "Cập nhật nội dung câu hỏi, câu trả lời hoặc danh mục của một FAQ cụ thể."
    },
    {
      "method": "DELETE",
      "path": "/api/faqs/{faq_id}",
      "description": "Xóa một FAQ đồng thời xóa toàn bộ các biến thể con của nó dựa trên cấu trúc quan hệ parent_id."
    },
    {
      "method": "GET",
      "path": "/api/faqs/stats",
      "description": "Truy xuất thống kê tổng quan: Tổng số lượng FAQ, số lượng câu gốc, số biến thể và group theo danh mục."
    },
    {
      "method": "POST",
      "path": "/api/faqs/generate-variants",
      "description": "Gọi tới AI Model (gpt-4.1-mini) để tự động phân tích và sinh biến thể đa phong cách cho một FAQ ID cụ thể.",
      "payload": {
        "faq_id": "string (required)",
        "count": "int (default: 20)"
      }
    },
    {
      "method": "POST",
      "path": "/api/faqs/batch-generate",
      "description": "Hệ thống duyệt qua các câu gốc hiện có và sử dụng AI sinh biến thể hàng loạt.",
      "payload": {
        "category": "string (optional) - Chỉ sinh biến thể cho category cụ thể",
        "count_per_faq": "int (default: 10) - Số lượng biến thể sinh ra cho mỗi câu"
      }
    },
    {
      "method": "POST",
      "path": "/api/faqs/simulate-match",
      "description": "Endpoint thực thi thuật toán Text Search (Word Overlap + Fuzzy Match) trên toàn bộ kho FAQ hiện tại để test chất lượng tìm kiếm.",
      "payload": {
        "query": "string (required)"
      },
      "response_keys": ["query", "matches", "elapsed_ms"]
    }
  ]
}