final-cleanup: Produktionsfertige Konfiguration - Alle Ports auf 443 vereinheitlicht, TLS-Zertifikate vorgeneriert, Zentraler Installer erstellt

This commit is contained in:
2025-05-26 22:16:22 +02:00
parent 7aa70cf976
commit f719f74195
40 changed files with 598 additions and 11815 deletions

View File

@@ -0,0 +1,123 @@
# Blueprint-Integration in app.py
## Übersicht
Alle Flask-Blueprints wurden erfolgreich in die zentrale `app.py` Datei integriert. Dies vereinfacht die Anwendungsstruktur und reduziert die Komplexität der Codebase.
## Durchgeführte Änderungen
### 1. Entfernte Blueprint-Dateien
- `backend/app/blueprints/auth.py` - Authentifizierungs-Routen
- `backend/app/blueprints/user.py` - Benutzer-Verwaltungsrouten
- `backend/app/blueprints/api.py` - API-Routen
- `backend/app/blueprints/kiosk_control.py` - Kiosk-Steuerungsrouten
- `backend/app/blueprints/__init__.py` - Blueprint-Initialisierung
- Gesamter `backend/app/blueprints/` Ordner wurde entfernt
### 2. Integrierte Funktionalitäten in app.py
#### Authentifizierungs-Routen (ehemals auth.py)
- `/auth/login` - Login-Seite und -Verarbeitung (GET/POST)
- `/auth/logout` - Logout-Funktionalität (GET/POST)
- `/auth/api/login` - API-Login für Frontend
- `/auth/api/callback` - API-Callback-Verarbeitung
#### Benutzer-Routen (ehemals user.py)
- `/user/profile` - Benutzerprofil anzeigen
- `/user/settings` - Benutzereinstellungen anzeigen
- `/user/update-profile` - Profil aktualisieren (POST)
- `/user/api/update-settings` - API für Einstellungen (POST)
- `/user/update-settings` - Einstellungen aktualisieren (POST)
- `/user/change-password` - Passwort ändern (POST)
- `/user/export` - Benutzerdaten exportieren (GET)
- `/user/profile` - Profil-API (PUT)
#### Kiosk-Steuerungsrouten (ehemals kiosk_control.py)
- `/api/kiosk/status` - Kiosk-Status abfragen (GET)
- `/api/kiosk/deactivate` - Kiosk deaktivieren (POST)
- `/api/kiosk/activate` - Kiosk aktivieren (POST)
- `/api/kiosk/restart` - System-Neustart (POST)
#### Job-Management-Routen (ehemals api.py)
- `/api/jobs` - Jobs abrufen/erstellen (GET/POST)
- `/api/jobs/<id>` - Spezifischen Job abrufen/löschen (GET/DELETE)
- `/api/jobs/active` - Aktive Jobs abrufen (GET)
- `/api/jobs/current` - Aktuellen Job abrufen (GET)
- `/api/jobs/<id>/extend` - Job verlängern (POST)
- `/api/jobs/<id>/finish` - Job beenden (POST)
- `/api/jobs/<id>/cancel` - Job abbrechen (POST)
#### Drucker-Management-Routen (ehemals api.py)
- `/api/printers` - Drucker abrufen/erstellen (GET/POST)
- `/api/printers/status` - Drucker-Status mit Live-Check (GET)
- `/api/printers/<id>` - Spezifischen Drucker abrufen/bearbeiten/löschen (GET/PUT/DELETE)
#### Admin-Routen
- `/api/admin/users` - Benutzer verwalten (GET)
- `/api/admin/users/<id>` - Benutzer bearbeiten/löschen (PUT/DELETE)
- `/api/stats` - Statistiken abrufen (GET)
#### UI-Routen
- `/` - Hauptseite
- `/dashboard` - Dashboard
- `/printers` - Drucker-Übersicht
- `/jobs` - Jobs-Übersicht
- `/stats` - Statistiken
- `/admin-dashboard` - Admin-Panel
- `/demo` - Komponenten-Demo
### 3. Hilfsfunktionen
- `check_printer_status()` - Einzelner Drucker-Status-Check
- `check_multiple_printers_status()` - Paralleler Status-Check für mehrere Drucker
- `job_owner_required` - Decorator für Job-Besitzer-Berechtigung
### 4. Fehlerbehandlung
- 404 - Seite nicht gefunden
- 500 - Interner Serverfehler
- 403 - Zugriff verweigert
### 5. Entfernte Imports
Aus `app.py` entfernt:
```python
from blueprints.auth import auth_bp
from blueprints.user import user_bp
from blueprints.api import api_bp
from blueprints.kiosk_control import kiosk_bp
```
Und die entsprechenden Blueprint-Registrierungen:
```python
app.register_blueprint(auth_bp, url_prefix="/auth")
app.register_blueprint(user_bp, url_prefix="/user")
app.register_blueprint(api_bp, url_prefix="/api")
app.register_blueprint(kiosk_bp, url_prefix="/api/kiosk")
```
## Vorteile der Integration
1. **Vereinfachte Struktur**: Alle Routen sind in einer zentralen Datei
2. **Reduzierte Komplexität**: Keine Blueprint-Verwaltung mehr nötig
3. **Bessere Übersicht**: Alle Funktionalitäten auf einen Blick
4. **Einfachere Wartung**: Weniger Dateien zu verwalten
5. **Direkte Imports**: Keine Blueprint-spezifischen Imports mehr nötig
## Getestete Funktionalitäten
Alle ursprünglichen Funktionalitäten wurden beibehalten:
- ✅ Benutzer-Authentifizierung
- ✅ Job-Management
- ✅ Drucker-Verwaltung
- ✅ Admin-Funktionen
- ✅ Kiosk-Modus
- ✅ API-Endpunkte
- ✅ Fehlerbehandlung
## Nächste Schritte
Die Anwendung ist jetzt bereit für den Betrieb ohne Blueprints. Alle Routen und Funktionalitäten sind vollständig in `app.py` integriert und funktionsfähig.
---
**Datum**: $(date)
**Status**: ✅ Abgeschlossen
**Getestet**: ✅ Alle Routen funktional

169
docs/COMMON_ERRORS.md Normal file
View File

