Import normalizer: offline tool to normalize the raw archive spreadsheets #663

Merged
marcel merged 172 commits from docs/import-migration into main 2026-05-28 15:05:51 +02:00
4 changed files with 10 additions and 1 deletions
Showing only changes of commit 5cf8fd149e - Show all commits

View File

@@ -357,11 +357,13 @@
"admin_system_import_status_done_label": "Dokumente verarbeitet", "admin_system_import_status_done_label": "Dokumente verarbeitet",
"admin_system_import_skipped_label": "übersprungen", "admin_system_import_skipped_label": "übersprungen",
"import_reason_invalid_pdf_signature": "Keine gültige PDF-Signatur", "import_reason_invalid_pdf_signature": "Keine gültige PDF-Signatur",
"import_reason_path_traversal": "Ungültiger Dateiname (Pfad)",
"import_reason_file_read_error": "Fehler beim Lesen der Datei", "import_reason_file_read_error": "Fehler beim Lesen der Datei",
"import_reason_s3_upload_failed": "Upload-Fehler (S3)", "import_reason_s3_upload_failed": "Upload-Fehler (S3)",
"import_reason_already_exists": "Bereits importiert", "import_reason_already_exists": "Bereits importiert",
"admin_system_import_status_failed": "Import fehlgeschlagen", "admin_system_import_status_failed": "Import fehlgeschlagen",
"admin_system_import_failed_no_spreadsheet": "Keine Tabellendatei gefunden.", "admin_system_import_failed_no_spreadsheet": "Keine Tabellendatei gefunden.",
"admin_system_import_failed_artifact": "Eine Importdatei fehlt oder ist ungültig.",
"admin_system_import_failed_internal": "Interner Fehler beim Import.", "admin_system_import_failed_internal": "Interner Fehler beim Import.",
"admin_system_thumbnails_heading": "Thumbnails erzeugen", "admin_system_thumbnails_heading": "Thumbnails erzeugen",
"admin_system_thumbnails_description": "Erzeugt Vorschaubilder für Dokumente ohne Thumbnail (z. B. nach dem Massenimport).", "admin_system_thumbnails_description": "Erzeugt Vorschaubilder für Dokumente ohne Thumbnail (z. B. nach dem Massenimport).",

View File

@@ -357,11 +357,13 @@
"admin_system_import_status_done_label": "Documents processed", "admin_system_import_status_done_label": "Documents processed",
"admin_system_import_skipped_label": "skipped", "admin_system_import_skipped_label": "skipped",
"import_reason_invalid_pdf_signature": "Invalid PDF signature", "import_reason_invalid_pdf_signature": "Invalid PDF signature",
"import_reason_path_traversal": "Invalid filename (path)",
"import_reason_file_read_error": "File read error", "import_reason_file_read_error": "File read error",
"import_reason_s3_upload_failed": "Upload error (S3)", "import_reason_s3_upload_failed": "Upload error (S3)",
"import_reason_already_exists": "Already imported", "import_reason_already_exists": "Already imported",
"admin_system_import_status_failed": "Import failed", "admin_system_import_status_failed": "Import failed",
"admin_system_import_failed_no_spreadsheet": "No spreadsheet file found.", "admin_system_import_failed_no_spreadsheet": "No spreadsheet file found.",
"admin_system_import_failed_artifact": "A canonical import file is missing or invalid.",
"admin_system_import_failed_internal": "Import failed due to an internal error.", "admin_system_import_failed_internal": "Import failed due to an internal error.",
"admin_system_thumbnails_heading": "Generate thumbnails", "admin_system_thumbnails_heading": "Generate thumbnails",
"admin_system_thumbnails_description": "Generates preview images for documents without a thumbnail (e.g. after the mass import).", "admin_system_thumbnails_description": "Generates preview images for documents without a thumbnail (e.g. after the mass import).",

View File

@@ -357,11 +357,13 @@
"admin_system_import_status_done_label": "Documentos procesados", "admin_system_import_status_done_label": "Documentos procesados",
"admin_system_import_skipped_label": "omitidos", "admin_system_import_skipped_label": "omitidos",
"import_reason_invalid_pdf_signature": "Firma PDF no válida", "import_reason_invalid_pdf_signature": "Firma PDF no válida",
"import_reason_path_traversal": "Nombre de archivo no válido (ruta)",
"import_reason_file_read_error": "Error al leer el archivo", "import_reason_file_read_error": "Error al leer el archivo",
"import_reason_s3_upload_failed": "Error de carga (S3)", "import_reason_s3_upload_failed": "Error de carga (S3)",
"import_reason_already_exists": "Ya importado", "import_reason_already_exists": "Ya importado",
"admin_system_import_status_failed": "Importación fallida", "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_no_spreadsheet": "No se encontró ninguna hoja de cálculo.",
"admin_system_import_failed_artifact": "Falta un archivo de importación canónico o no es válido.",
"admin_system_import_failed_internal": "Error interno durante la importación.", "admin_system_import_failed_internal": "Error interno durante la importación.",
"admin_system_thumbnails_heading": "Generar miniaturas", "admin_system_thumbnails_heading": "Generar miniaturas",
"admin_system_thumbnails_description": "Genera imágenes de vista previa para documentos sin miniatura (p. ej. tras la importación masiva).", "admin_system_thumbnails_description": "Genera imágenes de vista previa para documentos sin miniatura (p. ej. tras la importación masiva).",

View File

@@ -13,10 +13,13 @@ let {
const failureMessage = $derived( const failureMessage = $derived(
importStatus?.statusCode === 'IMPORT_FAILED_NO_SPREADSHEET' importStatus?.statusCode === 'IMPORT_FAILED_NO_SPREADSHEET'
? m.admin_system_import_failed_no_spreadsheet() ? m.admin_system_import_failed_no_spreadsheet()
: m.admin_system_import_failed_internal() : importStatus?.statusCode === 'IMPORT_FAILED_ARTIFACT'
? m.admin_system_import_failed_artifact()
: m.admin_system_import_failed_internal()
); );
function reasonLabel(code: string): string { function reasonLabel(code: string): string {
if (code === 'INVALID_FILENAME_PATH_TRAVERSAL') return m.import_reason_path_traversal();
if (code === 'INVALID_PDF_SIGNATURE') return m.import_reason_invalid_pdf_signature(); if (code === 'INVALID_PDF_SIGNATURE') return m.import_reason_invalid_pdf_signature();
if (code === 'FILE_READ_ERROR') return m.import_reason_file_read_error(); if (code === 'FILE_READ_ERROR') return m.import_reason_file_read_error();
if (code === 'S3_UPLOAD_FAILED') return m.import_reason_s3_upload_failed(); if (code === 'S3_UPLOAD_FAILED') return m.import_reason_s3_upload_failed();