- Ajout migrations DB: index_job_errors, library_monitoring, full_rebuild_type - API: endpoints progression temps reel (/jobs/:id/stream), active jobs, details - API: support full_rebuild avec suppression donnees existantes - Indexer: logs detailles avec timing [SCAN][META][PARSER][BDD] - Indexer: optimisation parsing PDF (lopdf -> pdfinfo) 235x plus rapide - Indexer: corrections chemins LIBRARIES_ROOT_PATH pour dev local - Backoffice: composants JobProgress, JobsIndicator (header), JobsList - Backoffice: SSE streaming pour progression temps reel - Backoffice: boutons Index/Index Full sur page libraries - Backoffice: highlight job apres creation avec redirection - Fix: parsing volume type i32, sync meilisearch cleanup Perf: parsing PDF passe de 8.7s a 37ms Perf: indexation 45 fichiers en ~15s vs plusieurs minutes avant
47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import type { Metadata } from "next";
|
|
import Image from "next/image";
|
|
import Link from "next/link";
|
|
import type { ReactNode } from "react";
|
|
import "./globals.css";
|
|
import { ThemeProvider } from "./theme-provider";
|
|
import { ThemeToggle } from "./theme-toggle";
|
|
import { JobsIndicatorWrapper } from "./components/JobsIndicatorWrapper";
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Stripstream Backoffice",
|
|
description: "Backoffice administration for Stripstream Librarian"
|
|
};
|
|
|
|
export default function RootLayout({ children }: { children: ReactNode }) {
|
|
const apiBaseUrl = process.env.API_BASE_URL || "http://api:8080";
|
|
const apiToken = process.env.API_BOOTSTRAP_TOKEN || "";
|
|
|
|
return (
|
|
<html lang="en" suppressHydrationWarning>
|
|
<body>
|
|
<ThemeProvider>
|
|
<nav className="top-nav">
|
|
<Link href="/" className="brand">
|
|
<Image src="/logo.png" alt="Stripstream" width={36} height={36} />
|
|
<span className="brand-name">StripStream</span>
|
|
<span className="brand-subtitle">backoffice</span>
|
|
</Link>
|
|
<div className="links-wrap">
|
|
<div className="links">
|
|
<Link href="/">Dashboard</Link>
|
|
<Link href="/books">Books</Link>
|
|
<Link href="/libraries">Libraries</Link>
|
|
<Link href="/jobs">Jobs</Link>
|
|
<Link href="/tokens">Tokens</Link>
|
|
</div>
|
|
<JobsIndicatorWrapper apiBaseUrl={apiBaseUrl} apiToken={apiToken} />
|
|
<ThemeToggle />
|
|
</div>
|
|
</nav>
|
|
<main>{children}</main>
|
|
</ThemeProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|