Przejdź do treści

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 Accepted natychmiast, 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).

Odniesienia