README Update

This commit is contained in:
ISA
2025-05-14 15:10:15 +02:00
parent cabb2e77db
commit c2ffec7fd3
4 changed files with 105 additions and 410 deletions

127
README.md
View File

@@ -8,6 +8,9 @@ Die Anwendung ist mit **Next.js**, **React**, **Redux Toolkit**, **Tailwind CSS*
> Diese README richtet sich an Entwickler, Administratoren und fortgeschrittene Benutzer.
> Sie enthält technische Einrichtung, Systemüberblick, Benutzeranleitung und Hinweise zur Webservice-Integration.
> 🖥 Entwicklung & Test unter Windows 11 mit Node.js v18.17.1 und IIS
> 📦 MySQL 8.0 läuft lokal in einem Docker-Container (nur für Entwicklung)
> 🗄 In der Produktionsumgebung läuft ein echter Windows-MySQL-Dienst
## 📌 Ziel des Projekts in 30 Sekunden
@@ -16,6 +19,17 @@ Sie funktioniert vollständig lokal und offline auf Windows-Servern gesteuer
---
## 🧰 Erste Schritte für Entwickler
```bash
git clone http://10.10.0.12:3000/ISA/nodeMap
cd nodeMap
npm install
npm run dev
```
---
## 🧭 Zielumgebung
- Windows-Produktionsserver (offline, kein Internet)
@@ -27,7 +41,7 @@ Sie funktioniert vollständig lokal und offline auf Windows-Servern gesteuer
## 🔄 Wie funktioniert das System?
1. TALAS ruft die App mit URL auf: `http://10.10.0.13:3000/?m=10&u=484`
1. TALAS ruft die App mit URL auf: `http://10.10.0.13/talas5/MessagesMap/mapTypC.aspx?m=12&u=484`
2. Die App liest `m` und `u` aus der URL
3. `MapComponent` lädt POIs, Linien, Rechte entsprechend
4. API-Endpunkte kommunizieren lokal mit Datenbankserver (MySQL)
@@ -42,9 +56,9 @@ Sie funktioniert vollständig lokal und offline auf Windows-Servern gesteuer
- POI hinzufügen, bearbeiten, verschieben, löschen
- Gerätestatus und Layeranzeige
- Intervallbasierte Datenaktualisierung
- Integration als iFrame in TALAS
- Integration als iFrame in TALAS.web
- Versionsanzeige über `.env.local`
- Testdaten per Mock-API möglich
- Testdaten per Mock-API möglich (nur in der Entwicklungsumgebung)
---
@@ -95,11 +109,13 @@ C:\inetpub\wwwroot/talas5/nodeMap
Beinhaltet:
- `.next/`, `node_modules/`, `public/`
- `components/`, `pages/`, `redux/`, `hooks/`, `services/`, `config/`, `utils/`, `lib/`
- `package.json`, `.env.local`
-Zum Erstellen des Windows-Dienstes nodeMapService werden folgende Dateien benötigt: nssm.exe, nssm Installation.md, Start-Dev.ps1 und StartNodeApp.bat
### 3. Starten
Erstellte Windows Dienst "nodeMapService" starten oder im Terminal
```bash
npm start
```
@@ -108,11 +124,10 @@ npm start
## 🔁 Code-Update
Wenn keine neue Bibliotheken installiert ist mit npm install:
Wenn keine neuen Bibliotheken installiert wurden mit npm install:
- `.next/` ersetzen
- `components/`, `redux/`, `config/`, etc. nur bei Änderungen
- `.env.local` ggf. anpassen
- `.env.local` bei Änderung
---
@@ -125,12 +140,12 @@ Wenn keine neue Bibliotheken installiert ist mit npm install:
Beispiel:
```
http://10.10.0.13:3000/?m=8&u=482
`http://10.10.0.13/talas5/MessagesMap/mapTypC.aspx?m=12&u=484`
```
---
## 🔗 Integration in TALAS
## 🔗 Integration in TALAS.web
- Die App wird in einem **iFrame** geladen
- Startet über `?m=X&u=Y` für Map-/User-IDs
@@ -148,7 +163,7 @@ NEXT_PUBLIC_SERVER_URL=http://10.10.0.13:3000
```
- Nur `NEXT_PUBLIC_...` ist im Browser sichtbar
- Keine Passwörter oder Tokens hier speichern
- Keine Passwörter oder vertraulichen Daten mit `NEXT_PUBLIC_` speichern diese sind im Browser sichtbar
---
@@ -191,10 +206,11 @@ if (process.env.NEXT_PUBLIC_DEBUG === 'true') console.log(...)
---
## 🚫 Tests
## Tests & Qualitätssicherung
- Jest & Cypress = nur Entwicklung
- Leaflet schwer testbar → manuell prüfen
- **E2E-Tests:** Cypress (nur in der Entwicklungsumgebung)
- **Unit-Tests:** Aktuell keine Jest-Tests aufgrund Leaflet-Komplexität
- **Empfehlung:** Manuelle Tests nach jedem Deployment durchführen (Checkliste vorbereiten)
---
@@ -232,11 +248,11 @@ NEXT_PUBLIC_SERVER_URL=http://10.10.0.13:3000
- Node.js und npm müssen installiert sein: https://nodejs.org
- MySQL Datenbank läuft in einem Docker-Container (lokal bei Entwicklung)
- TALAS V5 ist im IIS lokal installiert
- TALAS V5/TALAS.web ist im IIS lokal installiert
### Leaflet mapTiles
- Damit nicht ausversehen mapTiles gelöscht werden, werden die hier eingefügt, falls vorhanden ist dann nicht mehr nötig mapTiles auf dem server einzufügen:
- Damit nicht ausversehen mapTiles gelöscht werden beim Code Update, werden die hier eingefügt, wenn vorhanden, müssen keine mapTiles manuell kopiert werden mapTiles auf dem server einzufügen:
`C:\inetpub\wwwroot\talas5\TileMap`
### Serverkonfiguration
@@ -280,15 +296,9 @@ NEXT_PUBLIC_SERVER_URL=http://10.10.0.13:3000
---
## 📘 Hinweis
Diese README kombiniert technische Projektstruktur, Setup- & Deployment-Ablauf sowie Benutzeranleitung, um sowohl neue Entwickler als auch Administratoren umfassend einzuweisen.
---
## 📡 Webservice-Anbindung (Backend: TALAS.web)
NodeMap verwendet verschiedene Webservices, die von **TALAS V5** im IIS bereitgestellt werden.
NodeMap verwendet verschiedene Webservices, die von **TALAS V5/TALAS.web** im IIS bereitgestellt werden.
Diese Services liefern dynamische GIS-, Geräte- und Statusdaten für die MapComponent.
### URL des Webservice:
@@ -305,13 +315,13 @@ http://localhost/talas5/ClientData/WebServiceMap.asmx
| --------------------------- | ------------------------------------------ |
| `CablesStatic` | Liste aller Stränge |
| `GetIconsStatic` | Liste aller Icons |
| `GisLinesStatus` | Liste aller Statis der Linien |
| `GisLinesStatus` | Liste aller Status der Linien |
| `GisStationsMeasurements` | Liste aller Messungen der Geräte |
| `GisStationsStaticDistrict` | Liste aller Geraete einer bestimmten Karte |
| `GisStationsStatusDistrict` | Liste aller Statis der Geräte |
| `GisSystemStatic` | Liste aller angezeigten Systeme |
Die Webservices liefern meist JSON und werden im Frontend über `services/*.js` abgefragt.
Die Webservices liefern JSON und werden im Frontend über `services/*.js` abgefragt.
Die Daten werden verarbeitet, zwischengespeichert und z.T. über Redux oder Recoil in der Karte dargestellt.
➡ Damit alles funktioniert, müssen:
@@ -319,3 +329,72 @@ Die Daten werden verarbeitet, zwischengespeichert und z.T. über Redux oder R
- der IIS laufen
- der `WebServiceMap.asmx` erreichbar sein
- die IP in `.env.local` korrekt gesetzt sein
---
## 🔁 🧳 Standard-Deployment-Ablauf auf dem Server
### Zielverzeichnis:
```
C:\inetpub\wwwroot/talas5/nodeMap
```
### Schritte:
1. **Build erstellen**
Führe `npm run build` in der Entwicklungsumgebung aus
2. **Build-Dateien sammeln**
Kopiere folgende Ordner/Dateien in einen neuen Ordner:
- `.next/`
- `node_modules/`
- `public/`
- `package.json`
- `.env.local`
3. **IP-Adresse aktualisieren**
Verwende „Find in Files“ in VSCode, um z.B. `10.10.0.13` durch neue Server-IP zu ersetzen
4. **ZIP erstellen**
Packe den Build-Ordner als ZIP (z.B. `nodeMap_V1.1.62.zip`)
5. **ZIP auf Server hochladen**
6. **ZIP entpacken auf dem Server**
z.B. nach: `C:\inetpub\wwwroot/talas5/nodeMap V1.1.62`
7. **Dienst beenden (falls aktiv)**
Beende `NodeMapService`, falls dieser noch `npm run dev` nutzt
8. **Backup vom alten nodeMap-Ordner erstellen**
Benenne z.B. um in `nodeMap_Alt_1.1.56`
9. **Neuen Ordner umbenennen → `nodeMap`**
10. **Wechsle in neuen Ordner**
```powershell
cd C:\inetpub\wwwroot/talas5/nodeMap
```
11. **App starten**
Windows Server Dienst "nodeMapService" starten
oder in Terminal
```bash
npm start
```
12. **Testen im Browser**
```url
http://10.10.0.13/talas5/MessagesMap/mapTypC.aspx?m=12&u=484
```
13. Bei erst Installation auf dem Server Windows-Dienst `NodeMapService` auf dem Server erstellen
mit nssm.exe
> Der Dienst führt Batch-Skript `StartNodeApp.bat` aus.
> `StartNodeApp.bat` führt `Start-Dev.ps1` aus
> `Start-Dev.ps1`führt `npm start` aus