diff --git a/.env.development b/.env.development index a99b53c..dd39b43 100644 --- a/.env.development +++ b/.env.development @@ -6,5 +6,5 @@ NEXT_PUBLIC_USE_MOCK_BACKEND_LOOP_START=false NEXT_PUBLIC_EXPORT_STATIC=false NEXT_PUBLIC_USE_CGI=false # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.6.439 +NEXT_PUBLIC_APP_VERSION=1.6.440 NEXT_PUBLIC_CPL_MODE=jsmock # json (Entwicklungsumgebung) oder jsmock (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter) \ No newline at end of file diff --git a/.env.production b/.env.production index cece948..013b74a 100644 --- a/.env.production +++ b/.env.production @@ -5,5 +5,5 @@ NEXT_PUBLIC_CPL_API_PATH=/CPL NEXT_PUBLIC_EXPORT_STATIC=true NEXT_PUBLIC_USE_CGI=true # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.6.439 +NEXT_PUBLIC_APP_VERSION=1.6.440 NEXT_PUBLIC_CPL_MODE=production \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 0180ca9..1f4b13c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## [1.6.440] – 2025-06-21 + +- docs: move user documentation to docs/user-guide as single source of truth + +--- ## [1.6.439] – 2025-06-21 - chore: fetch to get in redux thunks files name diff --git a/docs/diagrams/analog-inputs-flow.md b/docs/diagrams/analog-inputs-flow.md new file mode 100644 index 0000000..225e36e --- /dev/null +++ b/docs/diagrams/analog-inputs-flow.md @@ -0,0 +1,71 @@ +# 📊 Architektur: Analoge Eingänge – Datenfluss & Struktur + +Diese Datei beschreibt den Datenfluss und die Trennung der Verantwortlichkeiten beim Laden der analogen Eingänge aus JavaScript-Mockdateien im Entwicklungsmodus (`NEXT_PUBLIC_NODE_ENV=development`). + +--- + +## 🎯 Ziel + +- Mockdaten in `.js`-Format (wie vom echten Gerät geliefert) +- Konvertierung in valide JSON-Objekte +- Einheitlicher Zugriff über `fetch` im Service +- Redux/Komponenten bleiben unabhängig von der Datenquelle + +--- + +## 📌 Verzeichnisstruktur (Beispiel) + +```txt +/mocks/device-cgi-simulator/SERVICE/analogInputsMockData.js +/pages/api/cpl/getAnalogInputsHandler.ts +/services/fetchAnalogInputsService.ts +/redux/thunks/getAnalogInputsThunk.ts +/components/AnalogInputsDisplay.tsx +``` + +--- + +## 📐 UML-Diagramm (Mermaid) + +```mermaid +flowchart TD + +subgraph Quelle + A1[analogInputsMockData.js – JS-Format mit window-Variablen] +end + +subgraph API + B1[getAnalogInputsHandler.ts] + A1 --> B1 +end + +subgraph Client + C1[fetchAnalogInputsService.ts] + D1[getAnalogInputsThunk.ts] + E1[React-Komponente: AnalogInputsDisplay] +end + +B1 --> C1 +C1 --> D1 +D1 --> E1 + + +``` + +--- + +## 🧠 Beschreibung + +- **JS-Datei** enthält `var win_analogInputsValues = [...]` usw. +- **API-Handler (`getAnalogInputsHandler.ts`)** importiert die Variablen und wandelt sie in eine JSON-Struktur um +- **Service (`fetchAnalogInputsService.ts`)** nutzt `fetch("/api/cpl/getAnalogInputsHandler")` und gibt JSON zurück +- **Thunk (`getAnalogInputsThunk.ts`)** ruft den Service auf und übergibt die Daten an Redux +- **Komponente (`AnalogInputsDisplay.tsx`)** nutzt `useSelector` zum Anzeigen + +--- + +## ✅ Vorteile + +- 🔄 Austauschbare Datenquelle (`js`, `json`, `CGI`, `DB`) +- 🧼 Saubere Trennung von Technik (API) und Fachlogik (Service/Redux) +- 🔍 Leicht testbar, lokal entwickelbar diff --git a/package-lock.json b/package-lock.json index 933f7b9..517a30d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cpl-v4", - "version": "1.6.439", + "version": "1.6.440", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "cpl-v4", - "version": "1.6.439", + "version": "1.6.440", "dependencies": { "@fontsource/roboto": "^5.1.0", "@iconify-icons/ri": "^1.2.10", diff --git a/package.json b/package.json index a52b833..aedb44b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cpl-v4", - "version": "1.6.439", + "version": "1.6.440", "private": true, "scripts": { "dev": "next dev", diff --git a/services/fetchAnalogInputsHistoryService.ts b/services/fetchAnalogInputsHistoryService.ts index a31e8a1..a46e001 100644 --- a/services/fetchAnalogInputsHistoryService.ts +++ b/services/fetchAnalogInputsHistoryService.ts @@ -21,10 +21,33 @@ export async function fetchAnalogInputsHistoryService(): Promise< const isDev = process.env.NODE_ENV === "development"; if (isDev) { - // ⬇️ ENTWICKLUNG: über API-Handler - const response = await fetch("/api/cpl/getAnalogInputsHistory"); - if (!response.ok) throw new Error("Fehler beim Laden der Mock-Daten"); - return await response.json(); + try { + // ⬇️ ENTWICKLUNG: über API-Handler + const response = await fetch("/api/cpl/getAnalogInputsHistory"); + + // 🔍 Log: Rohantwort prüfen + console.log("📡 [DEV] Raw response:", response); + + if (!response.ok) { + throw new Error( + `❌ Fehler beim Laden der Mock-Daten: ${response.statusText}` + ); + } + + // ✅ Versuch, JSON zu parsen + const data = await response.json(); + + // 🔍 Log: JSON anzeigen + console.log("✅ [DEV] Parsed JSON:", data); + + // 🔍 Validitätsprüfung (optional) + JSON.stringify(data); // Wenn das fehlschlägt, wird catch ausgelöst + + return data; + } catch (error) { + console.error("❗ [DEV] Fehler beim Verarbeiten der JSON-Daten:", error); + return {}; + } } // ⬇️ PRODUKTION: direkt vom CPL-Webserver holen