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) {
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 {
setIsSavingSnapshot(false);
}
+19 -13
View File
@@ -24,22 +24,28 @@ const SaveSnapshotSchema = z.object({
export async function saveSnapshot(raw: unknown) {
const parsed = SaveSnapshotSchema.safeParse(raw);
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 [created] = await db
.insert(sessionSnapshots)
.values({
codeFournisseur,
nomFournisseur: nomFournisseur ?? null,
magasin,
label: label ?? `Snapshot — ${new Date().toLocaleDateString("fr-FR")}`,
changes,
summaryJson: summary ?? null,
})
.returning({ id: sessionSnapshots.id });
try {
const [created] = await db
.insert(sessionSnapshots)
.values({
codeFournisseur,
nomFournisseur: nomFournisseur ?? null,
magasin,
label: label ?? `Snapshot — ${new Date().toLocaleDateString("fr-FR")}`,
changes,
summaryJson: summary ?? null,
})
.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" };
}
}