feat: jsSimulatedProd-Modus für analoge & digitale Eingänge implementiert

- neuen Modus `jsSimulatedProd` eingeführt für realitätsnahe Simulation auf Basis echter Produktionsdaten
- analoge Eingänge: analogInputsMockData.js eingebunden und dynamisch per Script geladen
- digitale Eingänge: digitalInputsMockData.js eingebunden mit window-Variablen (z. B. win_de_state, win_de_label etc.)
- fetchAnalogInputsService.ts und fetchDigitalInputsService.ts angepasst zur Modusprüfung und Script-Auswertung
- getAnalogInputsHandler.ts und getDigitalInputsHandler.ts geben im jsSimulatedProd-Modus JavaScript-Dateien aus
- .env.development setzt `NEXT_PUBLIC_CPL_MODE=jsSimulatedProd`
This commit is contained in:
Ismail Ali
2025-06-22 08:42:49 +02:00
parent 7d1e7ef88a
commit 041bc3e23e
20 changed files with 151 additions and 354 deletions

View File

@@ -1,23 +1,32 @@
## [1.6.442] 2025-06-22
- docs: add full architecture diagram and data flow for json, jsmock and production modes
---
## [1.6.441] 2025-06-21
- docs: add analog inputs architecture diagram and flow description
---
## [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
- chore: fetch to get in redux thunks files name
---
## [1.6.438] 2025-06-21
- chore(tsconfig): fix moduleResolution and path aliases for Next.js project
---
## [1.6.437] 2025-06-21
- chore: rename service/thunk files to follow get/fetch naming convention
@@ -56,7 +65,7 @@
## [1.6.431] 2025-06-20
- feat: Digitale & analoge Eingänge in allen Modi (json/jsmock/production) vollständig implementiert
- feat: Digitale & analoge Eingänge in allen Modi (json/jsSimulatedProd/production) vollständig implementiert
---
@@ -72,9 +81,9 @@ Alle Änderungen und Versionen des CPLv4.0 Frontends chronologisch dokumentiert.
- Digitale Eingänge (Meldungseingänge) sind jetzt vollständig implementiert:
- `json`: Mock-Daten werden editierbar über eine JSON-Datei verwaltet
- `jsmock`: JavaScript-basierte Simulation mit `window.win_di_state`, `win_di_label`, etc.
- `jsSimulatedProd`: JavaScript-basierte Simulation mit `window.win_di_state`, `win_di_label`, etc.
- `production`: Kommunikation über CGI-Befehle wie `DEN1=...`, `DEI1=...`
- Analoge Eingänge ebenfalls vollständig in allen Modi (json/jsmock/production) nutzbar
- Analoge Eingänge ebenfalls vollständig in allen Modi (json/jsSimulatedProd/production) nutzbar
- Die Statusanzeige für digitale Eingänge wird korrekt aus Redux gelesen (`input.status`)
- Redux-Struktur überarbeitet: `invert`, `status`, `counterActive`, `value` werden sauber getrennt
- Die Modi-Erkennung erfolgt automatisch über `NEXT_PUBLIC_CPL_MODE`
@@ -89,18 +98,18 @@ Alle Änderungen und Versionen des CPLv4.0 Frontends chronologisch dokumentiert.
- Die Schaltausgänge (digitale Ausgänge) sind jetzt in allen Modi vollständig funktionsfähig:
- `json` (lokale Entwicklung mit editierbaren Mock-Daten)
- `jsmock` (Simulation durch JavaScript-Variablen im `window`-Objekt)
- `jsSimulatedProd` (Simulation durch JavaScript-Variablen im `window`-Objekt)
- `production` (Platzhalterersetzung über CGI durch das echte CPL-Gerät)
- Die API `/api/cpl/updateDigitalOutputsHandler` verarbeitet POST-Daten je nach Modus:
- In `json`: Speicherung in `digitalOutputsMockData.json`
- In `jsmock`: Live-Änderung in `digitalOutputsMockData.js` per Regex
- In `jsSimulatedProd`: Live-Änderung in `digitalOutputsMockData.js` per Regex
- In `production`: Statusänderung über Redirect zu `/CPL?digitalOutputs.html&DAS0X=1`
- Die Datei `fetchDigitalOutputsService.ts` erkennt den aktiven Modus und lädt Daten kontextsensitiv
- Alle Werte werden über Redux bereitgestellt, die UI nutzt `useSelector()` zur Anzeige in `DigitalOutputsWidget.tsx`
- Mermaid-Dokumentation zur Architektur im Projekt ergänzt (`README_digitalOutputs_final.md`)- `json` und `jsmock` wurden zu einer gemeinsamen API `/api/cpl/getDigitalOutputsHandler.ts` zusammengeführt
- Mermaid-Dokumentation zur Architektur im Projekt ergänzt (`README_digitalOutputs_final.md`)- `json` und `jsSimulatedProd` wurden zu einer gemeinsamen API `/api/cpl/getDigitalOutputsHandler.ts` zusammengeführt
- Die API erkennt den Modus automatisch über `NEXT_PUBLIC_CPL_MODE`
- In `json` wird eine editierbare JSON-Datei gelesen und zurückgegeben
- In `jsmock` wird eine JavaScript-Datei per Regex analysiert und verarbeitet
- In `jsSimulatedProd` wird eine JavaScript-Datei per Regex analysiert und verarbeitet
- Die Logik in `fetchDigitalOutputsService.ts` wurde vereinfacht:
- Für beide Modi wird dieselbe API aufgerufen
- Nur in `production` wird das Script `/CPL?/CPL/SERVICE/digitalOutputs.js` dynamisch eingebunden
@@ -116,11 +125,11 @@ Alle Änderungen und Versionen des CPLv4.0 Frontends chronologisch dokumentiert.
- Die Schaltausgänge (digitale Ausgänge) sind jetzt in allen Modi vollständig funktionsfähig:
- `json` (lokale Entwicklung mit editierbaren Mock-Daten)
- `jsmock` (Simulation durch JavaScript-Variablen im `window`-Objekt)
- `jsSimulatedProd` (Simulation durch JavaScript-Variablen im `window`-Objekt)
- `production` (Platzhalterersetzung über CGI durch das echte CPL-Gerät)
- Die API `/api/cpl/updateDigitalOutputsHandler` verarbeitet POST-Daten je nach Modus:
- In `json`: Speicherung in `digitalOutputsMockData.json`
- In `jsmock`: Live-Änderung in `digitalOutputsMockData.js` per Regex
- In `jsSimulatedProd`: Live-Änderung in `digitalOutputsMockData.js` per Regex
- In `production`: Statusänderung über Redirect zu `/CPL?digitalOutputs.html&DAS0X=1`
- Die Datei `fetchDigitalOutputsService.ts` erkennt den aktiven Modus und lädt Daten kontextsensitiv
- Alle Werte werden über Redux bereitgestellt, die UI nutzt `useSelector()` zur Anzeige in `DigitalOutputsWidget.tsx`