import { listDocuments, readDocument } from "@/lib/wiki"; import { ChatBubble } from "@/components/chat-bubble"; import { BatchProgressBanner } from "@/components/batch-progress-banner"; import { getLocale } from "@/components/locale-toggle"; import { summarize, pickPitch } from "@/lib/doc-summary"; import { DocListFilters } from "@/components/doc-list-filters"; import { SiteHeader } from "@/components/site-header"; import { HeroBanner } from "@/components/hero-banner"; import { FeaturedCase } from "@/components/featured-case"; import { IconicCases } from "@/components/iconic-cases"; import { PortalGrid, type PortalCounts } from "@/components/portal-grid"; import { GreatestHits } from "@/components/greatest-hits"; import { pgQuery } from "@/lib/retrieval/db"; // Read wiki/ filesystem + DB at request time, not build time. export const dynamic = "force-dynamic"; async function loadCounts(documentsCount: number): Promise { const rows = await pgQuery<{ entity_class: string; c: string }>( `SELECT entity_class, COUNT(*)::text AS c FROM public.entities GROUP BY entity_class`, ).catch(() => [] as Array<{ entity_class: string; c: string }>); const by: Record = {}; for (const r of rows) by[r.entity_class] = Number(r.c); return { events: by.event ?? 0, people: by.person ?? 0, uap_objects: by.uap_object ?? 0, locations: by.location ?? 0, operations: by.organization ?? 0, documents: documentsCount, }; } export default async function Home() { const ids = await listDocuments(); const locale = (await getLocale()) === "en" ? "en" : "pt-br"; const docs = await Promise.all( ids.map(async (id) => { const f = await readDocument(id); const summaryLang: "pt" | "en" = locale === "en" ? "en" : "pt"; return { id, title: (f?.fm.canonical_title as string) ?? id, pages: (f?.fm.page_count as number) ?? 0, collection: (f?.fm.collection as string) ?? "uncategorized", classification: (f?.fm.highest_classification as string) ?? "—", summary: pickPitch(f?.fm as Record | undefined, summaryLang) ?? (f?.body ? summarize(f.body, summaryLang) : ""), }; }), ); const counts = await loadCounts(ids.length); const totalPages = docs.reduce((s, d) => s + d.pages, 0); return (
{/* Document list — kept but reframed as "the primary record" */}
{locale === "en" ? "// The primary record" : "// O registro primário"}

{locale === "en" ? "Every document, indexed and searchable" : "Cada documento, indexado e buscável"}

{locale === "en" ? `${ids.length} declassified files · ${totalPages.toLocaleString("pt-BR")} pages` : `${ids.length} arquivos desclassificados · ${totalPages.toLocaleString("pt-BR")} páginas`}

{/* JSON-LD: WebSite + ItemList of recent docs (helps GEO discovery) */}