'use client'; import React, { useState, useEffect } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Loader2, CheckCircle, XCircle, RefreshCw, Trash2, Database } from 'lucide-react'; import { cleanupAllOrphans } from '@/app/actions/notes'; import { useToast } from '@/components/ui/toast'; export default function SettingsPage() { const { addToast } = useToast(); const [loading, setLoading] = useState(false); const [cleanupLoading, setCleanupLoading] = useState(false); const [status, setStatus] = useState<'idle' | 'success' | 'error'>('idle'); const [result, setResult] = useState(null); const [config, setConfig] = useState(null); const checkConnection = async () => { setLoading(true); setStatus('idle'); setResult(null); try { const res = await fetch('/api/ai/test'); const data = await res.json(); setConfig({ provider: data.provider, status: res.ok ? 'connected' : 'disconnected' }); if (res.ok) { setStatus('success'); setResult(data); } else { setStatus('error'); setResult(data); } } catch (error: any) { console.error(error); setStatus('error'); setResult({ message: error.message, stack: error.stack }); } finally { setLoading(false); } }; const handleCleanup = async () => { setCleanupLoading(true); try { const result = await cleanupAllOrphans(); if (result.success) { addToast(`Nettoyage terminé : ${result.count} tags supprimés`, 'success'); } } catch (error) { console.error(error); addToast("Erreur lors du nettoyage", "error"); } finally { setCleanupLoading(false); } }; useEffect(() => { checkConnection(); }, []); return (

Paramètres

Diagnostic IA {status === 'success' && } {status === 'error' && } Vérifiez la connexion avec votre fournisseur d'intelligence artificielle.
{/* Configuration Actuelle */}

Provider Configuré

{config?.provider || '...'}

État API

{status === 'success' ? 'Opérationnel' : 'Erreur'}
{/* Résultat du Test */} {result && (

Détails du test :

{JSON.stringify(result, null, 2)}
{status === 'error' && (

Conseil de dépannage :

  • Vérifiez que Ollama tourne (ollama list)
  • Vérifiez l'URL (http://localhost:11434)
  • Vérifiez que le modèle (ex: granite4:latest) est bien téléchargé
  • Regardez le terminal du serveur Next.js pour plus de logs
)}
)}
Maintenance Outils pour maintenir la santé de votre base de données.

Nettoyage des tags orphelins

Supprime les tags qui ne sont plus utilisés par aucune note.

); }