mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-21 14:08:08 +02:00
feat: Add floating summary bar with draft management, snapshot, and Excel export functionalities.
This commit is contained in:
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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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" };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user