// src/components/AdminPanel.js import React, { useState, useEffect } from 'react'; import './AdminPanel.css'; function AdminPanel({ isCollapsed, onToggleCollapse, userName, onLogout,setPage }) { const [documents, setDocuments] = useState([]); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const [uploadStatus, setUploadStatus] = useState(null); const [uploadData, setUploadData] = useState({ title: '', tags: '' }); const [selectedFile, setSelectedFile] = useState(null); useEffect(() => { fetchDocuments(); }, []); const fetchDocuments = async () => { setIsLoading(true); try { const response = await fetch('/api/admin/knowledge', { credentials: 'include' }); if (response.ok) { const data = await response.json(); setDocuments(data.documents); } else { const errorData = await response.json(); setError(`Erreur: ${errorData.detail || 'Impossible de charger les documents'}`); } } catch (err) { setError(`Erreur: ${err.message}`); } finally { setIsLoading(false); } }; const handleInputChange = (e) => { const { name, value } = e.target; setUploadData({ ...uploadData, [name]: value }); }; const handleFileChange = (e) => { setSelectedFile(e.target.files[0]); }; const handleUpload = async (e) => { e.preventDefault(); if (!selectedFile) { setUploadStatus('Veuillez sélectionner un fichier PDF'); return; } setUploadStatus('Téléchargement en cours...'); const formData = new FormData(); formData.append('file', selectedFile); formData.append('title', uploadData.title || selectedFile.name); formData.append('tags', uploadData.tags); try { const response = await fetch('/api/admin/knowledge/upload', { method: 'POST', credentials: 'include', body: formData }); const data = await response.json(); if (response.ok) { setUploadStatus('Document téléchargé avec succès!'); setUploadData({ title: '', tags: '' }); setSelectedFile(null); // Recharger la liste des documents } else { setUploadStatus(`Erreur: ${data.detail || 'Échec du téléchargement'}`); } } catch (err) { setUploadStatus(`Erreur: ${err.message}`); } }; const handleDelete = async (docId) => { if (!window.confirm('Êtes-vous sûr de vouloir supprimer ce document?')) { return; } try { const response = await fetch(`/api/admin/knowledge/${docId}`, { method: 'DELETE', credentials: 'include' }); if (response.ok) { setDocuments(documents.filter(doc => doc.id !== docId)); setUploadStatus('Document supprimé avec succès!'); setTimeout(() => setUploadStatus(null), 3000); // Effacer le message après 3 secondes // Mettre à jour la liste des documents } else { const data = await response.json(); setError(`Erreur: ${data.detail || 'Échec de la suppression'}`); } } catch (err) { setError(`Erreur: ${err.message}`); } }; return (

Panneau d'administration

Connecté en tant que: {userName}

Ajouter un document PDF

{uploadStatus && (
{uploadStatus}
)}

Documents disponibles

{isLoading ? (

Chargement...

) : error ? (

{error}

) : documents.length === 0 ? (

Aucun document trouvé.

) : ( {documents.map(doc => ( ))}
Titre Tags Date d'ajout Actions
{doc.title} {doc.tags.join(', ')} {new Date(doc.date).toLocaleDateString()}
)}
); } export default AdminPanel;