import { useEffect, useState } from 'react' import { getToken } from '../../api/client' export default function SystemPage() { const [info, setInfo] = useState({}) const [sessions, setSessions] = useState([]) const [plugins, setPlugins] = useState([]) useEffect(() => { fetchAll() const interval = setInterval(fetchAll, 10000) return () => clearInterval(interval) }, []) const fetchAll = async () => { const token = getToken() const headers = { Authorization: `Bearer ${token}` } try { const [sysRes, sessionRes, pluginRes] = await Promise.all([ fetch('/api/v1/admin/system', { headers }), fetch('/api/v1/admin/sessions', { headers }), fetch('/api/v1/admin/plugins', { headers }), ]) if (sysRes.ok) setInfo((await sysRes.json()).system) if (sessionRes.ok) setSessions((await sessionRes.json()).sessions || []) if (pluginRes.ok) setPlugins((await pluginRes.json()).plugins || []) } catch {} } return (

系统信息

{/* System Info */}
{/* Plugins list */}

已加载插件 ({plugins.length})

{plugins.map((p, i) => ( {p.name} ))}
{/* Sessions */}

活跃会话 ({sessions.length})

{sessions.length === 0 ? (

暂无活跃会话

) : (
{sessions.map((s: any, i) => (
{s.session_id || s.id || '-'}
))}
)}
) } function StatRow({ label, value }: { label:string; value:string|number }) { return (

{label}

{value}

) }