# Architektur: fetchAnalogeEingaengeService.ts

Dieses Diagramm beschreibt die Datenflussarchitektur des Services `fetchAnalogeEingaengeService.ts`.

## 🎯 Ziel

Egal ob `json`, `jsSimulatedProd` oder `production`-Modus – der Service gibt **immer** ein einheitliches JSON-Objekt zurück.

---

## 🧠 Datenfluss

```mermaid
flowchart TD
    Start[fetchAnalogeEingaengeService aufgerufen] --> CheckMode{CPL Mode}

    CheckMode -->|json| FetchJSON[📄 JSON-Datei laden: /CPLmockData/SERVICE/analogeEingaengeMockData.json]
    FetchJSON --> ReturnJSON1[✅ JSON zurückgeben]

    CheckMode -->|jsSimulatedProd| ImportjsSimulatedProd[📜 JS-Datei importieren: analogeEingaengeMockData.js]
    ImportjsSimulatedProd --> ParseMock[🔁 parseWindowData]
    ParseMock --> ReturnJSON2[✅ JSON zurückgeben]

    CheckMode -->|production| LoadCGI[🌐 JS vom Gerät laden: /CPL/SERVICE/analogeEingaenge.js]
    LoadCGI --> ParseCGI[🔁 parseWindowData]
    ParseCGI --> ReturnJSON3[✅ JSON zurückgeben]

    style ReturnJSON1 fill:#d4f4dd
    style ReturnJSON2 fill:#d4f4dd
    style ReturnJSON3 fill:#d4f4dd
```

#

# Architecture

In dieser Anwendung werden drei Betriebsmodi unterstützt:

- `json`: lädt Mockdaten über API-Handler
- `jsSimulatedProd`: lädt JS-Dateien mit `window.win_*` Variablen
- `production`: lädt Platzhalterdaten vom echten Gerät (CPL)

Ziel: Alle Services liefern immer standardisiertes JSON-Objekt  
➡️ Redux und UI bleiben unabhängig von Datenquelle

---

```mermaid
flowchart TD
  A[.env: NEXT_PUBLIC_CPL_MODE] -->|json| B1[/api/.../APIHandler.ts/]
  A -->|jsSimulatedProd / production| B2[window.win_* Variablen aus JS-Datei]
  B1 --> C[fetchXYZService.ts]
  B2 --> C
  C --> D[Normiertes JSON-Objekt]
  D --> E[Redux Thunk]
  E --> F[Redux Slice]
  F --> G[UI-Komponente z.B. Tabelle]

  subgraph Service-Schicht
    C
  end

  subgraph Redux-Schicht
    E --> F
  end

  subgraph UI-Schicht
    G
  end
```
