chap 4: Konzeption; lookup trade-off table; longtable fix for runaway float loop
This commit is contained in:
@@ -1,18 +1,22 @@
|
||||
sequenceDiagram
|
||||
participant B as Browser
|
||||
autonumber
|
||||
actor U as Benutzer
|
||||
participant H as Houston
|
||||
participant AAD as Entra ID
|
||||
participant S3 as S3-Speicher
|
||||
|
||||
B->>H: GET /documents
|
||||
H->>H: Prüfe Claim Documents.Read
|
||||
alt Keine Rolle
|
||||
H-->>B: 403 Forbidden
|
||||
U->>H: GET /documents
|
||||
H->>AAD: Authentifizierung (OpenID Connect)
|
||||
AAD-->>H: Token mit Claims:<br/>roles, efecte:company_id,<br/>efecte:company_name
|
||||
|
||||
alt Rolle Documents.Read fehlt
|
||||
H-->>U: 403 Forbidden<br/>(Menuepunkt bereits ausgeblendet)
|
||||
else Rolle vorhanden
|
||||
H->>H: Lese efecte:company_id aus Claim
|
||||
H->>S3: ResolveCustomerPrefixAsync(orgId)
|
||||
S3-->>H: Kundenordner-Prefix
|
||||
H->>S3: ListObjectsV2(prefix)
|
||||
S3-->>H: Objektliste
|
||||
H-->>B: Documents-Seite
|
||||
H->>H: orgId, orgName aus Claims lesen
|
||||
H->>S3: ResolveCustomerPrefixAsync(orgId, orgName)
|
||||
S3-->>H: Prefix des Kundenordners
|
||||
H->>S3: ListObjectsV2(prefix, delimiter)
|
||||
S3-->>H: Objektliste des Kunden
|
||||
H->>H: Typ je Dokument aus<br/>Unterordner ableiten
|
||||
H-->>U: Dokumentenliste
|
||||
end
|
||||
|
||||
Binary file not shown.
@@ -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
|
||||
|
||||
Binary file not shown.
@@ -1,9 +1,22 @@
|
||||
flowchart TD
|
||||
B[(S3-Bucket\ndocuments-houston-prod)]
|
||||
B --> KA["Kunde A/\n[meta: efecte_org-id=42]"]
|
||||
B --> KB["Kunde B/\n[meta: efecte_org-id=77]"]
|
||||
KA --> D1[doc1.pdf\nuntyped]
|
||||
B["Bucket: documents-houston-prod"]
|
||||
B --> KA["Beispielkunde GmbH/<br/><i>Marker-Objekt mit<br/>Metadatum efecte-org-id = 42</i>"]
|
||||
B --> KB["Andere Firma AG/<br/><i>efecte-org-id = 77</i>"]
|
||||
|
||||
KA --> U1["Uebersicht.pdf<br/><i>ohne Typ</i>"]
|
||||
KA --> T1["Service-Protokoll/"]
|
||||
KA --> T2["Vertragsunterlagen/"]
|
||||
T1 --> D2[bericht-2026-07.pdf]
|
||||
T2 --> D3[SLA-2026.pdf]
|
||||
KA --> T2["Monitoring Reports/"]
|
||||
KA --> T3["Vertragsunterlagen/"]
|
||||
KA --> T4["... weitere Typordner"]
|
||||
|
||||
T1 --> D1["Protokoll-2026-07.pdf"]
|
||||
T2 --> D2["Report-Juli.pdf"]
|
||||
T3 --> D3["Rahmenvertrag.pdf"]
|
||||
T3 --> D4["Sharepoint-Ablage.url"]
|
||||
|
||||
style KA fill:#dae8fc,stroke:#6c8ebf
|
||||
style KB fill:#dae8fc,stroke:#6c8ebf
|
||||
style T1 fill:#fff2cc,stroke:#d6b656
|
||||
style T2 fill:#fff2cc,stroke:#d6b656
|
||||
style T3 fill:#fff2cc,stroke:#d6b656
|
||||
style T4 fill:#fff2cc,stroke:#d6b656
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user