From 831ce5851a4200fb91a8c56d7025644c00417cf9 Mon Sep 17 00:00:00 2001 From: ISA Date: Mon, 23 Jun 2025 14:32:40 +0200 Subject: [PATCH] docs --- .env.development | 2 +- .env.production | 2 +- docs/README.md | 89 +++++++++++++++++++++-- docs/architecture.md | 21 +++--- docs/guide/webservices.md | 18 ++--- docs/nssm-exe-installation.md | 21 ++++-- docs/screenshots/nssm-service-editor.png | Bin 0 -> 15707 bytes package-lock.json | 4 +- package.json | 2 +- 9 files changed, 117 insertions(+), 42 deletions(-) create mode 100644 docs/screenshots/nssm-service-editor.png diff --git a/.env.development b/.env.development index bb135866c..a6a81d484 100644 --- a/.env.development +++ b/.env.development @@ -25,4 +25,4 @@ NEXT_PUBLIC_USE_MOCKS=true NEXT_PUBLIC_BASE_PATH=/talas5 # Oder leer lassen für direkten Zugriff -> NEXT_PUBLIC_BASE_PATH= # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.1.277 +NEXT_PUBLIC_APP_VERSION=1.1.278 diff --git a/.env.production b/.env.production index 20a52e4a4..6b1494b69 100644 --- a/.env.production +++ b/.env.production @@ -26,4 +26,4 @@ NEXT_PUBLIC_BASE_PATH=/talas5 # Oder leer lassen für direkten Zugriff -> NEXT_PUBLIC_BASE_PATH= # App-Versionsnummer -NEXT_PUBLIC_APP_VERSION=1.1.277 \ No newline at end of file +NEXT_PUBLIC_APP_VERSION=1.1.278 \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index ae12a69bc..e7a7f1894 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,14 +1,87 @@ -# Entwickler-Dokumentation +# 🚀 NodeMap – Einstieg für Entwickler -Willkommen in der technischen Dokumentation von NodeMap. +Willkommen in der NodeMap-Welt – einer Offline-Kartenanwendung zur Verwaltung von POIs und +Gerätestatus für TALAS.web. -📂 Wichtige Themen: +--- -- Webservices: `api/webservices.md` -- Redux / Fetch-Logik: `redux/api/fromWebService.md` -- Konfigurationsschema: `env/env.local.schema.md` -- Deployment: `deployment.md` +## 📚 Kapitelübersicht -Diese Doku ist für Entwickler, die an diesem Projekt mitarbeiten oder übernehmen. +- [🚀 NodeMap – Einstieg für Entwickler](#-nodemap--einstieg-für-entwickler) + - [📚 Kapitelübersicht](#-kapitelübersicht) + - [1. Was ist NodeMap?](#1-was-ist-nodemap) + - [2. Lokale Entwicklung](#2-lokale-entwicklung) + - [3. Systemübersicht](#3-systemübersicht) + - [4. Datenflüsse \& API](#4-datenflüsse--api) + - [5. Tipps](#5-tipps) + - [6. Deployment](#6-deployment) + +--- + +## 1. Was ist NodeMap? + +NodeMap ist ein Offline-Kartensystem auf Basis von Leaflet, React & Next.js, das über ein iFrame in +TALAS eingebettet wird. + +📷 Beispielansicht: +![Kartenansicht](/docs/screenshots/overview1.png) + +➡️ [Mehr erfahren...](/docs/guide/project-structure.md) + +--- + +## 2. Lokale Entwicklung + +👉 [Setup-Anleitung](docs/guide/setup-dev.md) + +- `git clone …` +- `npm install` +- `npm run dev` +- `.env.local` konfigurieren + +👨‍💻 Wenn du das Projekt starten kannst → bist du bereit für Schritt 3! + +--- + +## 3. Systemübersicht + +🔁 Was lädt die Karte? + +- POIs, Linien, Geräte, Rechte +- Datenquellen: Webservices (Port 80), eigene API (Port 3000) + +🧠 Architektur-Doku: +➡️ [devices & Layerstruktur](docs/architecture/device-layer-connection-final.md) + +--- + +## 4. Datenflüsse & API + +📦 Die wichtigsten Schnittstellen: + +- [Webservices (TALAS)](docs/guide/webservices.md) +- [Datenbankzugriff (Next.js)](docs/services/database/README.md) +- [Redux Struktur](docs/guide/redux-zustand.md) + +--- + +## 5. Tipps + +- 🔍 Häufige Fehler: [FAQ & Troubleshooting](docs/guide/faq.md) +- 🔄 Version wird automatisch über Git erhöht +- 🔐 `.env.production` nie ins Git committen! + +--- + +## 6. Deployment + +📤 Anleitung: +➡️ [Deployment-Guide](docs/guide/deployment.md) + +- ZIP bauen +- Dienst starten oder `npm run start` +- Test via: `http:///talas5/...` + +--- diff --git a/docs/architecture.md b/docs/architecture.md index 2eaecc008..77041ac2a 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -72,14 +72,14 @@ sequenceDiagram ## 📁 Schlüsselfunktionen & Module -| Bereich | Datei/Modul | Aufgabe | -| ------------- | ----------------------------------------------- | ---------------------------------------- | -| Kartenlogik | `MapComponent.js` | Zentrale Initialisierung und Layer-Logik | -| Webservices | `services/webservice/` | Kommunikation mit TALAS V5 Webservice | -| Datenbank | `services/database/` | Zugriff auf lokale Next.js-API & DB | -| POIs | `AddPOIModal.js`, `PoiUpdateModal.js` | UI für POI-Erstellung & -Bearbeitung | -| Redux | `redux/slices/`, `redux/thunks/`, `redux/store` | Globaler State, API-Steuerung | -| Konfiguration | `.env.local`, `config.js`, dynamic URLs | IP, basePath, Ports | +| Bereich | Datei/Modul | Aufgabe | +| ------------- | --------------------------------------------------------------- | ---------------------------------------- | +| Kartenlogik | `MapComponent.js` | Zentrale Initialisierung und Layer-Logik | +| Webservices | `services/webservice/` | Kommunikation mit TALAS V5 Webservice | +| Datenbank | `services/database/` | Zugriff auf lokale Next.js-API & DB | +| POIs | `AddPOIModal.js`, `PoiUpdateModal.js` | UI für POI-Erstellung & -Bearbeitung | +| Redux | `redux/slices/`, `redux/thunks/`, `redux/store` | Globaler State, API-Steuerung | +| Konfiguration | `.env.development`,`.env.production`, `config.js`, dynamic URLs | IP, basePath, Ports | --- @@ -99,10 +99,7 @@ sequenceDiagram ## 📦 Versionierung & Builds -- Version ist in `appVersion.js` definiert → wird über `NEXT_PUBLIC_APP_VERSION` eingeblendet -- Build erfolgt via `npm run build`, Auslieferung über `.next/` -- Nicht benötigte Dateien wie `__tests__`, `docs/`, `scripts/` etc. werden nicht in den Build - aufgenommen +- Version wird mit Husky Bibliothek automatisch erhöhert in `scripts/bumpVersion.js` --- diff --git a/docs/guide/webservices.md b/docs/guide/webservices.md index 825b65d75..0be856ef9 100644 --- a/docs/guide/webservices.md +++ b/docs/guide/webservices.md @@ -15,15 +15,15 @@ http://localhost/talas5/ClientData/WebServiceMap.asmx ### Verfügbare Methoden (Auszug): -| Endpunkt | Zweck / Datenquelle | -| --------------------------- | ------------------------------------------ | -| `CablesStatic` | Liste aller Stränge | -| `GetIconsStatic` | Liste aller Icons | -| `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 | +| Endpunkt | Zweck / Datenquelle | +| --------------------------- | ----------------------------------------- | +| `CablesStatic` | Liste aller Stränge | +| `GetIconsStatic` | Liste aller Icons | +| `GisLinesStatus` | Liste aller Status der Linien | +| `GisStationsMeasurements` | Liste aller Messungen der Geräte | +| `GisStationsStaticDistrict` | Liste aller Geräte einer bestimmten Karte | +| `GisStationsStatusDistrict` | Liste aller Statis der Geräte | +| `GisSystemStatic` | Liste aller angezeigten Systeme | Die Webservices liefern JSON und werden im Frontend über `services/*.js` abgefragt. Die Daten werden verarbeitet, zwischengespeichert und z. T. über Redux in der Karte dargestellt. diff --git a/docs/nssm-exe-installation.md b/docs/nssm-exe-installation.md index b03858905..3b39c73e8 100644 --- a/docs/nssm-exe-installation.md +++ b/docs/nssm-exe-installation.md @@ -1,6 +1,7 @@ ````markdown +- Sicherstellen, dass `nssm.exe` in `C:\inetpub\wwwroot\talas5\nodeMap\` vorhanden ist - Als Administrator Eingabeaufforderung oder PowerShell öffnen - Navigiere zu dem NodeMap Projekt Verzeichnis: @@ -9,17 +10,18 @@ ``` ```` -- Befehl zum Erstellen eines Dienstes: - Führen Sie den folgenden Befehl aus, um einen neuen Dienst zu erstellen: +- Befehl zum Erstellen eines Dienstes: Führen Sie den folgenden Befehl aus, um einen neuen Dienst zu + erstellen: ```shell - nssm.exe install NodeMapService + .\nssm.exe install NodeMapService ``` Nachdem Sie diesen Befehl ausgeführt haben, öffnet sich ein NSSM-Dialogfenster. - **Dienstkonfiguration:** - In dem geöffneten NSSM-Dialogfenster müssen Sie einige Parameter angeben: + ![NSSM service editor](/docs/screenshots/nssm-service-editor.png) + + **Dienstkonfiguration:** In dem geöffneten NSSM-Dialogfenster müssen Sie einige Parameter angeben: - **Path:** Der Pfad zur ausführbaren Datei, die der Dienst ausführen soll. ```shell @@ -31,10 +33,13 @@ ``` - **Arguments:** kann leer gelassen werden. -- Dienst starten: - Sobald der Dienst erstellt wurde, können Sie ihn starten. - Das können Sie entweder über die Eingabeaufforderung oder über die Diensteverwaltung von Windows tun. +- Dienst starten: Sobald der Dienst erstellt wurde, können Sie ihn starten. Das können Sie entweder + über die Eingabeaufforderung oder über die Diensteverwaltung von Windows tun. + + ![nodeMap Dienst](/docs/screenshots/Dienst-beenden.png) + Um den Dienst über die Eingabeaufforderung zu starten, verwenden Sie den folgenden Befehl: + ```shell nssm.exe start DienstName ``` diff --git a/docs/screenshots/nssm-service-editor.png b/docs/screenshots/nssm-service-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..c92f7717ba4d2d1f46f66225ded820d4f4f8d6b4 GIT binary patch literal 15707 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index f959d4531..53ca7036e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "nodemap", - "version": "1.1.277", + "version": "1.1.278", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "nodemap", - "version": "1.1.277", + "version": "1.1.278", "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", diff --git a/package.json b/package.json index 8e1383175..063533ea2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nodemap", - "version": "1.1.277", + "version": "1.1.278", "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0",