chap 4: Konzeption; lookup trade-off table; longtable fix for runaway float loop

This commit is contained in:
2026-08-25 20:17:44 +02:00
parent 980e21c252
commit ebb506d227
13 changed files with 428 additions and 106 deletions
+15 -9
View File
@@ -1,10 +1,16 @@
flowchart TD
A[ResolveCustomerPrefixAsync\norgId, orgName] --> B{Fast-Path:\nGetObjectMetadata\nslug-name/}
B -->|Gefunden & ID passt| Z[✓ Fertig\n1 Request]
B -->|Nicht gefunden oder\nID passt nicht| C{Kollisions-Fast-Path:\nslug-name orgId /}
C -->|Gefunden| Z2[✓ Fertig\n2 Requests]
C -->|Nicht gefunden| D[Fallback: O-n\nListObjectsV2 alle\nTop-Level-Prefixes]
D -->|Ordner mit\npAssender ID gefunden| E[Rename auf\nkanonischen Namen]
E --> Z3[✓ Fertig\nnächster Lookup O-1]
D -->|Kein Ordner| F[Anlegen: Ordner +\nUnterstruktur 9560]
F --> Z4[✓ Fertig\nSeite leer]
A["ResolveCustomerPrefixAsync(orgId, orgName)"] --> B["Fast-Path:<br/>GetObjectMetadata auf<br/>slug(name)/"]
B -->|"Marker vorhanden<br/>und org-id passt"| Z1["Fertig — 1 Request"]
B -->|"fehlt oder<br/>fremde org-id"| C["Kollisions-Fast-Path:<br/>GetObjectMetadata auf<br/>slug(name) (orgId)/"]
C -->|"Marker vorhanden<br/>und org-id passt"| Z2["Fertig — 2 Requests"]
C -->|"nicht gefunden"| D["Fallback O(n):<br/>alle Top-Level-Prefixes<br/>auflisten und über<br/>org-id filtern"]
D -->|"Ordner gefunden"| E["Rename auf<br/>kanonischen Namen"]
E --> Z3["Fertig — nächster<br/>Lookup ist O(1)"]
D -->|"kein Ordner"| F["Kundenordner samt<br/>Typ-Unterordnern anlegen"]
F --> Z4["Fertig — Seite<br/>zeigt leeren Zustand"]
style Z1 fill:#d5e8d4,stroke:#82b366
style Z2 fill:#d5e8d4,stroke:#82b366
style Z3 fill:#fff2cc,stroke:#d6b656
style Z4 fill:#fff2cc,stroke:#d6b656
style D fill:#f8cecc,stroke:#b85450