'use client' import { useState, useEffect } from 'react' const API_BASE = process.env.NEXT_PUBLIC_API_BASE_URL || 'http://localhost:8000' interface Stats { date: string request_count: number input_tokens: number output_tokens: number cached_count: number error_count: number } interface Realtime { rpm: number tpm: number } export default function StatsPage() { const [providerId, setProviderId] = useState(1) const [stats, setStats] = useState(null) const [realtime, setRealtime] = useState({ rpm: 0, tpm: 0 }) const getToken = () => localStorage.getItem('admin_token') || '' const fetchStats = async () => { const res = await fetch( `${API_BASE}/api/v1/admin/stats/daily/${providerId}`, { headers: { Authorization: `Bearer ${getToken()}` } } ) if (res.ok) setStats(await res.json()) } const fetchRealtime = async () => { const res = await fetch( `${API_BASE}/api/v1/admin/stats/realtime/${providerId}`, { headers: { Authorization: `Bearer ${getToken()}` } } ) if (res.ok) setRealtime(await res.json()) } useEffect(() => { fetchStats() fetchRealtime() const interval = setInterval(fetchRealtime, 5000) return () => clearInterval(interval) }, [providerId]) return (

使用统计

{/* 实时指标 */}

RPM (每分钟请求)

{realtime.rpm}

TPM (每分钟Token)

{realtime.tpm}

{/* 今日统计 */} {stats && (

今日统计 ({stats.date})

总请求

{stats.request_count}

输入 Token

{stats.input_tokens}

输出 Token

{stats.output_tokens}

缓存命中

{stats.cached_count}

错误数

{stats.error_count}

)}
) }