"use client"; import { useQuery } from "@tanstack/react-query"; import Link from "next/link"; import { Card, Empty, ErrorBox, PageHeader, Spinner, Table, Td, Th } from "@/components/ui"; import { api } from "@/lib/api"; import { fmtIso, fmtNum, fmtPct, signClass } from "@/lib/format"; import type { RunRow } from "@/lib/types"; export default function ReportsPage() { const runs = useQuery({ queryKey: ["runs", 200], queryFn: () => api<{ items: RunRow[] }>("/api/backtests?limit=200") }); const done = runs.data?.items.filter((r) => r.status === "done") ?? []; return ( <> {runs.isLoading && } {runs.error && } {runs.data && (done.length ? ( StrategySymbolSharpeReturnLabelCreatedArtifacts {done.map((r) => ( {r.strategy}{r.symbol} {r.interval_min}m {fmtNum(r.sharpe)}{fmtPct(r.total_return)}{r.label ?? ""}{fmtIso(r.created_at)} HTMLJSONCSV ))} ) : Reports are generated from finished backtests.)} > ); }