mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-22 14:38:10 +02:00
Merge pull request #3 from R0m1k3/claude/exciting-goldberg-wILkj
Claude/exciting goldberg w i lkj
This commit is contained in:
4 files changed
+35
-15
No files matched your search
@@ -4,6 +4,9 @@ import { CommandesAutoTabs } from "./tabs";
|
|||||||
|
|
||||||
export type { PgCommandeAutoRow };
|
export type { PgCommandeAutoRow };
|
||||||
|
|
||||||
|
// Données live (DB + API FF Nancy) : rendu à la requête, jamais prérendu au build.
|
||||||
|
export const dynamic = "force-dynamic";
|
||||||
|
|
||||||
export default async function CommandesAutoPage() {
|
export default async function CommandesAutoPage() {
|
||||||
const [rows, cadences, fournisseurs] = await Promise.all([
|
const [rows, cadences, fournisseurs] = await Promise.all([
|
||||||
pgGetCommandesAuto(),
|
pgGetCommandesAuto(),
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
@import "tailwindcss";
|
@import "tailwindcss";
|
||||||
|
|
||||||
|
/* Police de l'app : Inter (chargée via <link> dans le layout, fallback système).
|
||||||
|
Définie ici pour que l'utilitaire `font-sans` et var(--font-sans) la prennent
|
||||||
|
sans recourir à next/font/google (pas de fetch réseau au build). */
|
||||||
|
@theme {
|
||||||
|
--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ═══════════════════════════════════════════
|
/* ═══════════════════════════════════════════
|
||||||
CollectFlow — Apple-inspired Design System
|
CollectFlow — Apple-inspired Design System
|
||||||
═══════════════════════════════════════════ */
|
═══════════════════════════════════════════ */
|
||||||
|
|||||||
+13
-11
@@ -1,21 +1,12 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata } from "next";
|
||||||
import { Inter } from "next/font/google";
|
|
||||||
import { ThemeProvider } from "@/components/shared/theme-provider";
|
|
||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
|
import { Providers } from "./providers";
|
||||||
const inter = Inter({
|
|
||||||
subsets: ["latin"],
|
|
||||||
variable: "--font-sans",
|
|
||||||
display: "swap",
|
|
||||||
});
|
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "CollectFlow — Dashboard Décisionnel",
|
title: "CollectFlow — Dashboard Décisionnel",
|
||||||
description: "Révision d'Assortiment Haute Performance",
|
description: "Révision d'Assortiment Haute Performance",
|
||||||
};
|
};
|
||||||
|
|
||||||
import { Providers } from "./providers";
|
|
||||||
|
|
||||||
export default function RootLayout({
|
export default function RootLayout({
|
||||||
children,
|
children,
|
||||||
}: Readonly<{
|
}: Readonly<{
|
||||||
@@ -23,7 +14,18 @@ export default function RootLayout({
|
|||||||
}>) {
|
}>) {
|
||||||
return (
|
return (
|
||||||
<html lang="fr" suppressHydrationWarning>
|
<html lang="fr" suppressHydrationWarning>
|
||||||
<body className={`${inter.variable} font-sans antialiased`}>
|
<head>
|
||||||
|
{/* Inter chargé côté navigateur (et non au build) pour éviter toute
|
||||||
|
dépendance réseau à Google Fonts pendant `next build` (Docker). */}
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
|
||||||
|
{/* eslint-disable-next-line @next/next/no-page-custom-font */}
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"
|
||||||
|
rel="stylesheet"
|
||||||
|
/>
|
||||||
|
</head>
|
||||||
|
<body className="font-sans antialiased">
|
||||||
<Providers>
|
<Providers>
|
||||||
{children}
|
{children}
|
||||||
</Providers>
|
</Providers>
|
||||||
|
|||||||
@@ -45,10 +45,17 @@ export async function getFournisseursPourCadence(): Promise<{ code: string; nom:
|
|||||||
* de la dernière réception (FF Nancy).
|
* de la dernière réception (FF Nancy).
|
||||||
*/
|
*/
|
||||||
export async function listCadences(): Promise<CadenceView[]> {
|
export async function listCadences(): Promise<CadenceView[]> {
|
||||||
const [rows, receptions] = await Promise.all([
|
let rows: typeof commandeCadences.$inferSelect[] = [];
|
||||||
db.select().from(commandeCadences),
|
let receptions = new Map<string, string>();
|
||||||
pgGetDerniereReceptionParFournisseur(),
|
try {
|
||||||
]);
|
[rows, receptions] = await Promise.all([
|
||||||
|
db.select().from(commandeCadences),
|
||||||
|
pgGetDerniereReceptionParFournisseur(),
|
||||||
|
]);
|
||||||
|
} catch (e) {
|
||||||
|
console.error("[cadence] listCadences error:", (e as Error).message);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user