import React, { useState, useEffect, useRef } from 'react'; import { adminApi } from '../api/client'; import { Activity, Trash2, RefreshCw } from 'lucide-react'; import CacheStats from './CacheStats'; import LatencyChart from './LatencyChart'; import ClusterViz from './ClusterViz'; const AdminPanel = ({ stats, analytics, fetchData }) => { const [isEvaluating, setIsEvaluating] = useState(false); const [evalResults, setEvalResults] = useState(null); const [adminMessage, setAdminMessage] = useState(''); const evalRef = useRef(null); const handleClearCache = async () => { try { await adminApi.clearCache(); setAdminMessage('Cache cleared successfully!'); setTimeout(() => setAdminMessage(''), 3000); fetchData(); } catch (err) { console.error("Failed to clear cache", err); } }; const handleRunEvaluation = async () => { setIsEvaluating(true); try { const res = await adminApi.runEvaluation(); setEvalResults(res.data); setTimeout(() => { if (evalRef.current) { evalRef.current.scrollIntoView({ behavior: 'smooth' }); } }, 100); } catch (err) { console.error("Eval failed", err); } setIsEvaluating(false); }; return (
| Mode | NDCG@10 | MRR | P@3 | R@10 | MAP |
|---|---|---|---|---|---|
| {mode} | {metrics['ndcg@10'].toFixed(4)} | {metrics['mrr'].toFixed(4)} | {metrics['p@3'].toFixed(4)} | {metrics['r@10'].toFixed(4)} | {metrics['map'].toFixed(4)} |