import type { Metadata } from "next"; import Link from "next/link"; import { apiSafe } from "@/lib/api"; import { Badge, Card, Empty, SectionHeader } from "@/components/ui"; import { dateFr, dateTimeFr } from "@/lib/format"; export const metadata: Metadata = { title: "Changelog du modèle", description: "Historique public des versions du modèle QC26 et des runs de prévision." }; export const revalidate = 300; interface CL { changelog: { version: string; date: string; title: string; notes: string[] }[]; runs: { id: number; modelVersion: string; completedAt: string | null; trigger: string | null; pollCount: number; codeCommit: string | null; published: boolean }[] } export default async function Page() { const d = await apiSafe("/api/changelog"); if (!d) return ; return (
← Méthodologie

Changelog

La transparence est une caractéristique du produit : chaque changement de méthode est daté et expliqué ; chaque run est conservé.

{d.changelog.map((c) => (
v{c.version}{c.title}{dateFr(c.date)}
    {c.notes.map((n, i) =>
  • {n}
  • )}
))}
{d.runs.map((r) => )}
RunModèleTerminéDéclencheurSondagesCommit
#{r.id}{r.modelVersion}{dateTimeFr(r.completedAt)}{r.trigger}{r.pollCount}{r.codeCommit ?? "—"}{r.published && publié}
); }