chap 5: Umsetzung — 11 Abschnitte + module-components/zip-stream/race-condition diagrams

This commit is contained in:
2026-08-25 20:33:15 +02:00
parent ce6b01626c
commit f857a244dd
17 changed files with 437 additions and 110 deletions
+16 -10
View File
@@ -1,15 +1,21 @@
sequenceDiagram
participant B as Browser
participant P as PageModel
autonumber
actor U as Benutzer
participant P as Download-PageModel
participant S as DocumentsService
participant Z as ZipArchive
participant S3 as S3-Speicher
B->>P: POST /documents?handler=Zip&keys=[...]
P->>S: GetZipStreamAsync(orgId, keys)
loop je Dokument
S->>S3: GetObjectAsync(key)
S3-->>S: Stream
S->>S: ZipArchive.CreateEntry + CopyToAsync
U->>P: Auswahl + Klick auf<br/>"Als ZIP herunterladen"
P->>S: Schluessel gegen Kundenpraefix pruefen
S-->>P: validierte Schluessel
P->>U: Antwort-Header:<br/>application/zip
loop je ausgewaehltes Dokument
S->>S3: GetObject(key)
S3-->>S: Inhalts-Stream
S->>Z: Eintrag mit relativem Pfad anlegen
Z->>U: komprimierte Bytes<br/>direkt in die Antwort
end
S-->>P: ZipStream
P-->>B: application/zip (streaming)
Z->>U: Archiv abschliessen
Note over Z,U: Kein Zwischenspeichern im<br/>Arbeitsspeicher oder auf Platte