import { Navigate } from "react-router-dom"; import { useTranslation } from "react-i18next"; import { useQuery } from "@tanstack/react-query"; import { useAuthStore } from "@/stores/auth-store"; import api from "@/api/client"; import { cn } from "@/lib/utils"; interface UserUsage { user_id: string; username: string; messages_today: number; message_limit: number; tokens_today: number; token_limit: number; } export function AdminUsagePage() { const { t } = useTranslation(); const user = useAuthStore((s) => s.user); const { data } = useQuery({ queryKey: ["admin-usage"], queryFn: async () => { const { data } = await api.get<{ users: UserUsage[] }>("/admin/usage"); return data.users; }, refetchInterval: 30000, }); if (user?.role !== "admin") return ; const users = data || []; return (

{t("admin_usage.title")}

{users.map((u) => ( ))} {users.length === 0 && ( )}
{t("admin_usage.user")} {t("admin_usage.messages")} {t("admin_usage.tokens")}
{u.username} = u.message_limit && "text-destructive font-medium")}> {u.messages_today} / {u.message_limit} = u.token_limit && "text-destructive font-medium")}> {Math.round(u.tokens_today / 1000)}K / {Math.round(u.token_limit / 1000)}K
{t("admin_usage.no_data")}
); }