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:
@@ -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
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
## ✅ TODOs
|
||||
|
||||
- [ ] TODO: In digitale Eingänge Modal Out of Service geht nicht in json , jsmock und production. readOnly?
|
||||
- [ ] TODO: In digitale Eingänge Modal Out of Service geht nicht in json , jsSimulatedProd und production. readOnly?
|
||||
|
||||
@@ -4,7 +4,7 @@ Dieses Diagramm beschreibt die Datenflussarchitektur des Services `fetchAnalogeE
|
||||
|
||||
## 🎯 Ziel
|
||||
|
||||
Egal ob `json`, `jsmock` oder `production`-Modus – der Service gibt **immer** ein einheitliches JSON-Objekt zurück.
|
||||
Egal ob `json`, `jsSimulatedProd` oder `production`-Modus – der Service gibt **immer** ein einheitliches JSON-Objekt zurück.
|
||||
|
||||
---
|
||||
|
||||
@@ -17,8 +17,8 @@ flowchart TD
|
||||
CheckMode -->|json| FetchJSON[📄 JSON-Datei laden: /CPLmockData/SERVICE/analogeEingaengeMockData.json]
|
||||
FetchJSON --> ReturnJSON1[✅ JSON zurückgeben]
|
||||
|
||||
CheckMode -->|jsmock| ImportJSMock[📜 JS-Datei importieren: analogeEingaengeMockData.js]
|
||||
ImportJSMock --> ParseMock[🔁 parseWindowData]
|
||||
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]
|
||||
@@ -37,7 +37,7 @@ flowchart TD
|
||||
In dieser Anwendung werden drei Betriebsmodi unterstützt:
|
||||
|
||||
- `json`: lädt Mockdaten über API-Handler
|
||||
- `jsmock`: lädt JS-Dateien mit `window.win_*` Variablen
|
||||
- `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
|
||||
@@ -48,7 +48,7 @@ Ziel: Alle Services liefern immer standardisiertes JSON-Objekt
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[.env: NEXT_PUBLIC_CPL_MODE] -->|json| B1[/api/.../APIHandler.ts/]
|
||||
A -->|jsmock / production| B2[window.win_* Variablen aus JS-Datei]
|
||||
A -->|jsSimulatedProd / production| B2[window.win_* Variablen aus JS-Datei]
|
||||
B1 --> C[fetchXYZService.ts]
|
||||
B2 --> C
|
||||
C --> D[Normiertes JSON-Objekt]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 🧩 Datenfluss & Architekturstrategie – Analoge Eingänge (Alle Modi)
|
||||
|
||||
Diese Dokumentation beschreibt die Architekturstrategie für die Verarbeitung von analogen Eingangsdaten in den drei unterstützten Modi: `jsmock`, `json` und `production`.
|
||||
Diese Dokumentation beschreibt die Architekturstrategie für die Verarbeitung von analogen Eingangsdaten in den drei unterstützten Modi: `jsSimulatedProd`, `json` und `production`.
|
||||
|
||||
---
|
||||
|
||||
@@ -18,7 +18,7 @@ Diese Dokumentation beschreibt die Architekturstrategie für die Verarbeitung vo
|
||||
```mermaid
|
||||
flowchart TD
|
||||
|
||||
subgraph JSMOCK-Modus
|
||||
subgraph jsSimulatedProd-Modus
|
||||
A1["analogInputsMockData.js - Mockdaten mit window-Variablen"]
|
||||
B1["/api/cpl/getAnalogInputsHandler.ts - API gibt Rohdaten zurück"]
|
||||
C1["fetchAnalogInputsService.ts - wandelt in JSON"]
|
||||
@@ -58,7 +58,7 @@ flowchart TD
|
||||
## 📁 Verzeichnisstruktur (Auszug)
|
||||
|
||||
```txt
|
||||
/mocks/device-cgi-simulator/SERVICE/*.js # jsmock-Modus
|
||||
/mocks/device-cgi-simulator/SERVICE/*.js # jsSimulatedProd-Modus
|
||||
/mocks/api/SERVICE/*.json # json-Modus
|
||||
/public/CPL/SERVICE/*.js # production-Modus (CGI-Daten im JS-Format)
|
||||
/services/fetchAnalogInputsService.ts # verarbeitet Rückgabe zu JSON
|
||||
|
||||
Reference in New Issue
Block a user