Tryb raportowy
Tryb raportowy służy do pobierania dużych wolumenów danych analitycznych, poza modelem transakcyjnym trybu żądaniowego. Integrator zleca wygenerowanie raportu, a wynik trafia asynchronicznie do repozytorium raportów należącego do integratora.
Charakterystyka
- Tysiące danych analitycznych — wolumeny nieadekwatne dla synchronicznego trybu żądaniowego.
- W pełni asynchroniczne działanie — zlecenie zwraca
202 Acceptednatychmiast, generowanie odbywa się w tle. - Szyfrowanie kluczem integracyjnym — wynik szyfrowany end-to-end kluczem publicznym integratora (RSA/AES-GCM), zob. Szyfrowanie.
- Obsługa dowolnego repozytorium analitycznego — wynik trafia do magazynu integratora (dziś: Azure Blob Storage), nie do infrastruktury KAMSOFT.
Przepływ informacji
flowchart LR
I["Aplikacja integratora"]:::integrator -- "Zlecenie" --> A["API.ERP"]:::api
A <--> D1["FK"]:::domain
A <--> D2["WMS"]:::domain
A <--> D3["HR"]:::domain
A -- "Raport" --> R["Repozytorium raportów"]:::repo
R -- "Powiadomienie" --> I
classDef integrator fill:#8BC34A,stroke:#558B2F,color:#000
classDef api fill:#03A9F4,stroke:#0277BD,color:#000
classDef domain fill:#FFA000,stroke:#E65100,color:#000
classDef repo fill:#FFFFFF,stroke:#333,color:#000
Sekwencja przetworzenia jednego zlecenia raportu:
sequenceDiagram
participant I as Aplikacja integratora
participant A as API.ERP
participant D as Systemy dziedzinowe (FK / WMS / HR / ESM)
participant R as Repozytorium raportów (integratora)
I->>A: Zlecenie (POST /v1/reports)
A-->>I: 202 Accepted + encryptedSessionKey
A->>D: Pobranie i agregacja danych źródłowych
D-->>A: Dane źródłowe
A->>A: Szyfrowanie wyniku (AES-256-GCM + RSA-OAEP)
A->>R: Raport (zaszyfrowany artefakt)
R-->>I: Powiadomienie
Krok Powiadomienie (repozytorium → integrator) odpowiada zdarzeniu gotowości pliku w magazynie integratora (np. zdarzenie Blob Storage po stronie integratora) — API.ERP nie wysyła dodatkowego callbacku; integrator sam nasłuchuje na swoim repozytorium lub odpytuje je po czasie wynikającym z runAt. Pełny opis zlecenia, szyfrowania i odszyfrowania wyniku: Raporty retrospektywne.
Kiedy używać
Tryb raportowy pasuje do eksportów analitycznych, zestawień okresowych i danych o wolumenie zbyt dużym dla pojedynczej odpowiedzi HTTP w trybie żądaniowym — np. raporty kalkulacji kosztów, dane do systemów ankietowania czy badań klinicznych, gdzie kluczowe są przewidywalne okna czasowe (runAt) i szyfrowanie end-to-end, a nie natychmiastowa reakcja na pojedyncze zdarzenie (do tego służy tryb rozgłoszeniowy).