"use client"; import Link from "next/link"; import { useEffect, useState } from "react"; import { AlertTriangle, CheckCircle2, Database, FileQuestion, Library, Play, Rows3, Timer } from "lucide-react"; import { api, formatDateTime } from "@/lib/api"; import type { DashboardSummary, TaskRun } from "@/lib/types"; import StatCard from "@/components/StatCard"; import StatusBadge from "@/components/StatusBadge"; export default function DashboardPage() { const [summary, setSummary] = useState(null); const [loading, setLoading] = useState(true); const [running, setRunning] = useState(false); async function load() { setLoading(true); const data = await api.get("/dashboard/summary"); setSummary(data); setLoading(false); } async function runTask() { setRunning(true); await api.post("/tasks/run-now", {}); await load(); setRunning(false); } useEffect(() => { load().catch(() => setLoading(false)); }, []); if (loading || !summary) { return
加载中...
; } const actions = [ { href: "/review", label: "去审核" }, { href: "/high-risk", label: "查看高风险" }, { href: "/standard-qa", label: "查看标准问答库" }, { href: "/logs", label: "查看运行日志" } ]; return (

仪表盘

最近任务:{summary.last_task_time ? formatDateTime(summary.last_task_time) : "-"}

} /> } tone="indigo" /> } tone="amber" /> } tone="rose" /> } /> } tone="indigo" /> } />
最近一次任务状态
{summary.last_task_status ? : 暂无任务}
{summary.last_task_error ?

{summary.last_task_error}

: null}
{actions.map((action) => ( {action.label} ))}
); }