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

@@ -3,7 +3,7 @@
Dieses Dokument beschreibt die Architektur und Datenflüsse für das **Lesen** und **Updaten** der digitalen Ausgänge im CPL-System. Unterstützt werden folgende Modi:
- `json`: Entwicklung mit editierbarer JSON-Datei
- `jsmock`: Simulation durch `digitalOutputsMockData.js`
- `jsSimulatedProd`: Simulation durch `digitalOutputsMockData.js`
- `production`: Reale CPL-Hardware über CGI-Platzhalter
---
@@ -19,7 +19,7 @@ flowchart TD
C --> D[fetchDigitalOutputsService]
D --> E{Moduswahl: NEXT_PUBLIC_CPL_MODE}
E -->|json oder jsmock| F[GET /api/cpl/getDigitalOutputsHandler.ts]
E -->|json oder jsSimulatedProd| F[GET /api/cpl/getDigitalOutputsHandler.ts]
F --> G[JSON oder geparste JS-Datei]
E -->|production| H[loadScript '/CPL?/CPL/SERVICE/digitalOutputs.js']
@@ -42,7 +42,7 @@ flowchart TD
B --> D{Modus: production oder nicht}
D -->|production| E1[window.location.href = /CPL?digitalOutputs.html&DAS0X=1]
D -->|json oder jsmock| F1[POST /api/cpl/updateDigitalOutputsHandler]
D -->|json oder jsSimulatedProd| F1[POST /api/cpl/updateDigitalOutputsHandler]
F1 --> F2[Schreibe JSON oder JS-Datei]
F2 & E1 --> G[Aktualisierte Zustände am Gerät]
@@ -52,11 +52,11 @@ flowchart TD
## 🌐 API-Endpunkte
| Route | Methode | Modus | Funktion |
| ----------------------------------------- | -------- | ---------------- | ------------------------------ |
| `/api/cpl/getDigitalOutputsHandler.ts` | `GET` | `json`, `jsmock` | Liest JSON-Datei oder JS-Datei |
| `/CPL?/CPL/SERVICE/digitalOutputs.js` | `SCRIPT` | `production` | Liefert Platzhalter vom Gerät |
| `/api/cpl/updateDigitalOutputsHandler.ts` | `POST` | `json`, `jsmock` | Speichert Statusänderung |
| Route | Methode | Modus | Funktion |
| ----------------------------------------- | -------- | ------------------------- | ------------------------------ |
| `/api/cpl/getDigitalOutputsHandler.ts` | `GET` | `json`, `jsSimulatedProd` | Liest JSON-Datei oder JS-Datei |
| `/CPL?/CPL/SERVICE/digitalOutputs.js` | `SCRIPT` | `production` | Liefert Platzhalter vom Gerät |
| `/api/cpl/updateDigitalOutputsHandler.ts` | `POST` | `json`, `jsSimulatedProd` | Speichert Statusänderung |
---
@@ -75,9 +75,9 @@ flowchart TD
```
/mocks/api/SERVICE/ → JSON-Dateien
/mocks/device-cgi-simulator/SERVICE/→ jsmock: digitalOutputsMockData.js
/mocks/device-cgi-simulator/SERVICE/→ jsSimulatedProd: digitalOutputsMockData.js
/public/CPL/SERVICE/ → production: digitalOutputs.js
/pages/api/cpl/ → GET/POST-Handler für json + jsmock
/pages/api/cpl/ → GET/POST-Handler für json + jsSimulatedProd
/components/main/einausgaenge/ → UI-Komponente: DigitalOutputsWidget.tsx
```
@@ -87,5 +87,5 @@ flowchart TD
- [x] Lesen funktioniert in allen Modi
- [x] Schreiben funktioniert in allen Modi (production nur über Redirect)
- [x] json + jsmock verwenden jetzt denselben API-Handler
- [x] json + jsSimulatedProd verwenden jetzt denselben API-Handler
- [x] Redux-Integration ist vollständig