From 0797406f02698a5bf43ce3ecb17336017245f91b Mon Sep 17 00:00:00 2001 From: Marcel Date: Sat, 25 Apr 2026 11:31:59 +0200 Subject: [PATCH] docs(bulk-upload): explain chunkSize=10 and 50-file cap constants Co-Authored-By: Claude Sonnet 4.6 --- .../java/org/raddatz/familienarchiv/service/DocumentService.java | 1 + .../src/lib/components/document/BulkDocumentEditLayout.svelte | 1 + 2 files changed, 2 insertions(+) diff --git a/backend/src/main/java/org/raddatz/familienarchiv/service/DocumentService.java b/backend/src/main/java/org/raddatz/familienarchiv/service/DocumentService.java index 06317642..b7d50f99 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/service/DocumentService.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/service/DocumentService.java @@ -134,6 +134,7 @@ public class DocumentService { } public void validateBatch(int fileCount, DocumentBatchMetadataDTO metadata) { + // 50-file hard cap keeps FormData requests at a manageable size and protects against runaway bulk uploads. if (fileCount > 50) { throw DomainException.badRequest(ErrorCode.BATCH_TOO_LARGE, "Batch exceeds maximum of 50 files per request"); } diff --git a/frontend/src/lib/components/document/BulkDocumentEditLayout.svelte b/frontend/src/lib/components/document/BulkDocumentEditLayout.svelte index bc76ff5b..6ce93a07 100644 --- a/frontend/src/lib/components/document/BulkDocumentEditLayout.svelte +++ b/frontend/src/lib/components/document/BulkDocumentEditLayout.svelte @@ -110,6 +110,7 @@ async function save() { if (saving) return; saving = true; const entries = Array.from(files.values()); + // 10 files per request keeps multipart bodies well under typical reverse-proxy limits (e.g. nginx default 1 MB client_max_body_size per PDF). const chunkSize = 10; const chunks: FileEntry[][] = []; for (let i = 0; i < entries.length; i += chunkSize) {