// frontend/src/App.jsx import React, { useState } from 'react'; import './App.css'; import { useAuth } from './context/AuthContext'; function App() { const [messages, setMessages] = useState([]); const [prompt, setPrompt] = useState(''); const [isLoading, setIsLoading] = useState(false); const { token } = useAuth(); const handleFeedback = async (message, rating) => { if (!token) { alert("Vous devez être connecté pour noter une réponse."); return; } try { let questionText = ''; const messageIndex = messages.indexOf(message); for (let i = messageIndex - 1; i >= 0; i--) { if (messages[i].sender === 'user') { questionText = messages[i].text; break; } } if (!questionText) { alert("Impossible de trouver la question originale."); return; } await fetch('http://localhost:8000/api/v1/feedback', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, body: JSON.stringify({ question: questionText, answer: message.text, rating: rating }) }); alert("Merci pour votre retour !"); } catch (error) { console.error("Erreur lors de l'envoi du feedback:", error); } }; const handleSubmit = async (e) => { e.preventDefault(); if (!prompt.trim() || isLoading) return; const newUserMessage = { sender: 'user', text: prompt }; setMessages(prev => [...prev, newUserMessage]); const currentPrompt = prompt; setPrompt(''); setIsLoading(true); try { const response = await fetch('http://localhost:8000/api/v1/ask', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ question: currentPrompt }), }); if (!response.ok) { throw new Error(`Erreur HTTP: ${response.status}`); } const data = await response.json(); const apiResponse = { sender: 'bot', text: data.answer, sources: data.sources }; setMessages(prev => [...prev, apiResponse]); } catch (error) { console.error("Erreur lors de l'appel à l'API:", error); const errorResponse = { sender: 'bot', text: "Désolé, une erreur est survenue. Veuillez réessayer." }; setMessages(prev => [...prev, errorResponse]); } finally { setIsLoading(false); } }; return (
{msg.text}
{msg.sender === 'bot' && msg.sources && msg.sources.length > 0 && (