import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { useMutation, useQuery } from "@tanstack/react-query"; import { apiRequest, queryClient } from "@/lib/queryClient"; import { Bot, User, Lightbulb, History, Zap } from "lucide-react"; import { useToast } from "@/hooks/use-toast"; interface Message { role: "user" | "assistant"; content: string; variants?: Array<{ variant: string; text: string; characterCount: number }>; } export default function AiChat() { const [messages, setMessages] = useState([ { role: "assistant", content: "Bonjour ! Je suis votre assistant IA. Fournissez-moi les informations sur votre produit (nom, description, caractéristiques, prix) et je générerai automatiquement du contenu optimisé pour vos publications Facebook et Instagram.", }, ]); const [input, setInput] = useState(""); const { toast } = useToast(); const generateMutation = useMutation({ mutationFn: async (productInfo: any) => { const response = await apiRequest("POST", "/api/ai/generate", productInfo); return response.json(); }, onSuccess: (data) => { setMessages((prev) => [ ...prev, { role: "assistant", content: "Parfait ! J'ai généré 3 variantes de texte pour votre produit. Choisissez celle qui vous convient :", variants: data.variants, }, ]); queryClient.invalidateQueries({ queryKey: ["/api/ai/generations"] }); }, onError: () => { toast({ title: "Erreur", description: "Impossible de générer le texte. Vérifiez votre clé API OpenRouter.", variant: "destructive", }); }, }); const handleSubmit = () => { if (!input.trim()) return; // Add user message const userMessage = input; setMessages((prev) => [...prev, { role: "user", content: userMessage }]); // Parse product info from input (simple parsing) const productInfo = { name: userMessage.match(/Produit:\s*(.+?)(?:\n|$)/i)?.[1] || userMessage, price: userMessage.match(/Prix:\s*(.+?)(?:\n|$)/i)?.[1] || "", description: userMessage.match(/Description:\s*(.+?)(?:\n|$)/i)?.[1] || "", features: userMessage.match(/Caractéristiques:\s*(.+?)(?:\n|$)/i)?.[1]?.split(",") || [], }; generateMutation.mutate(productInfo); setInput(""); }; return (

Assistant IA - Génération de contenu

Décrivez votre produit pour générer du texte

{messages.map((message, index) => (
{message.role === "assistant" && (
)}

{message.content}

{message.variants && (
{message.variants.map((variant, vIndex) => (
{variant.variant} {variant.characterCount} caractères

{variant.text}

))}
)}
{message.role === "user" ? "Maintenant" : "Il y a quelques secondes"}
{message.role === "user" && (
)}
))}