From 22589e4729baaecbdbf7a60c2a26194d6a541fab Mon Sep 17 00:00:00 2001
From: Marcel
Date: Mon, 18 May 2026 13:14:32 +0200
Subject: [PATCH] feat(admin): surface skipped file count in ImportStatusCard
Adds SkippedFile to the local ImportStatus type and updates
ImportStatusCard to show an amber skipped-count section with a
collapsible filename list in the DONE state. Only rendered when
skipped > 0. i18n keys added for de/en/es.
Co-Authored-By: Claude Sonnet 4.6
---
frontend/messages/de.json | 1 +
frontend/messages/en.json | 1 +
frontend/messages/es.json | 1 +
.../admin/system/ImportStatusCard.svelte | 15 ++++++
.../system/ImportStatusCard.svelte.test.ts | 51 +++++++++++++++++++
frontend/src/routes/admin/system/types.ts | 7 +++
6 files changed, 76 insertions(+)
diff --git a/frontend/messages/de.json b/frontend/messages/de.json
index 03d63f48..55e93d40 100644
--- a/frontend/messages/de.json
+++ b/frontend/messages/de.json
@@ -350,6 +350,7 @@
"admin_system_import_status_running": "Import läuft…",
"admin_system_import_status_done": "Import abgeschlossen",
"admin_system_import_status_done_label": "Dokumente verarbeitet",
+ "admin_system_import_skipped_label": "übersprungen",
"admin_system_import_status_failed": "Import fehlgeschlagen",
"admin_system_import_failed_no_spreadsheet": "Keine Tabellendatei gefunden.",
"admin_system_import_failed_internal": "Interner Fehler beim Import.",
diff --git a/frontend/messages/en.json b/frontend/messages/en.json
index d52ddbf5..1ace8196 100644
--- a/frontend/messages/en.json
+++ b/frontend/messages/en.json
@@ -350,6 +350,7 @@
"admin_system_import_status_running": "Import running…",
"admin_system_import_status_done": "Import complete",
"admin_system_import_status_done_label": "Documents processed",
+ "admin_system_import_skipped_label": "skipped",
"admin_system_import_status_failed": "Import failed",
"admin_system_import_failed_no_spreadsheet": "No spreadsheet file found.",
"admin_system_import_failed_internal": "Import failed due to an internal error.",
diff --git a/frontend/messages/es.json b/frontend/messages/es.json
index 177dcdff..286faf5b 100644
--- a/frontend/messages/es.json
+++ b/frontend/messages/es.json
@@ -350,6 +350,7 @@
"admin_system_import_status_running": "Importación en curso…",
"admin_system_import_status_done": "Importación completada",
"admin_system_import_status_done_label": "Documentos procesados",
+ "admin_system_import_skipped_label": "omitidos",
"admin_system_import_status_failed": "Importación fallida",
"admin_system_import_failed_no_spreadsheet": "No se encontró ninguna hoja de cálculo.",
"admin_system_import_failed_internal": "Error interno durante la importación.",
diff --git a/frontend/src/routes/admin/system/ImportStatusCard.svelte b/frontend/src/routes/admin/system/ImportStatusCard.svelte
index 01b565c4..a7cbba65 100644
--- a/frontend/src/routes/admin/system/ImportStatusCard.svelte
+++ b/frontend/src/routes/admin/system/ImportStatusCard.svelte
@@ -48,6 +48,21 @@ const failureMessage = $derived(
{m.admin_system_import_status_done()}
+ {#if importStatus.skipped > 0}
+
+
+ {importStatus.skipped}
+
+ {m.admin_system_import_skipped_label()}
+
+
+
+ {#each importStatus.skippedFiles as { filename, reason } (filename)}
+ - {filename} — {reason}
+ {/each}
+
+
+ {/if}