49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
|
|
/**
|
||
|
|
* /admin/stats — Corpus analytics dashboard.
|
||
|
|
*/
|
||
|
|
import Link from "next/link";
|
||
|
|
import { AuthBar } from "@/components/auth-bar";
|
||
|
|
import { StatsDashboard } from "@/components/stats-dashboard";
|
||
|
|
|
||
|
|
export const dynamic = "force-dynamic";
|
||
|
|
|
||
|
|
export default function AdminStatsPage() {
|
||
|
|
return (
|
||
|
|
<main className="min-h-screen p-6 md:p-10 max-w-6xl mx-auto">
|
||
|
|
<div className="flex items-start justify-between gap-4 mb-6">
|
||
|
|
<Link href="/" className="font-mono text-xs text-[#7fdbff] hover:text-[#00ff9c]">
|
||
|
|
← home
|
||
|
|
</Link>
|
||
|
|
<div className="flex items-center gap-2">
|
||
|
|
<Link
|
||
|
|
href="/admin/batch"
|
||
|
|
className="font-mono text-xs px-3 py-1.5 border border-[rgba(0,255,156,0.30)] text-[#00ff9c] hover:bg-[rgba(0,255,156,0.10)] rounded"
|
||
|
|
>
|
||
|
|
📈 batch
|
||
|
|
</Link>
|
||
|
|
<Link
|
||
|
|
href="/admin/indexer"
|
||
|
|
className="font-mono text-xs px-3 py-1.5 border border-[rgba(127,219,255,0.30)] text-[#7fdbff] hover:bg-[rgba(127,219,255,0.10)] rounded"
|
||
|
|
>
|
||
|
|
🗄 indexer
|
||
|
|
</Link>
|
||
|
|
<AuthBar />
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<header className="mb-6">
|
||
|
|
<div className="font-mono text-[10px] text-[#5a6678] tracking-widest uppercase mb-2">
|
||
|
|
admin · corpus analytics
|
||
|
|
</div>
|
||
|
|
<h1 className="font-mono text-2xl text-[#00ff9c] mb-1">▍ Stats do corpus</h1>
|
||
|
|
<p className="text-[#8896aa] text-sm">
|
||
|
|
Quantitativos sobre os 116 documentos, 3.435 páginas e milhares de entidades catalogadas.
|
||
|
|
Combina dados do filesystem (sempre disponível) com queries em pgvector (quando o indexer rodou).
|
||
|
|
</p>
|
||
|
|
</header>
|
||
|
|
|
||
|
|
<StatsDashboard />
|
||
|
|
</main>
|
||
|
|
);
|
||
|
|
}
|