feat: Add floating summary bar with draft management, snapshot, and Excel export functionalities.

This commit is contained in:
Michael committed 2026-02-22 13:31:38 +01:00
1 parent c9cf83d4c7
commit 77fb61ef79
2 files changed
+23 -14

No files matched your search

@@ -81,7 +81,10 @@ export function FloatingSummaryBar() {
} }
} catch (err) { } catch (err) {
console.error(err); console.error(err);
if (!labelOverride) alert("Erreur lors de la création du snapshot."); if (!labelOverride) {
const msg = err instanceof Error ? err.message : String(err);
alert(`Erreur lors de la création du snapshot : ${msg}`);
}
} finally { } finally {
setIsSavingSnapshot(false); setIsSavingSnapshot(false);
} }
+19 -13
View File
@@ -24,22 +24,28 @@ const SaveSnapshotSchema = z.object({
export async function saveSnapshot(raw: unknown) { export async function saveSnapshot(raw: unknown) {
const parsed = SaveSnapshotSchema.safeParse(raw); const parsed = SaveSnapshotSchema.safeParse(raw);
if (!parsed.success) { if (!parsed.success) {
return { success: false, error: "Validation failed: " + parsed.error.message }; console.error("Snapshot validation failed:", parsed.error.format());
return { success: false, error: "Validation failed: " + parsed.error.issues.map((i: any) => i.message).join(", ") };
} }
const { codeFournisseur, nomFournisseur, magasin, label, changes, summary } = parsed.data; const { codeFournisseur, nomFournisseur, magasin, label, changes, summary } = parsed.data;
const [created] = await db try {
.insert(sessionSnapshots) const [created] = await db
.values({ .insert(sessionSnapshots)
codeFournisseur, .values({
nomFournisseur: nomFournisseur ?? null, codeFournisseur,
magasin, nomFournisseur: nomFournisseur ?? null,
label: label ?? `Snapshot — ${new Date().toLocaleDateString("fr-FR")}`, magasin,
changes, label: label ?? `Snapshot — ${new Date().toLocaleDateString("fr-FR")}`,
summaryJson: summary ?? null, changes,
}) summaryJson: summary ?? null,
.returning({ id: sessionSnapshots.id }); })
.returning({ id: sessionSnapshots.id });
return { success: true, snapshotId: created?.id }; return { success: true, snapshotId: created?.id };
} catch (err) {
console.error("Snapshot DB insertion error:", err);
return { success: false, error: "Database error during insertion" };
}
} }