"use client"; import { useState, useEffect } from "react"; import { aiAssistantApi } from "@/lib/api/aiAssistant"; import type { UsageLogItem } from "@/lib/api/aiAssistant"; import { History, Loader2, MessageSquare, Clock, Zap, CheckCircle, XCircle } from "lucide-react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Button } from "@/components/ui/button"; import { toast } from "sonner"; export default function AiAssistantHistoryPage() { const [loading, setLoading] = useState(true); const [logs, setLogs] = useState([]); const [page, setPage] = useState(1); const [totalPages, setTotalPages] = useState(1); useEffect(() => { loadLogs(); }, [page]); const loadLogs = async () => { setLoading(true); try { const res = await aiAssistantApi.get(`/usage/logs?page=${page}&limit=20`); const data = res.data?.data as { logs?: UsageLogItem[]; pagination?: { totalPages?: number } }; setLogs(data?.logs ?? []); setTotalPages(data?.pagination?.totalPages ?? 1); } catch { toast.error("대화 이력을 불러오는데 실패했습니다."); } finally { setLoading(false); } }; if (loading && logs.length === 0) { return (
); } return (

대화 이력

AI Assistant와의 대화 기록을 확인합니다.

API 호출 로그 최근 API 호출 기록 {logs.length === 0 ? (

대화 이력이 없습니다

AI 채팅을 시작하면 이력이 표시됩니다.

) : ( <> 상태 프로바이더 모델 토큰 비용 응답시간 일시 {logs.map((log) => ( {log.success ? ( 성공 ) : ( 실패 )} {log.providerName} {log.modelName}
{(log.totalTokens ?? 0).toLocaleString()}
입력: {log.promptTokens ?? 0} / 출력: {log.completionTokens ?? 0}
${(log.costUsd ?? 0).toFixed(6)}
{log.responseTimeMs ?? 0}ms
{new Date(log.createdAt).toLocaleString("ko-KR")}
))}
{totalPages > 1 && (
{page} / {totalPages}
)} )}
); }