@@ -0,0 +1,169 @@
# Häufige Fehler und Lösungen - Mercedes-Benz MYP Platform
## JavaScript-Fehler
### 1. `animateCounters is not defined`
**Problem:** Die Funktion `animateCounters` wird in `admin.js` aufgerufen, aber nicht definiert.
**Lösung:** Funktion wurde hinzugefügt in `admin.js` mit Intersection Observer für bessere Performance.
### 2. `showPrinterModal is not defined`
**Problem:** Die Funktion `showPrinterModal` wird aufgerufen, aber nicht definiert.
**Lösung:** Vollständige Modal-Funktion mit Formular-Handling wurde hinzugefügt.
### 3. `JSON.parse: unexpected character at line 1 column 1`
**Problem:** API-Aufrufe geben HTML statt JSON zurück (404-Fehler).
**Ursache:** Frontend läuft auf Port 8443, Backend auf Port 5000.
**Lösung:** Dynamische API-URL-Erkennung mit intelligentem Fallback implementiert.
## API-Fehler (404 NOT FOUND)
### 1. `/api/admin/stats/live` - 404 Fehler
**Problem:** Live-Statistiken API gibt 404 zurück.
**Ursache:** Port-Mismatch zwischen Frontend (8443) und Backend (5000).
**Lösung:**
- Dynamische API-Base-URL-Erkennung implementiert
- Automatischer Fallback von HTTPS:8443 zu HTTP:5000
- Verbesserte Fehlerbehandlung in der Route
- Sichere Admin-Berechtigung-Prüfung
### 2. `/api/admin/system/status` - 404 Fehler
**Problem:** System-Status API gibt 404 zurück.
**Lösung:**
- Dynamische URL-Erkennung implementiert
- Sichere psutil-Imports mit Fallback
- Verbesserte Fehlerbehandlung
- Graceful degradation wenn Systemüberwachung nicht verfügbar
### 3. `/api/admin/database/status` - 404 Fehler
**Problem:** Datenbank-Status API gibt 404 zurück.
**Lösung:**
- Dynamische URL-Erkennung implementiert
- Sichere Datenbankpfad-Erkennung
- Verbesserte Verbindungstests
- Fallback für fehlende Dateien
## Modal-Dialog Probleme
### 1. Automatische Weiterleitung zu 404-Seiten
**Problem:** Modal-Formulare submitten automatisch und leiten zu nicht existierenden Routen weiter.
**Ursache:** Fehlende `preventDefault()` in Form-Event-Handlers.
**Lösung:**
- `e.preventDefault()` zu allen Form-Submit-Handlers hinzugefügt
- Explizite Event-Handler-Bindung statt onclick-Attribute
- Verbesserte Modal-Schließung nach erfolgreichen Aktionen
### 2. Modal öffnet und schließt sofort
**Problem:** Modal-Dialoge erscheinen kurz und verschwinden dann.
**Ursache:** Automatische Form-Submission ohne preventDefault.
**Lösung:** Korrekte Event-Handler-Implementierung mit preventDefault.
## Port-Konfiguration Probleme
### 1. Server läuft auf Port 5000 statt 8443
**Problem:** Logs zeigen Port 5000, aber Frontend erwartet 8443.
**Ursache:** SSL-Konfiguration fehlgeschlagen, Fallback auf HTTP.
**Lösung:**
- Intelligente Port-Erkennung implementiert
- Automatischer Fallback von HTTPS:8443 zu HTTP:5000
- Dynamische API-Base-URL-Generierung
- Detailliertes Logging der URL-Erkennung
### 2. Cross-Origin-Probleme
**Problem:** CORS-Fehler bei API-Aufrufen zwischen verschiedenen Ports.
**Lösung:** Dynamische URL-Erkennung verhindert Cross-Origin-Requests.
### 3. Favicon 404-Fehler
**Problem:** `/favicon.ico` gibt 404 zurück.
**Lösung:** Route hinzugefügt die vorhandene PNG-Datei verwendet.
## Debugging-Strategien
### 1. Admin-API-Test-Route
**Zweck:** Überprüfung ob Admin-API grundsätzlich funktioniert.
**Route:** `/api/admin/test`
**Verwendung:** Zeigt Benutzer-Status und Admin-Berechtigung an.
### 2. Debug-Routen-Übersicht
**Route:** `/debug/routes`
**Zweck:** Zeigt alle registrierten Flask-Routen an.
### 3. Verbesserte Fehlerbehandlung
- Alle Admin-API-Routen haben jetzt try-catch-Blöcke
- Detaillierte Fehlermeldungen
- Graceful degradation bei fehlenden Abhängigkeiten
- Intelligente URL-Erkennung mit Logging
### 4. URL-Debugging
**Konsolen-Logs:** Alle API-Aufrufe loggen jetzt die verwendete URL
**Port-Erkennung:** Detaillierte Informationen über erkannte Ports und Protokolle
**Fallback-Mechanismus:** Automatische Umschaltung zwischen Ports
## Präventive Maßnahmen
### 1. JavaScript-Funktionen
- Alle aufgerufenen Funktionen sind jetzt definiert
- Fallback-Mechanismen für fehlende Elemente
- Bessere Fehlerbehandlung in Event-Listenern
- Korrekte Form-Event-Handler mit preventDefault
### 2. API-Routen
- Konsistente Admin-Berechtigung-Prüfung
- Sichere Datenbankzugriffe mit finally-Blöcken
- Fallback-Werte für alle Statistiken
- Dynamische URL-Erkennung für alle API-Aufrufe
### 3. Template-Handling
- Alle Admin-Templates existieren
- Korrekte Template-Pfade
- Fehlerbehandlung für fehlende Templates
### 4. Port-Management
- Intelligente Port-Erkennung
- Automatische Fallback-Mechanismen
- Cross-Origin-Problem-Vermeidung
- Detailliertes URL-Logging
## Aktuelle Status
**Behoben:**
- `animateCounters` Funktion hinzugefügt
- `showPrinterModal` Funktion implementiert
- Admin-API-Routen verbessert
- Favicon-Route hinzugefügt
- Fehlerbehandlung verstärkt
- **Dynamische API-URL-Erkennung implementiert**
- **Modal-Dialog preventDefault-Problem behoben**
- **Port-Mismatch-Problem gelöst**
- **JSON-Parse-Fehler behoben**
🔄 **In Bearbeitung:**
- SSL-Konfiguration optimieren
- Live-Updates stabilisieren
⚠️ **Zu überwachen:**
- Admin-Berechtigung-Prüfung
- Datenbankverbindung-Stabilität
- JavaScript-Performance bei Animationen
- **API-URL-Fallback-Mechanismus**
## Nächste Schritte
1. **Server-Neustart testen** - Die Port-Erkennung sollte jetzt funktionieren
2. **Admin-Dashboard-Funktionalität verifizieren** - Alle Modals sollten funktionieren
3. **Live-Updates überwachen** - API-Aufrufe sollten erfolgreich sein
4. SSL-Konfiguration finalisieren
5. Performance-Optimierungen implementieren
## Technische Details
### Port-Erkennung-Algorithmus
1. **Gleicher Port:** Wenn Frontend und Backend auf gleichem Port → relative URLs
2. **HTTPS:8443 → HTTP:5000:** Automatischer Fallback für häufigsten Fall
3. **Andere Ports:** Standard-Backend-Port basierend auf Protokoll
4. **Logging:** Alle Entscheidungen werden in der Konsole geloggt
### Modal-Dialog-Fixes
- `e.preventDefault()` in allen Form-Submit-Handlers
- Explizite Event-Listener statt onclick-Attribute
- Korrekte Modal-Schließung nach erfolgreichen API-Aufrufen
- Verbesserte Fehlerbehandlung mit Benutzer-Feedback

42
docs/CREDENTIALS.md Normal file
View File

@@ -0,0 +1,42 @@
# Zugangsdaten für MYP-Plattform
Diese Datei enthält alle Zugangsdaten und Passwörter, die im Projekt verwendet werden. **Diese Datei sollte nie in ein öffentliches Repository hochgeladen werden!**
## Backend-Zugangsdaten
### Allgemeine Konfiguration
- **SECRET_KEY**: `7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F`
- **Kiosk-Deaktivierungspasswort**: `744563017196A`
### Smart-Steckdosen (TP-Link Tapo)
- **Benutzername**: `till.tomczak@mercedes-benz.com`
- **Passwort**: `744563017196A`
### Standard-Admin-Anmeldedaten
- **E-Mail**: `admin@mercedes-benz.com`
- **Passwort**: `744563017196A`
### Drucker-Steckdosen (TP-Link)
- **Standard-Benutzername**: `admin`
- **Standard-Passwort**: `admin`
## Frontend-Zugangsdaten
### GitHub OAuth-Anmeldung
- **Client ID**: `7c5d8bef1a5519ec1fdc`
- **Client Secret**: `5f1e586204358fbd53cf5fb7d418b3f06ccab8fd`
## Weitere Zugangsdaten
### Router-Zugang (sofern konfiguriert)
- **Benutzername**: `admin`
- **Passwort**: `vT6Vsd^p`
### SSL-Zertifikate
- Selbstsignierte Zertifikate werden automatisch für `localhost` generiert
- Zertifikatsdateien: `backend/instance/ssl/myp.crt` und `backend/instance/ssl/myp.key`
## Hinweise
- Alle Passwörter sollten in einer Produktionsumgebung geändert werden
- Diese Datei dient nur zu Dokumentationszwecken für Entwicklungs- und Testumgebungen
- In einer Produktionsumgebung sollten alle Zugangsdaten über sichere Umgebungsvariablen konfiguriert werden

351
docs/DEPLOYMENT.md Normal file
View File

@@ -0,0 +1,351 @@
# MYP Platform - Raspberry Pi Deployment Guide
## Übersicht
Diese Anleitung beschreibt die vollständige Installation und Konfiguration der MYP Platform auf Raspberry Pi Systemen.
## Voraussetzungen
### Hardware
- Raspberry Pi 4 (empfohlen) oder Raspberry Pi 3B+
- Mindestens 4GB RAM
- 32GB+ SD-Karte (Class 10)
- Netzwerkverbindung (Ethernet oder WiFi)
### Software
- Raspberry Pi OS (Bullseye oder neuer)
- SSH-Zugang aktiviert
- Benutzer `user` erstellt
## Installation
### 1. Projekt auf Raspberry Pi kopieren
```bash
# Auf dem Entwicklungsrechner
scp -r Projektarbeit-MYP user@raspberrypi:/home/user/
# Oder mit Git
ssh user@raspberrypi
cd /home/user
git clone <repository-url> Projektarbeit-MYP
```
### 2. Setup-Skript ausführen
```bash
ssh user@raspberrypi
cd /home/user/Projektarbeit-MYP/backend
chmod +x setup_raspberry_pi.sh
./setup_raspberry_pi.sh
```
Das Setup-Skript führt automatisch folgende Schritte aus:
1. **System-Updates**: Aktualisiert alle Pakete
2. **Abhängigkeiten**: Installiert Python, Nginx, Supervisor etc.
3. **Virtual Environment**: Erstellt isolierte Python-Umgebung
4. **Python-Pakete**: Installiert alle Requirements
5. **Verzeichnisse**: Erstellt notwendige Ordnerstruktur
6. **Datenbank**: Initialisiert SQLite-Datenbank
7. **SSL-Zertifikate**: Generiert selbstsignierte Zertifikate
8. **Services**: Konfiguriert Systemd, Nginx, Supervisor
9. **Firewall**: Öffnet notwendige Ports
10. **Drucker**: Trägt hardkodierte Drucker in DB ein
### 3. Manuelle Drucker-Konfiguration (optional)
Falls die Drucker separat konfiguriert werden sollen:
```bash
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python setup_drucker_db.py
```
## Konfiguration
### Pfadstruktur
```
/home/user/Projektarbeit-MYP/
├── backend/
│ ├── app/
│ │ ├── database/
│ │ │ └── myp.db
│ │ ├── logs/
│ │ │ ├── app/
│ │ │ ├── auth/
│ │ │ ├── jobs/
│ │ │ ├── printers/
│ │ │ ├── scheduler/
│ │ │ └── errors/
│ │ └── ...
│ ├── certs/
│ │ ├── myp.crt
│ │ └── myp.key
│ ├── venv/
│ └── requirements.txt
└── frontend/
└── ssl/
├── myp.crt
└── myp.key
```
### Hardkodierte Drucker
Die folgenden Drucker werden automatisch konfiguriert:
| Name | IP-Adresse | Status |
|------|------------|--------|
| Printer 1 | 192.168.0.100 | Available |
| Printer 2 | 192.168.0.101 | Available |
| Printer 3 | 192.168.0.102 | Available |
| Printer 4 | 192.168.0.103 | Available |
| Printer 5 | 192.168.0.104 | Available |
| Printer 6 | 192.168.0.106 | Available |
### Standard-Anmeldedaten
- **E-Mail**: admin@mercedes-benz.com
- **Passwort**: 744563017196A
## Services
### Systemd Service
```bash
# Service-Status prüfen
sudo systemctl status myp-platform
# Service neu starten
sudo systemctl restart myp-platform
# Service aktivieren/deaktivieren
sudo systemctl enable myp-platform
sudo systemctl disable myp-platform
# Logs anzeigen
sudo journalctl -u myp-platform -f
```
### Nginx
```bash
# Nginx-Status prüfen
sudo systemctl status nginx
# Konfiguration testen
sudo nginx -t
# Nginx neu laden
sudo systemctl reload nginx
```
### Supervisor
```bash
# Supervisor-Status
sudo supervisorctl status
# Service neu starten
sudo supervisorctl restart myp-platform
# Logs anzeigen
sudo supervisorctl tail -f myp-platform
```
## Zugriff
### URLs
- **HTTPS**: https://raspberrypi
- **HTTPS (IP)**: https://[IP-ADRESSE]
- **HTTP**: Automatische Weiterleitung zu HTTPS
### SSL-Zertifikat
Das System verwendet selbstsignierte SSL-Zertifikate:
- Browser-Warnung beim ersten Zugriff ist normal
- Zertifikat manuell akzeptieren
- Für Produktionsumgebung: Echte Zertifikate verwenden
## Wartung
### Logs
```bash
# Anwendungs-Logs
tail -f /home/user/Projektarbeit-MYP/backend/app/logs/app/app.log
# System-Logs
sudo journalctl -u myp-platform -f
# Nginx-Logs
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
```
### Datenbank-Backup
```bash
# Backup erstellen
cp /home/user/Projektarbeit-MYP/backend/app/database/myp.db \
/home/user/backup_$(date +%Y%m%d_%H%M%S).db
# Automatisches Backup (Crontab)
crontab -e
# Hinzufügen:
# 0 2 * * * cp /home/user/Projektarbeit-MYP/backend/app/database/myp.db /home/user/backup_$(date +\%Y\%m\%d).db
```
### Updates
```bash
# Code aktualisieren
cd /home/user/Projektarbeit-MYP
git pull
# Python-Abhängigkeiten aktualisieren
source backend/venv/bin/activate
pip install -r backend/requirements.txt
# Service neu starten
sudo systemctl restart myp-platform
```
## Troubleshooting
### Häufige Probleme
#### Service startet nicht
```bash
# Logs prüfen
sudo journalctl -u myp-platform -n 50
# Manuell starten (Debug)
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python app.py
```
#### SSL-Probleme
```bash
# Zertifikate neu generieren
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python -c "from utils.ssl_manager import ssl_manager; ssl_manager.generate_mercedes_certificate()"
# Nginx neu starten
sudo systemctl restart nginx
```
#### Datenbank-Probleme
```bash
# Datenbank neu initialisieren
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python -c "from models import init_database, create_initial_admin; init_database(); create_initial_admin()"
# Drucker neu einrichten
python setup_drucker_db.py
```
#### Port-Konflikte
```bash
# Verwendete Ports prüfen
sudo netstat -tlnp | grep :443
sudo netstat -tlnp | grep :80
# Prozesse beenden
sudo pkill -f "python app.py"
```
### Performance-Optimierung
#### Systemressourcen
```bash
# RAM-Nutzung prüfen
free -h
# CPU-Nutzung prüfen
htop
# Festplatte prüfen
df -h
```
#### Log-Rotation
```bash
# Logrotate konfigurieren
sudo tee /etc/logrotate.d/myp-platform > /dev/null <<EOF
/home/user/Projektarbeit-MYP/backend/app/logs/*/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
copytruncate
}
EOF
```
## Sicherheit
### Firewall
```bash
# UFW-Status prüfen
sudo ufw status
# Zusätzliche Regeln
sudo ufw allow from 192.168.0.0/24 to any port 22
sudo ufw deny 22
```
### SSL-Härtung
Für Produktionsumgebung:
1. Echte SSL-Zertifikate verwenden (Let's Encrypt)
2. HSTS aktivieren
3. Security Headers konfigurieren
4. Regelmäßige Updates
### Backup-Strategie
1. Tägliche Datenbank-Backups
2. Wöchentliche Vollbackups
3. Externe Speicherung
4. Restore-Tests
## Support
### Kontakt
- **E-Mail**: admin@mercedes-benz.com
- **Dokumentation**: /home/user/Projektarbeit-MYP/docs/
### Nützliche Befehle
```bash
# System-Informationen
hostnamectl
cat /etc/os-release
python3 --version
# Netzwerk-Informationen
ip addr show
hostname -I
# Service-Übersicht
systemctl list-units --type=service --state=running
```

View File

@@ -0,0 +1,160 @@
# Glassmorphism Enhancement Documentation
## Übersicht
Die Glassmorphism-Effekte in der MYP-Anwendung wurden erheblich verstärkt, um eine modernere und visuell ansprechendere Benutzeroberfläche zu schaffen. Diese Verbesserungen betreffen sowohl den Light- als auch den Dark-Mode.
## Implementierte Verbesserungen
### 1. Verstärkte Backdrop-Filter
- **Blur-Werte erhöht**: Von 12px-16px auf 20px-24px
- **Sättigung hinzugefügt**: saturate(180%-200%) für lebendigere Farben
- **Helligkeit angepasst**: brightness(110%-120%) für bessere Sichtbarkeit
### 2. Verbesserte Transparenz-Werte
- **Light Mode**: Hintergrund-Transparenz von 70% auf 60-70%
- **Dark Mode**: Hintergrund-Transparenz von 70% auf 60-80%
- **Rahmen**: Transparenz von 50% auf 20-40% für subtilere Grenzen
### 3. Erweiterte Box-Shadow-Effekte
- **Mehrschichtige Schatten**: Kombination aus großen weichen Schatten und feinen Rahmen-Highlights
- **Light Mode**: `0 25px 50px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(255, 255, 255, 0.1)`
- **Dark Mode**: `0 25px 50px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.05)`
## Betroffene Komponenten
### Navigation (Navbar)
```css
backdrop-filter: blur(24px) saturate(200%) brightness(120%);
background: rgba(255, 255, 255, 0.5); /* Light Mode */
background: rgba(0, 0, 0, 0.5); /* Dark Mode */
```
### Karten (Cards)
```css
backdrop-filter: blur(20px) saturate(180%) brightness(110%);
background: rgba(255, 255, 255, 0.7); /* Light Mode */
background: rgba(0, 0, 0, 0.7); /* Dark Mode */
```
### Buttons
```css
backdrop-filter: blur(16px) saturate(150%) brightness(110%);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(255, 255, 255, 0.1);
```
### Dropdown-Menüs
```css
backdrop-filter: blur(24px) saturate(200%) brightness(120%);
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.25), 0 0 0 1px rgba(255, 255, 255, 0.1);
```
### Formulare
```css
backdrop-filter: blur(16px) saturate(150%);
background: rgba(255, 255, 255, 0.6); /* Light Mode */
background: rgba(0, 0, 0, 0.6); /* Dark Mode */
```
## Neue CSS-Klassen
### Utility-Klassen
- `.glass-light` - Basis-Glaseffekt für Light Mode
- `.glass-dark` - Basis-Glaseffekt für Dark Mode
- `.glass-strong` - Verstärkter Glaseffekt
- `.glass-subtle` - Subtiler Glaseffekt
### Komponenten-Klassen
- `.glass-card-enhanced` - Erweiterte Karten mit Hover-Effekten
- `.glass-nav` - Navigation mit starkem Glaseffekt
- `.glass-btn` - Buttons mit Glasmorphism
- `.glass-modal` - Modale Dialoge mit intensivem Glaseffekt
- `.glass-input` - Formulareingaben mit Glaseffekt
- `.glass-dropdown` - Dropdown-Menüs mit Glaseffekt
### Interaktive Effekte
- `.glass-interactive` - Hover-Effekte mit verstärktem Blur
- `.glass-float` - Schwebende Animation für Glaselemente
## Responsive Anpassungen
### Mobile Geräte (max-width: 768px)
- Reduzierte Blur-Werte für bessere Performance
- Angepasste Schatten für kleinere Bildschirme
### Barrierefreiheit
- **High Contrast Mode**: Verstärkte Rahmen und reduzierte Blur-Werte
- **Reduced Motion**: Deaktivierte Animationen und Übergänge
## Performance-Optimierungen
### Browser-Kompatibilität
- `-webkit-backdrop-filter` für Safari-Unterstützung
- Fallback-Schatten für ältere Browser
### Hardware-Beschleunigung
- `transform` und `backdrop-filter` nutzen GPU-Beschleunigung
- Optimierte Animationen mit `cubic-bezier` Timing-Funktionen
## Implementierte Dateien
### Backend
- `backend/app/static/css/input.css` - Hauptstyles mit verstärkten Glassmorphism-Effekten
- `backend/app/static/css/glassmorphism.css` - Dedizierte Glassmorphism-Utility-Klassen
- `backend/app/static/css/output.css` - Kompilierte und minifizierte Styles
### Frontend
- `frontend/src/app/globals.css` - Erweiterte Glassmorphism-Utilities
- `frontend/tailwind.config.ts` - Erweiterte Backdrop-Blur und Box-Shadow Utilities
- `frontend/src/components/ui/card.tsx` - Verbesserte Card-Komponente
## Visuelle Verbesserungen
### Light Mode
- Hellere, luftigere Glaseffekte
- Subtile weiße Rahmen-Highlights
- Warme Farbsättigung
### Dark Mode
- Tiefere, mystischere Glaseffekte
- Dezente weiße Akzente
- Erhöhter Kontrast für bessere Lesbarkeit
## Browser-Support
- **Chrome/Edge**: Vollständige Unterstützung
- **Firefox**: Vollständige Unterstützung (ab Version 103)
- **Safari**: Vollständige Unterstützung mit `-webkit-` Präfix
- **Mobile Browser**: Optimierte Performance mit reduzierten Effekten
## Wartung und Updates
### CSS-Build-Prozess
```bash
cd backend/app
npx tailwindcss -i static/css/input.css -o static/css/output.css --minify
```
### Frontend-Build
```bash
cd frontend
npm run build
```
## Zukünftige Erweiterungen
### Geplante Features
- Adaptive Glasstärke basierend auf Systemleistung
- Dynamische Farbverläufe in Glaseffekten
- Erweiterte Animationen für Glasübergänge
- Benutzerdefinierte Glasstärke-Einstellungen
### Performance-Monitoring
- Überwachung der Render-Performance
- Automatische Fallbacks für schwächere Geräte
- Progressive Enhancement für moderne Browser
---
**Erstellt**: 26. Mai 2025
**Version**: 1.0
**Autor**: AI Assistant
**Status**: Implementiert und getestet

View File

@@ -0,0 +1,127 @@
# Glassmorphism Enhancement - Arbeitsabschluss
## Zusammenfassung der durchgeführten Arbeiten
### 🎯 Ziel erreicht
Die Glassmorphism-Effekte in der MYP-Anwendung wurden erfolgreich verstärkt und modernisiert. Alle geplanten Verbesserungen wurden implementiert und dokumentiert.
## ✅ Abgeschlossene Aufgaben
### 1. CSS-Verbesserungen
- **`backend/app/static/css/input.css`** - Hauptstyles mit verstärkten Glassmorphism-Effekten
- Backdrop-Filter von 12px-16px auf 20px-24px erhöht
- Sättigung (180%-200%) und Helligkeit (110%-120%) hinzugefügt
- Transparenz-Werte für Light/Dark Mode optimiert (60-80%)
- Mehrschichtige Box-Shadow-Effekte implementiert
- Button-Styles (.btn-primary, .btn-secondary, .btn-outline) verbessert
### 2. Dedizierte Glassmorphism-Bibliothek
- **`backend/app/static/css/glassmorphism.css`** - Neue Utility-Klassen erstellt
- Basis-Glaseffekte: `.glass-base`, `.glass-strong`, `.glass-subtle`
- Mode-spezifische Klassen: `.glass-light`, `.glass-dark`
- Komponenten-Klassen: `.glass-nav`, `.glass-card-enhanced`, `.glass-btn`
- Interaktive Effekte: `.glass-interactive`, `.glass-float`
- Responsive Anpassungen für mobile Geräte
- Barrierefreiheit: High Contrast Mode und Reduced Motion Support
### 3. Build-Prozess
- **CSS erfolgreich kompiliert** mit `npx tailwindcss`
- **Minifizierte Ausgabe** in `backend/app/static/css/output.css`
- **Warnung behoben**: caniuse-lite Datenbank aktualisiert
### 4. Dokumentation
- **`GLASSMORPHISM_ENHANCEMENT.md`** - Vollständige technische Dokumentation
- Detaillierte Beschreibung aller Verbesserungen
- Code-Beispiele für alle Komponenten
- Browser-Kompatibilität und Performance-Hinweise
- Wartungsanweisungen und Build-Prozess
- **`backend/ROADMAP.md`** - Aktualisiert mit UI/UX-Verbesserungen
- Neue Sektion für Glassmorphism-Design-System
- Status als "abgeschlossen" markiert
## 🔧 Technische Details
### Implementierte Effekte
```css
/* Beispiel für verstärkte Glassmorphism-Effekte */
backdrop-filter: blur(24px) saturate(200%) brightness(120%);
background: rgba(255, 255, 255, 0.6);
box-shadow: 0 25px 50px rgba(0, 0, 0, 0.15),
0 0 0 1px rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.2);
```
### Browser-Support
- ✅ Chrome/Edge: Vollständige Unterstützung
- ✅ Firefox: Vollständige Unterstützung (ab Version 103)
- ✅ Safari: Vollständige Unterstützung mit `-webkit-` Präfix
- ✅ Mobile Browser: Optimierte Performance
### Performance-Optimierungen
- GPU-Beschleunigung durch `transform` und `backdrop-filter`
- Reduzierte Blur-Werte für mobile Geräte
- Hardware-beschleunigte Animationen mit `cubic-bezier`
- Fallback-Schatten für ältere Browser
## 📁 Betroffene Dateien
### Neue Dateien
- `backend/app/static/css/glassmorphism.css` - Dedizierte Glassmorphism-Utilities
- `GLASSMORPHISM_ENHANCEMENT.md` - Technische Dokumentation
- `GLASSMORPHISM_SUMMARY.md` - Diese Zusammenfassung
### Modifizierte Dateien
- `backend/app/static/css/input.css` - Verstärkte Hauptstyles
- `backend/app/static/css/output.css` - Neu kompilierte CSS-Ausgabe
- `backend/ROADMAP.md` - Aktualisiert mit UI/UX-Verbesserungen
## 🎨 Visuelle Verbesserungen
### Light Mode
- Hellere, luftigere Glaseffekte
- Subtile weiße Rahmen-Highlights
- Warme Farbsättigung für bessere Lesbarkeit
### Dark Mode
- Tiefere, mystischere Glaseffekte
- Dezente weiße Akzente
- Erhöhter Kontrast für bessere Sichtbarkeit
### Interaktive Elemente
- Verstärkte Hover-Effekte mit erhöhtem Blur
- Schwebende Animationen für Glaselemente
- Sanfte Übergänge mit optimierten Timing-Funktionen
## 🚀 Nächste Schritte
### Sofort verfügbar
- Alle Glassmorphism-Effekte sind implementiert und einsatzbereit
- CSS ist kompiliert und optimiert
- Dokumentation ist vollständig
### Empfohlene Folgeaktionen
1. **Server-Neustart** für vollständige CSS-Aktualisierung
2. **Browser-Cache leeren** für sofortige Sichtbarkeit der Änderungen
3. **Cross-Browser-Tests** zur Verifikation der Kompatibilität
4. **Performance-Monitoring** bei intensiver Nutzung
### Zukünftige Erweiterungen
- Adaptive Glasstärke basierend auf Systemleistung
- Dynamische Farbverläufe in Glaseffekten
- Benutzerdefinierte Glasstärke-Einstellungen
- Erweiterte Animationen für Glasübergänge
## ✨ Ergebnis
Die MYP-Anwendung verfügt jetzt über ein modernes, professionelles Glassmorphism-Design-System mit:
- **Verstärkten visuellen Effekten** für bessere Ästhetik
- **Optimierter Performance** für alle Geräte
- **Vollständiger Barrierefreiheit** für alle Benutzer
- **Umfassender Dokumentation** für zukünftige Wartung
---
**Arbeitsabschluss**: 26. Mai 2025, 18:15 Uhr
**Status**: ✅ Vollständig abgeschlossen
**Qualität**: Produktionsreif
**Dokumentation**: Vollständig

121
docs/INSTALLATION.md Normal file
View File

@@ -0,0 +1,121 @@
# MYP Installationsanleitung
Diese Anleitung beschreibt die Schritte zur Installation und Konfiguration des Mercedes-Benz 3D-Druck-Management-Systems (MYP) für den Standort Berlin Werk 040.
## Voraussetzungen
- Windows 10/11 oder aktuelles Linux/macOS
- Docker Desktop installiert und konfiguriert
- OpenSSL installiert (für Windows: [Win64 OpenSSL v3.1.1](https://slproweb.com/products/Win32OpenSSL.html))
- Administratorrechte für die Hostnamen-Konfiguration
## Installationsschritte
### 1. Projekt herunterladen
Klonen Sie das Repository oder entpacken Sie das Archiv in ein Verzeichnis Ihrer Wahl.
### 2. Hostnamen konfigurieren
#### Windows:
1. PowerShell als Administrator starten (Rechtsklick -> "Als Administrator ausführen")
2. Zum Projektverzeichnis navigieren:
```powershell
cd C:\Pfad\zum\Projektarbeit-MYP
```
3. Hostnamen-Konfigurationsskript ausführen:
```powershell
.\setup_hosts.ps1
```
#### Linux/macOS:
1. Terminal öffnen
2. Zum Projektverzeichnis navigieren:
```bash
cd /pfad/zum/Projektarbeit-MYP
```
3. Hostnamen-Konfigurationsskript ausführen:
```bash
sudo ./setup_hosts.sh
```
### 3. SSL-Zertifikate generieren
#### Windows:
1. PowerShell als Administrator starten (falls nicht bereits offen)
2. Zum Projektverzeichnis navigieren
3. SSL-Zertifikat-Generierungsskript ausführen:
```powershell
.\generate_ssl_certs.ps1
```
#### Linux/macOS:
1. Terminal öffnen (falls nicht bereits offen)
2. Zum Projektverzeichnis navigieren
3. SSL-Zertifikat-Generierungsskript ausführen:
```bash
sudo ./generate_ssl_certs.sh
```
### 4. Docker-Container starten
Nachdem die Hostnamen und SSL-Zertifikate konfiguriert wurden, können Sie die Anwendung starten:
```
docker-compose up -d
```
Dies startet alle erforderlichen Container:
- Backend (Flask) auf `raspberrypi:443` mit HTTPS
- Frontend (Next.js) auf Port 3000
- Caddy Proxy auf `m040tbaraspi001.de040.corpintra.net:443` mit HTTPS
### 5. Zugriff auf die Anwendung
Nach dem Start können Sie auf die Anwendung über folgende URLs zugreifen:
- **Frontend**: https://m040tbaraspi001.de040.corpintra.net/
- **Backend API**: https://raspberrypi/
Da selbstsignierte Zertifikate verwendet werden, zeigt Ihr Browser beim ersten Zugriff eine Sicherheitswarnung an. Klicken Sie auf "Erweitert" und dann auf "Fortfahren" (oder ähnliche Option je nach Browser), um auf die Anwendung zuzugreifen.
## Fehlerbehebung
### Problem: Zertifikatsfehler im Browser
1. Überprüfen Sie, ob die SSL-Zertifikate korrekt generiert wurden
2. Führen Sie `generate_ssl_certs.ps1` (Windows) oder `generate_ssl_certs.sh` (Linux/macOS) erneut aus
3. Starten Sie die Docker-Container neu: `docker-compose restart`
### Problem: Hostnamen werden nicht aufgelöst
1. Überprüfen Sie, ob die Hosts-Einträge korrekt in der Hosts-Datei vorhanden sind:
- Windows: `type C:\Windows\System32\drivers\etc\hosts`
- Linux/macOS: `cat /etc/hosts`
2. Führen Sie das Hostnamen-Konfigurationsskript erneut aus
3. Stellen Sie sicher, dass die Hostnamen in den Docker-Container-Konfigurationen übereinstimmen
### Problem: Docker-Container starten nicht
1. Überprüfen Sie die Docker-Logs: `docker-compose logs`
2. Stellen Sie sicher, dass Docker Desktop läuft
3. Überprüfen Sie, ob die Ports 80 und 443 bereits verwendet werden:
- Windows: `netstat -an | findstr "80 443"`
- Linux/macOS: `sudo lsof -i :80,443`
## Update und Neustart
Um die Anwendung zu aktualisieren oder nach Änderungen neu zu starten:
1. Stoppen Sie die Container: `docker-compose down`
2. Aktualisieren Sie das Repository (falls erforderlich)
3. Bauen Sie die Container neu: `docker-compose build`
4. Starten Sie die Container neu: `docker-compose up -d`
## Zusätzliche Informationen
Weitere Informationen zur SSL-Konfiguration finden Sie in der Datei `SSL_KONFIGURATION.md`.

360
docs/LICENSE.md Executable file
View File

@@ -0,0 +1,360 @@
# Mercedes-Benz Inner Source License 1.0 ("ISL")
Copyright &copy; 2022 Mercedes-Benz Group AG
SPDX-License-Identifier: LicenseRef-MB-ISL-1.0
## 0. Preamble
0.0 This Mercedes-Benz Inner Source License 1.0 succeeds the
Daimler Inner Source License 1.0 as a later version and is similar in spirit.
0.1 Mercedes-Benz Group AG ("Mercedes-Benz") provides a platform for collaborative
development ("SCR") and use of source code and associated data (e.g. parameters,
documentation) for use by and for purposes of companies of the Mercedes-Benz
Group (§§ 15 et seq. Aktiengesetz, German Stock Companies Act; all such
companies together "Mercedes-Benz Companies"). This also includes the use by
third parties only as far as these are commissioned directly by a
Mercedes-Benz Company with performances for purposes of Mercedes-Benz Companies
("Commissioned Third Parties").
0.2 The SCR and cooperation model is named "Mercedes-Benz
Inner Source Platform". Inner Source
follows the pattern of Open Source software development, is however restricted to
use by and for purposes of Mercedes-Benz Companies due to technical, security,
relevance and majority reasons.
0.3 Source code uploads to repositories ("Projects") on the SCR come
with the expectation that other parties in this cooperation model will
improve such Projects through comments, suggestions, source code to
provide benefits of the collaboration for all involved parties.
## 1. Scope of ISL
1.1 The ISL is an agreement by a Mercedes-Benz Company or a Commissioned Third
Party, which contributes to or uses content on the SCR ("Participant"),
with Mercedes-Benz or another Mercedes-Benz Company also for the direct benefit of
other Mercedes-Benz Companies and Commissioned Third Parties. The direct
benefit of Commissioned Third Parties is limited to grant of rights
according to Section 4.4.
1.2 The ISL applies to Projects uploaded to or available on the SCR,
especially source code and data, that contain this `LICENSE.md` file
incorporating the unmodified ISL or that expressly refer to the ISL e.g.
by stating "Licensed under Mercedes-Benz Inner Source License 1.0" (all
together "Content").
1.3 The ISL applies to any and all handling and use of Content on the
SCR, including copying, integration, making and/or making available
modifications as well as any possible use of Content in foreseen or
unforeseen manner by any means.
## 2. Consent to and Prevalence of ISL
2.1 The ISL is accepted by a Mercedes-Benz Company by accessing or making use
of Content on the SCR through its employees or vicarious agents.
2.2 The ISL is accepted by a Commissioned Third Party by accessing or
making use of Content on the SCR through its employees or vicarious
agents. Subsidiarily, a user acting for a Commissioned Third Party
accepts the ISL by such action for himself/herself and on behalf of such
Commissioned Third Party.
2.3 Subsidiarily to Sections 2.1 and 2.2, the regulations in this ISL
for rights to Content in Sections 3 and 4 are accepted by and apply
analogously to any party, which contributes Content to the SCR, in
respect of the offer of concession of rights according to Section 3.1
and the scope of rights granted according to Section 4. Such party is
not able to accept an offer in respect of Content (see Section 3.2).
2.4 The ISL is prevalent for any Content on the SCR. Any exception from
the ISL is only valid if and applicable as far as (i) the ISL itself
expressly provides for other stipulations or such is expressly agreed
upon in written form for each individual case and (ii) in any case the
Content to which an exception applies is to be transparently marked as
underlying different stipulations.
2.5 The ISL itself can only be terminated extraordinarily for good cause
by notice in written form by one affected party to the other affected
parties in respect of specific affected Content. Any obligations which
arose before or are caused by such termination remain unaffected. The
stipulations on termination of rights according Section 6 of this ISL remain unaffected.
## 3. Offer of and Consent to Concession of Rights to Content available on SCR
3.1 The Mercedes-Benz Company or Commissioned Third Party which makes Content
available on the SCR thereby offers to any other Mercedes-Benz Company and
Commissioned Third Party the rights to Content described in Section 4.
This applies irrespective of the means of making available Content on
the SCR (e.g. upload, pull request, etc.). Contributions, e.g. through
pull request, to Content and/or Projects under ISL shall state,
"Licensed under Mercedes-Benz Inner Source License 1.0 and any later version
similar in spirit". Such offer is valid as long as such Content or a
modification of such Content is available on the SCR.
3.2 Any Mercedes-Benz Company can accept such offer in respect of Content
available on the SCR by accessing or using such Content in any way by
itself or through Commissioned Third Parties as agreed between the
Mercedes-Benz Company and the Commissioned Third Party in the course of
commissioning. A Commissioned Third Party can accept such offer only
within the scope of its duties commissioned by a Mercedes-Benz Company and
subject to Section 4.4 by accessing or using such Content. Prerequisite
for an acceptance is a valid agreement of the ISL. Any restriction or
reservation for acceptance of the ISL makes acceptance of the offer null
and void.
## 4. Rights granted to Content
4.1 Upon acceptance of an offer to Content,
the rights to such Content are granted directly by the Participant to
the accepting entity non-exclusively.
4.2 The rights to Content encompass any and all possible handling and
use of such Content for any purposes of Mercedes-Benz Companies in any
possible foreseen and unforeseen manner by any means and in any form.
This especially encompasses any reproduction, translation, adaptation,
arrangement and other modifications as well as the reproduction of the
results thereof, any form of distribution of Content or modified Content
including rental. This also encompasses any use without attribution to
any authors of Content as far as legally possible. The rights do not
entitle to remove any copyright information or legal notice unless
otherwise expressly entitled under this ISL and especially Section 5.5.
Any communication of Content to the public is subject to the additional
provisions of Section 5.
4.3 The rights to Content are granted to a Mercedes-Benz Company for the
duration of its membership to the Mercedes-Benz Companies.
4.4 The rights to Content granted to Commissioned Third Parties are
limited to the necessary use of Content for the benefit of performances
for purposes of Mercedes-Benz Companies as far as and as long as such
Commissioned Third Party is commissioned with such performances. For the
avoidance of doubt, rights to Content granted to Commissioned Third
Parties do also terminate with the end of the membership of its
commissioning Mercedes-Benz Company to the Mercedes-Benz Companies.
4.5 Any grant of rights to Content beyond the scope of this Section 4 by
a holder of rights by separate means remains
unaffected. As far as a Commissioned Third Party has granted exclusive
rights to specific content to a Mercedes-Benz Company, this Mercedes-Benz Company
consents to the grant of rights according to this Section 4 by ordering
or allowing the Commissioned Third Party to make such content available
on the SCR. Any grant of rights according to this ISL does not restrict
rights of a Mercedes-Benz Company to Content except as expressly stated in
this Section 4.
4.6 Any rights granted to specific Content according to this Section 4
remain unaffected if the availability of the respective Content on the
SCR ends.
4.7 Any license terms and conditions pertaining to Free and Open Source
Software (FOSS) as parts of Content or parts of Content from third
parties shall prevail over this Section 4. Any obligations of a
Participant in connection with FOSS remain unaffected, especially any
obligations of a Commissioned Third Parties in the context of its
commission.
4.8 Use of licensed Content under a particular version of the ISL, may
continue under the terms of that version of the ISL notwithstanding the
application of a later ISL version to a repository. Any party
contributing to a repository accepts and grants rights to Content
including such later application of a later ISL version in accordance
with Section 3.1.
4.9 Any Participant who makes Content available on a repository in the
SCR entitles the employee responsible for a Project ("Repository Owner")
of such repository to decide on external use of such Content according
to Section 5 in his/her own discretion as far as entitled by its respective
Mercedes-Benz Company.
## 5. External Use of Content
5.1 Any use of Content beyond the internal purposes of Mercedes-Benz Companies
requires the prior express consent of the Repository Owner as far as
entitled by its respective Mercedes-Benz Company in each individual case. Use
beyond internal purposes of Mercedes-Benz Companies in particular applies to
communication of Content to the public, including making available
Content or modified Content to the public ("External Use"), whether on a
restricted basis or by way of open source software. Consent to External
Use is deemed to be given with upload of Content to the SCR, subject to
the following provisions. This prerequisite of consent must not be
circumvented in any way (e.g. by forking a repository).
5.2 The rights to Content granted to Commissioned Third Parties are
limited according to this ISL and do not
include the rights to External Use.
5.3 The External Use in form of publication under an open source license
is limited to the Repository Owner, as far as entitled by the employing
Mercedes-Benz Company.
5.4 For any Content intended for External Use, all current standards,
especially for source code, of Mercedes-Benz Companies apply irrespective of
the ISL. The Repository Owner has to decide on any External Use
including its respective scope in each individual case, taking into
account the foreseen benefit for Mercedes-Benz Companies of External
Use as well as the inevitable loss of confidentiality of externally
disclosed Content. The Repository Owner has to withdraw
consent to External Use if its prerequisites lapse. Any Repository Owner
shall adequately document any decision in respect of External Use of
Content in the repository including the decision and date of decision.
5.5 As long as the necessary consent of the Repository Owner is not
withdrawn, the consent includes the External Use of any later
contributions to Content of such repository, irrespective of the means
of a contribution (e.g. upload, pull request, etc.). Any rights already
granted for External Use of specific Content remain unaffected by a
later withdrawal of necessary consent to External Use.
5.6 Any External Use of Content requires prior relicensing of the
Content, e.g. using a Mercedes-Benz proprietary license. For the avoidance of
doubt, this ISL shall not be used in externally disclosed Content.
5.7 Any Participant has to instruct and entitle its Repository Owners
according to this Section 5.
## 6. Termination of Rights granted to Content
6.1 Any rights to any Content granted to a recipient according to
Section 4 terminate automatically and completely if the recipient of
such rights
(i) declares a termination of the ISL, except within the scope and
under the prerequisites of Section 2.5,
(ii) violates the scope of rights granted by this ISL by acts or
omissions by itself or through third parties, in case of a Mercedes-Benz
Company only after a reasonable cure period expressly set has lapsed
without effect, or
(iii) is a legal entity whose membership to the Mercedes-Benz Companies
ends. In case of termination of membership of a Mercedes-Benz Company to the
Mercedes-Benz Companies "Former Member", the Former Member requires a
separate agreement with the Content providing Mercedes-Benz Companies for
the further use of Content.
For the avoidance of doubt, any rights granted to Content provided by
a Former Member do not terminate by this Section 6.
6.2 Any rights to specific Content granted to a Commissioned Third Party
terminate completely and automatically if the commissioning with the
performances for Mercedes-Benz Companies, which require the use of the
affected Content, ends for whatsoever reason.
6.3 If the ISL is terminated according to Section 2.5, any and all
rights to affected Content granted by the terminating party to the
affected parties terminate completely and automatically.
6.4 If rights to Content are terminated according to Section 6.1(ii) the
recipient may request a license to Content from the offering Mercedes-Benz
Company at a later point in time. It is solely up to the discretion of
the offering Mercedes-Benz Company to grant rights to such party under the ISL
again.
## 7. Prerequisites for Use of Content available on SCR
7.1 It lies completely in the sole responsibility of any recipient of
any Content to assess and verify if and to which extent such Content is
suitable and technically qualified to be used for a particular purpose
and a particular application intended by such recipient. Any contractual
obligations and duties of Commissioned Third Parties and commissioned
Mercedes-Benz Companies (a Mercedes-Benz Company that is commissioned by another
Mercedes-Benz Company), especially based on any contract with a Mercedes-Benz
Company, remain unaffected and are not restricted.
7.2 The user is solely and completely responsible for any use of Content
by itself and on its behalf.
7.3 The user is solely and completely responsible for the fulfillment of
any obligations in connection with Content, especially arising out of
Free and Open Source licenses or licenses for content from third
parties.
## 8. Remuneration, Warranty and Liability
8.1 Content is made available and rights to Content are granted without
remuneration but with respect to Section 0.3.
8.2 Any Content is made available on the SCR "as is" without warranty.
There is no warranty provided by any Participant beyond mandatory
statutory obligations and subject to Section 8.4.
8.3 No Participant assumes any liability exceeding mandatory statutory
obligations (intentional damage; damage to life and/or body; statutory
product liability). This especially applies to any obligations of care
or indemnification in connection with Content.
8.4 Any warranty and liability of Commissioned Third Parties and
commissioned Mercedes-Benz Companies, especially based on any contract with a
Mercedes-Benz Company, remain unaffected and are not restricted by Sections
8.2 and 8.3.
## 9. Confidentiality of Content
9.1 As any Content is made available for purposes of Mercedes-Benz Companies
only, any user of the SCR is obliged to take adequate precautions
against unintended or unauthorized access or disclosure of Content to
third parties.
9.2 Any Content not expressly marked or declared as "public", according
to Mercedes-Benz Information Classification, (by and within Mercedes-Benz Companies)
is to be treated as confidential and business secret of Mercedes-Benz
Companies by any Mercedes-Benz Company and any Commissioned Third Party. Any
such party has to take reasonable precautions, at least as for its own
business secrets, to keep such Content secret and protect it against
unauthorized disclosure to third parties, especially if a third party is
not bound to adequate secrecy. Mercedes-Benz Companies may be entitled to use
such Content for External Use in adherence with Section 5. For the
avoidance of doubt, the SCR function "public" is by no means to be
misunderstood to be such a declaration or marking of "public".
## 10. Final Provisions
10.1 Any party, which accesses, uses or downloads Content, is solely
responsible for adherence to all applicable regulations and requirements
including but not limited to the regulations and requirements in
connection with export control.
10.2 Any later or new version of the ISL must be approved by the FOSS
Center of Competence or any comparable successor thereof.
10.3 Except where otherwise expressly stated, this ISL does not
encompass grant of rights to trade marks, patents or similar
intellectual property rights.
10.4 This ISL constitutes the complete agreement on its subject matter.
Any modifications shall be agreed upon in written form. If any
stipulation of this ISL should be held to be invalid or unenforceable,
this does not affect the remaining stipulations. The affected parties
will substitute an invalid or unenforceable stipulation with a provision
that comes as close as possible to the intent and effect of the affected
stipulation.
10.5 Irrespective the regulations on dispute resolution in intra-group
agreements, the following applies: In case of conflict over
applicability and/or interpretation of the ISL between more than one
Mercedes-Benz Company, the FOSS Center of Competence, or any comparable
successor thereof, shall be addressed by one or the parties jointly to
resolve the conflict through an ultimate decision. In the event that
such ultimate decision cannot be made, the parties adhere to the
regulations on dispute resolution in intra-group agreements if
concluded.
10.6 The ISL is governed by applicable German Law for domestic business
under exclusion of the UN-purchase rules (CISG). Sole legal venue for
any conflict arising in connection with the ISL is the appropriate civil
courts in Stuttgart (Mitte), Germany; mandatory statutory jurisdiction
remains unaffected.
10.7 Any and all Participants on the SCR are obliged to desist from all
practices which may lead to penal liability due to fraud or
embezzlement, insolvency crimes, crimes in violation of competition,
guaranteeing advantages, bribery, acceptance of bribes or other
corruption crimes on the part of persons employed by the respective
Participant or other third parties. In the event of violation of the
above, Mercedes-Benz or the right granting Mercedes-Benz Company has the right to
immediately withdraw from or terminate all legal transactions existing
with the respective Participant and the right to cancel all
negotiations. The above notwithstanding, any Participant is obliged to
adhere to all laws and regulations applicable to both itself and the
commercial relationship with Mercedes-Benz Companies.

View File

@@ -0,0 +1,153 @@
# MYP Frontend Produktions-Deployment
## Übersicht
Das Frontend läuft jetzt auf **Port 80/443** mit **selbstsigniertem Zertifikat** über **Caddy** als Reverse Proxy. Port 3000 wurde komplett entfernt.
## Architektur
```
Internet/LAN → Caddy (Port 80/443) → Next.js Frontend (Port 80) → Backend API (raspberrypi:443)
```
## Deployment
### Schnellstart
```bash
cd frontend
./deploy-production.sh
```
### Manuelles Deployment
```bash
cd frontend
# Container stoppen
docker-compose -f docker-compose.production.yml down
# Neu bauen und starten
docker-compose -f docker-compose.production.yml up --build -d
# Status prüfen
docker-compose -f docker-compose.production.yml ps
# Logs anzeigen
docker-compose -f docker-compose.production.yml logs -f
```
## Konfiguration
### SSL-Zertifikate
- **Automatisch generiert**: Caddy generiert automatisch selbstsignierte Zertifikate
- **Speicherort**: `./certs/` (wird automatisch erstellt)
- **Konfiguration**: `tls internal` in der Caddyfile
### Ports
- **HTTP**: Port 80
- **HTTPS**: Port 443
- **Frontend intern**: Port 80 (nicht nach außen exponiert)
### Backend-Verbindung
- **Backend URL**: `https://raspberrypi:443`
- **API Prefix**: `/api/*` wird an Backend weitergeleitet
- **Health Check**: `/health` wird an Backend weitergeleitet
## Dateien
### Wichtige Konfigurationsdateien
- `docker-compose.production.yml` - Produktions-Docker-Konfiguration
- `docker/caddy/Caddyfile` - Caddy Reverse Proxy Konfiguration
- `Dockerfile` - Frontend Container (Port 80)
- `next.config.js` - Next.js Konfiguration (SSL entfernt)
### Verzeichnisstruktur
```
frontend/
├── certs/ # SSL-Zertifikate (automatisch generiert)
├── docker/
│ └── caddy/
│ └── Caddyfile # Caddy Konfiguration
├── docker-compose.production.yml # Produktions-Deployment
├── deploy-production.sh # Deployment-Script
├── Dockerfile # Produktions-Container
└── next.config.js # Next.js Konfiguration
```
## Troubleshooting
### Container Status prüfen
```bash
docker-compose -f docker-compose.production.yml ps
```
### Logs anzeigen
```bash
# Alle Logs
docker-compose -f docker-compose.production.yml logs -f
# Nur Frontend
docker-compose -f docker-compose.production.yml logs -f frontend
# Nur Caddy
docker-compose -f docker-compose.production.yml logs -f caddy
```
### SSL-Zertifikate neu generieren
```bash
# Container stoppen
docker-compose -f docker-compose.production.yml down
# Caddy Daten löschen
docker volume rm frontend_caddy_data frontend_caddy_config
# Neu starten
docker-compose -f docker-compose.production.yml up --build -d
```
### Container neu bauen
```bash
# Alles stoppen und entfernen
docker-compose -f docker-compose.production.yml down --volumes --remove-orphans
# Images entfernen
docker rmi frontend_frontend frontend_caddy
# Neu bauen
docker-compose -f docker-compose.production.yml up --build -d
```
## Sicherheit
### HTTPS-Header
Caddy setzt automatisch sichere HTTP-Header:
- `Strict-Transport-Security`
- `X-Content-Type-Options`
- `X-Frame-Options`
- `Referrer-Policy`
### Netzwerk-Isolation
- Frontend und Caddy laufen in eigenem Docker-Netzwerk
- Nur Ports 80 und 443 sind nach außen exponiert
- Backend-Verbindung über gesichertes HTTPS
## Offline-Betrieb
Das Frontend ist für Offline-Betrieb konfiguriert:
- Keine externen Dependencies zur Laufzeit
- Alle Assets sind im Container enthalten
- Selbstsignierte Zertifikate benötigen keine externe CA

121
docs/RASPBERRY_PI_SETUP.md Normal file
View File

@@ -0,0 +1,121 @@
# MYP Platform - Raspberry Pi Setup
## Schnellstart
### 1. Projekt kopieren
```bash
scp -r Projektarbeit-MYP user@raspberrypi:/home/user/
```
### 2. Setup ausführen
```bash
ssh user@raspberrypi
cd /home/user/Projektarbeit-MYP/backend
chmod +x setup_raspberry_pi.sh
./setup_raspberry_pi.sh
```
### 3. Zugriff
- **URL**: https://raspberrypi
- **Login**: admin@mercedes-benz.com
- **Passwort**: 744563017196A
## Was wird installiert?
### System-Pakete
- Python 3 + pip + venv
- Nginx (Reverse Proxy)
- Supervisor (Process Manager)
- SQLite3 (Datenbank)
- OpenSSL (SSL-Zertifikate)
- Build-Tools (gcc, make, etc.)
### Python-Abhängigkeiten
- Flask 2.3.3 (Web Framework)
- SQLAlchemy 2.0.21 (ORM)
- cryptography 41.0.4 (SSL)
- PyP100 0.1.4 (Tapo Smart Plugs)
- psutil 5.9.5 (System Monitoring)
- gunicorn 21.2.0 (Production Server)
- RPi.GPIO 0.7.1 (Hardware Interface)
- Weitere 20+ Pakete (siehe requirements.txt)
### Services
- **myp-platform.service**: Hauptanwendung
- **nginx**: Reverse Proxy + SSL
- **supervisor**: Process Management
- **ufw**: Firewall (Ports 22, 80, 443)
### Verzeichnisstruktur
```
/home/user/Projektarbeit-MYP/
├── backend/
│ ├── app/ # Hauptanwendung
│ │ ├── database/myp.db # SQLite Datenbank
│ │ └── logs/ # Log-Dateien
│ ├── certs/ # SSL-Zertifikate
│ ├── venv/ # Python Virtual Environment
│ └── requirements.txt # Python-Abhängigkeiten
└── frontend/ssl/ # Frontend SSL-Zertifikate
```
### Hardkodierte Drucker
- **Printer 1**: 192.168.0.100
- **Printer 2**: 192.168.0.101
- **Printer 3**: 192.168.0.102
- **Printer 4**: 192.168.0.103
- **Printer 5**: 192.168.0.104
- **Printer 6**: 192.168.0.106
## Wartung
### Service-Befehle
```bash
# Status prüfen
sudo systemctl status myp-platform
# Neu starten
sudo systemctl restart myp-platform
# Logs anzeigen
sudo journalctl -u myp-platform -f
```
### Drucker neu einrichten
```bash
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python setup_drucker_db.py
```
### SSL-Zertifikate erneuern
```bash
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python -c "from utils.ssl_manager import ssl_manager; ssl_manager.generate_mercedes_certificate()"
sudo systemctl restart nginx
```
## Troubleshooting
### Service startet nicht
```bash
sudo journalctl -u myp-platform -n 50
```
### Manueller Start (Debug)
```bash
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python app.py
```
### Ports prüfen
```bash
sudo netstat -tlnp | grep :443
sudo netstat -tlnp | grep :80
```
## Vollständige Dokumentation
Siehe: `DEPLOYMENT.md` für detaillierte Anweisungen.

191
docs/README.md Normal file
View File

@@ -0,0 +1,191 @@
# MYP Reservation Platform
Mercedes-Benz Werk 040 Berlin - 3D-Drucker Reservierungsplattform
## 🚀 Schnellstart
### Voraussetzungen
- **Backend (Raspberry Pi)**: Python 3.11, systemd
- **Frontend (m040tbaraspi001)**: Docker, Docker Compose
### Installation
#### Backend Installation (Raspberry Pi)
```bash
# Repository klonen
git clone <repository-url>
cd Projektarbeit-MYP
# Backend installieren
./install.sh backend
```
#### Frontend Installation (m040tbaraspi001)
```bash
# Repository klonen
git clone <repository-url>
cd Projektarbeit-MYP
# Frontend installieren
./install.sh frontend
```
### Services starten
#### Backend
```bash
sudo systemctl start myp.service
sudo systemctl status myp.service
```
#### Frontend
```bash
cd frontend
docker-compose up -d
docker-compose logs -f
```
## 🌐 Zugriff
- **Frontend**: https://m040tbaraspi001.de040.corpintra.net
- **Backend API**: https://raspberrypi/api
## 🔧 Konfiguration
### Netzwerk
| Komponente | Hostname | IP | Port |
|------------|----------|----|----- |
| Frontend | m040tbaraspi001.de040.corpintra.net | 192.168.0.109 | 443 |
| Backend | raspberrypi | 192.168.0.105 | 443 |
### TLS-Zertifikate
Selbstsignierte Zertifikate werden automatisch generiert:
- Backend: `backend/app/certs/`
- Frontend: `frontend/certs/`
## 📊 Health Checks
```bash
# Backend
curl -k https://raspberrypi/api/test
# Frontend
curl -k https://m040tbaraspi001.de040.corpintra.net/health
```
## 🛠️ Entwicklung
### Backend Debug-Modus
```bash
cd backend/app
python3.11 app.py --debug
```
### Frontend Development
```bash
cd frontend
npm run dev
```
## 📁 Projektstruktur
```
Projektarbeit-MYP/
├── backend/
│ ├── app/
│ │ ├── certs/ # TLS-Zertifikate
│ │ ├── database/ # SQLite-Datenbank
│ │ ├── logs/ # Anwendungslogs
│ │ └── app.py # Hauptanwendung
│ ├── myp.service # systemd Service
│ └── requirements.txt # Python-Abhängigkeiten
├── frontend/
│ ├── certs/ # TLS-Zertifikate
│ ├── docker/
│ │ └── caddy/
│ │ └── Caddyfile # Reverse Proxy Konfiguration
│ ├── src/ # Next.js Anwendung
│ └── docker-compose.yml
├── docs/ # Dokumentation
├── scripts/ # Hilfsskripte
└── install.sh # Zentraler Installer
```
## 🔒 Sicherheit
- HTTPS-only (Port 443)
- Selbstsignierte TLS-Zertifikate
- HTTP → HTTPS Redirect
- Security Headers (HSTS, CSP, etc.)
## 📝 Logs
### Backend
```bash
# systemd Journal
sudo journalctl -u myp.service -f
# Anwendungslogs
tail -f backend/app/logs/app/app.log
```
### Frontend
```bash
# Docker Logs
docker-compose logs -f
# Caddy Logs
docker-compose logs caddy
```
## 🆘 Troubleshooting
### Backend startet nicht
```bash
# Service Status prüfen
sudo systemctl status myp.service
# Logs prüfen
sudo journalctl -u myp.service --no-pager
# Zertifikate prüfen
ls -la backend/app/certs/
```
### Frontend nicht erreichbar
```bash
# Container Status prüfen
docker-compose ps
# Netzwerk prüfen
docker network ls
# Zertifikate prüfen
ls -la frontend/certs/
```
### Verbindungsprobleme
```bash
# DNS auflösen
nslookup raspberrypi
nslookup m040tbaraspi001.de040.corpintra.net
# Ports prüfen
netstat -tlnp | grep :443
```
## 📋 Version
- **Version**: 3.2-final
- **Build**: Production
- **Datum**: $(date)
## 👥 Support
Bei Problemen wenden Sie sich an das IT-Team des Mercedes-Benz Werk 040 Berlin.

199
docs/ROADMAP.md Normal file
View File

@@ -0,0 +1,199 @@
# Mercedes-Benz MYP Platform - Roadmap
## Aktueller Stand (Dezember 2024)
### ✅ Abgeschlossen
#### Backend-Infrastruktur
- ✅ Flask-App mit SQLAlchemy-Modellen
- ✅ User-Management mit Admin-Rollen
- ✅ Drucker-Management-System
- ✅ Job-Scheduling-System
- ✅ Logging-System implementiert
- ✅ SSL-Konfiguration (teilweise)
#### Frontend-Grundlagen
- ✅ Admin-Dashboard HTML-Templates
- ✅ Basis-JavaScript-Funktionalität
- ✅ Responsive Design mit Bootstrap
#### API-Endpunkte
- ✅ Basis-CRUD-Operationen für alle Entitäten
- ✅ Admin-API-Routen definiert
- ✅ Authentifizierung und Autorisierung
### 🔧 Kürzlich behoben
#### JavaScript-Probleme
-`animateCounters` Funktion implementiert
-`showPrinterModal` Funktion hinzugefügt
-`animateProgressBars` Funktion erstellt
-`addHoverEffects` Funktion implementiert
#### API-Stabilität
- ✅ Verbesserte Fehlerbehandlung in Admin-API-Routen
- ✅ Sichere Admin-Berechtigung-Prüfung
- ✅ Fallback-Mechanismen für System-Monitoring
- ✅ Test-Route für Admin-API-Debugging
#### Infrastruktur
- ✅ Favicon-Route hinzugefügt
- ✅ Verbesserte Logging-Konfiguration
- ✅ COMMON_ERRORS.md aktualisiert
## 🔄 Aktuell in Bearbeitung
### Kritische Probleme
1. **SSL/HTTPS-Konfiguration**
- Server läuft auf Port 5000 statt 8443
- SSL-Zertifikate müssen überprüft werden
- Port-Konsistenz zwischen Frontend und Backend
2. **Admin-Dashboard-Stabilität**
- Live-Updates funktionieren teilweise
- Einige API-Endpunkte geben noch 404-Fehler zurück
- Modal-Funktionalität muss getestet werden
3. **Datenbankverbindung**
- Session-Management optimieren
- Connection-Pool-Konfiguration
- Backup-Strategien implementieren
## 📋 Nächste Prioritäten
### Kurzfristig (1-2 Wochen)
#### 1. SSL/HTTPS-Stabilisierung
- [ ] SSL-Zertifikate validieren
- [ ] Port-Konfiguration vereinheitlichen
- [ ] Reverse-Proxy-Setup dokumentieren
- [ ] Fallback-Mechanismus für HTTP/HTTPS
#### 2. Admin-Dashboard-Vervollständigung
- [ ] Alle Modal-Funktionen testen
- [ ] Live-Update-Mechanismus stabilisieren
- [ ] Drucker-Management-Funktionen verifizieren
- [ ] Benutzer-Management-Interface finalisieren
#### 3. API-Konsistenz
- [ ] Alle 404-Fehler beheben
- [ ] Einheitliche Error-Response-Struktur
- [ ] API-Dokumentation erstellen
- [ ] Rate-Limiting implementieren
### Mittelfristig (2-4 Wochen)
#### 1. Performance-Optimierung
- [ ] Database-Query-Optimierung
- [ ] Frontend-Asset-Minimierung
- [ ] Caching-Strategien implementieren
- [ ] Load-Testing durchführen
#### 2. Sicherheit
- [ ] Security-Audit durchführen
- [ ] CSRF-Protection verstärken
- [ ] Input-Validation verbessern
- [ ] Session-Security optimieren
#### 3. Monitoring & Analytics
- [ ] System-Monitoring-Dashboard
- [ ] Performance-Metriken sammeln
- [ ] Error-Tracking implementieren
- [ ] Usage-Analytics hinzufügen
### Langfristig (1-3 Monate)
#### 1. Feature-Erweiterungen
- [ ] Mobile-App-Unterstützung
- [ ] Push-Notifications
- [ ] Advanced-Scheduling-Features
- [ ] Reporting-System
#### 2. Skalierung
- [ ] Multi-Tenant-Architektur
- [ ] Microservices-Migration
- [ ] Container-Orchestrierung
- [ ] Cloud-Deployment
#### 3. Integration
- [ ] LDAP/Active Directory-Integration
- [ ] Drucker-API-Integration
- [ ] ERP-System-Anbindung
- [ ] Workflow-Automation
## 🚨 Bekannte Probleme
### Kritisch
- SSL-Konfiguration instabil
- Einige Admin-API-Endpunkte nicht erreichbar
- Live-Updates funktionieren nicht zuverlässig
### Wichtig
- Favicon-Requests verursachen 404-Fehler (behoben)
- JavaScript-Funktionen fehlen (behoben)
- Admin-Berechtigung-Prüfung inkonsistent (verbessert)
### Niedrig
- Logging-Performance bei hoher Last
- Frontend-Animationen können optimiert werden
- Dokumentation unvollständig
## 🎯 Erfolgskriterien
### Phase 1 (Stabilisierung)
- [ ] Alle Admin-Dashboard-Funktionen arbeiten fehlerfrei
- [ ] SSL/HTTPS funktioniert zuverlässig
- [ ] Keine 404-Fehler in der Konsole
- [ ] Live-Updates funktionieren in Echtzeit
### Phase 2 (Optimierung)
- [ ] Seitenladezeiten unter 2 Sekunden
- [ ] 99.9% Uptime
- [ ] Alle Security-Scans bestanden
- [ ] Performance-Benchmarks erreicht
### Phase 3 (Erweiterung)
- [ ] Mobile-Responsive Design
- [ ] Multi-Language-Support
- [ ] Advanced-Features implementiert
- [ ] Skalierbarkeit nachgewiesen
## 📊 Metriken & KPIs
### Technische Metriken
- Response-Zeit: < 200ms für API-Calls
- Uptime: > 99.9%
- Error-Rate: < 0.1%
- Database-Query-Zeit: < 50ms
### Business-Metriken
- Benutzer-Zufriedenheit: > 4.5/5
- Feature-Adoption-Rate: > 80%
- Support-Tickets: < 5 pro Woche
- System-Effizienz: > 95%
## 🔧 Entwicklungsrichtlinien
### Code-Qualität
- Alle Funktionen müssen getestet werden
- Code-Coverage > 80%
- Linting-Regeln befolgen
- Dokumentation für alle neuen Features
### Deployment
- Staging-Environment für Tests
- Automated-Testing vor Deployment
- Rollback-Strategien definiert
- Monitoring nach Deployment
### Sicherheit
- Regelmäßige Security-Audits
- Dependency-Updates
- Penetration-Testing
- Compliance-Checks
---
**Letzte Aktualisierung:** Dezember 2024
**Nächste Review:** In 2 Wochen
**Verantwortlich:** Entwicklungsteam Mercedes-Benz MYP

177
docs/SECURITY.md Normal file
View File

@@ -0,0 +1,177 @@
# MYP Platform - Sicherheitsdokumentation
## Übersicht
Diese Dokumentation beschreibt die Sicherheitsmaßnahmen der MYP Platform, insbesondere für den Kiosk-Modus.
## Kiosk-Sicherheit
### Passwort-Schutz
- **Deaktivierungspasswort**: `744563017196A`
- Das Passwort ist als sicherer Hash gespeichert
- Fehlgeschlagene Versuche werden protokolliert
### Systemhärtung
- Kernel-Parameter für erhöhte Sicherheit
- SSH-Härtung mit Fail2Ban
- Firewall-Konfiguration (UFW)
- Automatische Sicherheitsupdates
### Überwachung
- Audit-Logs für Systemzugriffe
- Monitoring verdächtiger Prozesse
- Integritätsprüfung des Dateisystems
- Automatische Benachrichtigungen bei Sicherheitsereignissen
## Netzwerksicherheit
### Firewall-Regeln
```bash
# Eingehende Verbindungen
Port 22 (SSH) - Nur von lokalen Netzwerken
Port 80 (HTTP) - Für Web-Interface
Port 443 (HTTPS) - Für sichere Verbindungen
# Ausgehende Verbindungen
Nur notwendige Dienste erlaubt
```
### Rate Limiting
- Login-Versuche: 5 pro Minute
- API-Aufrufe: 200 pro Tag, 50 pro Stunde
- Automatische IP-Sperrung bei Missbrauch
## Authentifizierung
### Benutzerrollen
- **Admin**: Vollzugriff auf alle Funktionen
- **User**: Eingeschränkter Zugriff auf eigene Daten
- **Kiosk**: Nur Anzeige-Berechtigung
### Session-Management
- Sichere Session-Cookies
- Automatische Abmeldung nach Inaktivität
- CSRF-Schutz für alle Formulare
## Datenschutz
### Verschlüsselung
- Passwörter mit bcrypt gehashed
- HTTPS für alle Verbindungen
- Sichere Cookie-Einstellungen
### Logging
- Keine sensiblen Daten in Logs
- Strukturierte Logs für Audit-Zwecke
- Automatische Log-Rotation
## Kiosk-Deaktivierung
### Notfall-Deaktivierung
1. Zugriff auf Terminal (Strg+Alt+T)
2. API-Aufruf: `POST /api/kiosk/deactivate`
3. Passwort eingeben: `744563017196A`
4. System wird automatisch neu gestartet
### Manuelle Deaktivierung
```bash
# Service stoppen
sudo systemctl stop myp-kiosk
sudo systemctl disable myp-kiosk
# Desktop wiederherstellen
sudo systemctl set-default graphical.target
# Neustart
sudo reboot
```
## Wartung
### Regelmäßige Aufgaben
- Sicherheitsupdates installieren
- Log-Dateien überprüfen
- Backup-Integrität testen
- Benutzerkonten auditieren
### Monitoring-Befehle
```bash
# System-Status
systemctl status myp-kiosk
systemctl status myp-backend
# Logs überprüfen
journalctl -u myp-kiosk -f
tail -f /var/log/myp/security.log
# Netzwerk-Status
ufw status
fail2ban-client status
```
## Incident Response
### Bei Sicherheitsvorfällen
1. System isolieren (Netzwerk trennen)
2. Logs sichern
3. Forensische Analyse
4. System neu aufsetzen
5. Sicherheitsmaßnahmen verstärken
### Kontakte
- IT-Sicherheit: security@mercedes-benz.com
- System-Administrator: admin@mercedes-benz.com
- Notfall-Hotline: +49 711 17-0
## Compliance
### Standards
- ISO 27001 Informationssicherheit
- DSGVO Datenschutz
- Mercedes-Benz IT-Sicherheitsrichtlinien
### Audit-Anforderungen
- Monatliche Sicherheitsberichte
- Jährliche Penetrationstests
- Kontinuierliche Vulnerability-Scans
## Konfiguration
### Sicherheitsparameter
```python
# Flask-Konfiguration
SECRET_KEY = "zufälliger-256-bit-schlüssel"
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = 'Lax'
# Rate Limiting
RATELIMIT_STORAGE_URL = "redis://localhost:6379"
RATELIMIT_DEFAULT = "200 per day, 50 per hour"
```
### Systemparameter
```bash
# Kernel-Härtung
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
```
## Troubleshooting
### Häufige Probleme
1. **Kiosk startet nicht**: Service-Status prüfen
2. **Passwort funktioniert nicht**: Hash-Integrität überprüfen
3. **Netzwerk blockiert**: Firewall-Regeln kontrollieren
### Debug-Modus
```bash
# Kiosk im Debug-Modus starten
sudo systemctl stop myp-kiosk
sudo -u kiosk /opt/myp/kiosk/start_kiosk.sh --debug
```
---
**WICHTIG**: Diese Dokumentation enthält sicherheitskritische Informationen und darf nur autorisierten Personen zugänglich gemacht werden.