# MYP Druckerverwaltung

Ein umfassendes Druckerverwaltungssystem für Mercedes-Benz, optimiert für Debian/Linux-Systeme mit HTTPS-Kiosk-Modus.

## 🚀 Schnellstart

### Debian/Linux Kiosk-Installation (Empfohlen)

```bash
# Repository klonen
git clone <repository-url>
cd backend

# Konsolidiertes Setup-Skript ausführen
sudo ./setup.sh
```

**Installationsoptionen**:

1. **Abhängigkeiten installieren** - System für manuelles Testen vorbereiten
2. **Vollständige Kiosk-Installation** - Automatischer Kiosk-Modus mit Remote-Zugang

**Nach der Installation**: System mit `sudo reboot` neustarten für automatischen Kiosk-Modus.

### Entwicklungsumgebung (Windows)

```bash
# Abhängigkeiten installieren
pip install -r requirements.txt
npm install

# Entwicklungsserver starten
python app.py --debug
```

## 📋 Systemanforderungen

### Produktionsumgebung (Kiosk)

- **Debian/Raspbian** (Raspberry Pi OS empfohlen)
- Raspberry Pi 4 mit 2GB+ RAM
- 16GB+ SD-Karte
- HDMI-Monitor
- Netzwerkverbindung

### Entwicklungsumgebung

- **Windows 10/11** (nur für Entwicklung)
- Python 3.8+
- Node.js 18+
- Git

## 🔧 Features

### Kern-Funktionalitäten

- **Druckerverwaltung** mit Smart-Plug-Integration (TP-Link Tapo)
- **Job-Management** mit Warteschlangen-System
- **Benutzerverwaltung** mit Rollen und Berechtigungen
- **Gast-Anfragen** für temporären Zugriff
- **Echtzeit-Dashboard** mit Live-Statistiken
- **Automatische Backups** und Wartung

### Kiosk-Modus Features

- **HTTPS auf Port 443** mit automatischen SSL-Zertifikaten
- **Chromium-Vollbildmodus** ohne Desktop-Environment
- **Automatischer Login** und Browser-Start
- **Watchdog-Überwachung** für Systemstabilität
- **Remote-Zugang** via SSH und RDP mit Firewall-Schutz
- **Responsive Design** für Desktop-Nutzung

### Sicherheit

- **SSL/TLS-Verschlüsselung** (selbstsignierte Zertifikate)
- **CSRF-Schutz** und Session-Management
- **Rate-Limiting** und Eingabevalidierung
- **Systemd-Service-Isolation**
- **IPv6 vollständig deaktiviert** für erhöhte Sicherheit
- **IP-Spoofing-Schutz** und DDoS-Abwehr
- **TCP-Optimierungen** und RFC-Compliance

## 🏗️ Architektur

### Backend

- **Flask 3.1.1** - Web-Framework
- **SQLAlchemy 2.0.36** - ORM und Datenbankzugriff
- **SQLite** - Eingebettete Datenbank
- **Gunicorn** - WSGI-Server für Produktion

### Frontend

- **TailwindCSS** - Utility-First CSS Framework
- **Chart.js** - Datenvisualisierung
- **FontAwesome** - Icons
- **Vanilla JavaScript** - Interaktivität

### System-Integration

- **systemd** - Service-Management
- **OpenSSL** - SSL-Zertifikat-Generierung
- **Chromium** - Kiosk-Browser
- **X11** - Minimale Grafikumgebung

## 📁 Projektstruktur

```
backend/
├── app.py                 # Haupt-Anwendung mit Production- und Development-Modi
├── models.py              # Datenbankmodelle
├── requirements.txt       # Python-Abhängigkeiten
├── README.md              # Diese Datei
├── CLAUDE.md              # Claude-Entwicklungsdokumentation
├── 
├── setup/                 # 🔧 Setup & Installation
│   ├── setup_https_only.sh         # HTTPS-Setup-Skript
│   ├── setup_tapo_outlets.py       # Smart-Plug-Konfiguration
│   └── create_test_tapo_printers.py # Test-Drucker-Setup
├── 
├── ssl/                   # 🔒 SSL & Sicherheit
│   ├── RASPBERRY_PI_SSL_FIX.md     # SSL-Konfiguration für Raspberry Pi
│   ├── QUICK_SSL_FIX.md            # Schnelle SSL-Fixes
│   ├── fix_ssl_browser.py          # Browser-SSL-Korrekturen
│   └── ssl_fix.py                  # SSL-Fehlerbehebung
├── 
├── debug/                 # 🐛 Debug & Entwicklung
│   └── debug_admin.py     # Admin-Debug-Tools
├── 
├── diagrams/              # 📊 Architektur-Diagramme
│   ├── netzwerkdiagramm.svg        # Netzwerk-Architektur (SVG)
│   └── netzwerkdiagramm.mmd        # Mermaid-Diagramm-Quelle
├── 
├── docs/                  # 📚 Dokumentation
│   ├── COMMON_ERRORS.md            # Häufige Fehler & Lösungen
│   ├── PRODUCTION_HTTPS_SETUP.md   # Produktions-HTTPS-Setup
│   ├── EINFACHE_ANLEITUNG.md       # Einfache Installationsanleitung
│   ├── SETUP_IMPROVEMENTS.md       # Setup-Verbesserungen
│   ├── CREDENTIALS_INTEGRATION.md  # Anmeldedaten-Integration
│   ├── SETUP_README.md             # Setup-Dokumentation
│   ├── TAPO_CONTROL.md             # Smart-Plug-Steuerung
│   ├── MYP_BENUTZERHANDBUCH.md     # Benutzerhandbuch
│   ├── MYP_SYSTEMDOKUMENTATION.md  # Systemdokumentation
│   └── RASPBERRY_PI_PERFORMANCE.md # Performance-Optimierung
├── 
├── scripts/               # 🔨 Hilfsskripte
│   ├── screenshot_tool.py          # Screenshot-Tool
│   ├── test_protocol_generator.py  # Testprotokoll-Generator
│   └── quick_unicode_fix.py        # Unicode-Fixes
├── 
├── systemd/               # ⚙️ Systemd-Service-Dateien
│   ├── myp-https.service  # HTTPS-Backend-Service
│   ├── myp-kiosk.service  # Kiosk-Browser-Service
│   ├── kiosk-watchdog.service # Überwachungsservice
│   └── kiosk-watchdog-python.service # Python-Watchdog
├── 
├── blueprints/            # 🌐 Flask-Blueprints
│   ├── auth.py           # Authentifizierung
│   ├── users.py          # Benutzerverwaltung
│   ├── printers.py       # Druckerverwaltung
│   ├── jobs.py           # Job-Management
│   └── guest.py          # Gast-Anfragen
├── 
├── config/               # ⚙️ Konfigurationsdateien
│   └── settings.py       # Hauptkonfiguration
├── 
├── utils/                # 🛠️ Hilfsfunktionen
│   ├── ssl_config.py     # SSL-Zertifikat-Management
│   ├── logging_config.py # Logging-Konfiguration
│   ├── queue_manager.py  # Job-Warteschlange
│   └── printer_monitor.py # Drucker-Überwachung
├── 
├── static/               # 🎨 Statische Dateien
│   ├── css/             # Stylesheets
│   ├── js/              # JavaScript
│   └── icons/           # Icons und Bilder
├── 
├── templates/            # 📄 Jinja2-Templates
├── database/             # 💾 Datenbank-Dateien
├── logs/                 # 📝 Log-Dateien
├── uploads/              # 📤 Hochgeladene Dateien
├── instance/             # 🏠 Instanz-spezifische Dateien
├── certs/                # 🔐 SSL-Zertifikate
└── legacy/               # 📦 Legacy-Code
```

## 🔧 Installation

### Option 1: Automatische Installation mit setup.sh (Empfohlen)

```bash
# Als Root ausführen
sudo ./setup.sh

# Menüoptionen:
# 1. Abhängigkeiten installieren für manuelles Testen
# 2. Vollständige Kiosk-Installation mit Remote-Zugang
# 3. Beenden
```

**Installationsmodi**:

- **Option 1**: Ideal für Entwicklung, manuelle Tests und Debugging
- **Option 2**: Vollständige Produktionsinstallation mit automatischem Kiosk-Start

### Option 2: Manuelle Installation

#### Schritt 1: System vorbereiten

```bash
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y python3 python3-pip nodejs npm git
```

#### Schritt 2: Abhängigkeiten installieren

```bash
# Python-Pakete (ohne virtuelles Environment)
pip3 install -r requirements.txt --break-system-packages

# Node.js-Pakete
npm install

# TailwindCSS kompilieren
npm run build:css
```

#### Schritt 3: SSL-Zertifikate generieren

```bash
python3 -c "
import sys; sys.path.insert(0, '.')
from utils.ssl_config import ensure_ssl_certificates
ensure_ssl_certificates('.', True)
"
```

#### Schritt 4: Services einrichten

```bash
# Services aus systemd/ Verzeichnis kopieren
sudo cp systemd/*.service /etc/systemd/system/
sudo systemctl daemon-reload

# HTTPS-Service aktivieren
sudo systemctl enable myp-https.service
sudo systemctl start myp-https.service

# Kiosk-Service aktivieren (optional)
sudo systemctl enable myp-kiosk.service
```

## 🌐 Zugriff

### Lokaler Zugriff

- **HTTPS**: `https://localhost:443`
- **HTTP (Entwicklung)**: `http://localhost:5000` (--debug)

### Netzwerk-Zugriff

- **HTTPS**: `https://192.168.0.105:443` (LAN)

### Standard-Anmeldedaten

- **Benutzername**: `admin@mercedes-benz.com`
- **Passwort**: `744563017196A`

⚠️ **Wichtig**: Ändern Sie das Standard-Passwort nach der ersten Anmeldung!

## 🔒 Sicherheit

### SSL/TLS

- **TLS 1.2+** erforderlich
- **Starke Cipher-Suites** konfiguriert
- **Selbstsignierte Zertifikate** für localhost
- **Automatische Erneuerung** bei Ablauf

### Anwendungssicherheit

- **CSRF-Schutz** aktiviert
- **Session-Management** mit Timeout
- **Rate-Limiting** für API-Endpunkte
- **Eingabevalidierung** und Sanitization

### System-Sicherheit

- **Minimale X11-Umgebung** ohne Desktop
- **Kiosk-User** ohne Sudo-Rechte
- Chromium-Kiosk: Beschränkungen implementiert in Browserinstanz selbst

## 🔄 Updates

### Anwendungs-Updates

```bash
cd /opt/myp
git pull origin main
sudo pip3 install -r requirements.txt --break-system-packages --upgrade
sudo npm install

# Services mit setup.sh aktualisieren
sudo ./setup.sh # Option 3: Nur Services installieren

sudo systemctl restart myp-https.service
```

### System-Updates

```bash
sudo apt-get update && sudo apt-get upgrade -y
sudo reboot
```

## 📄 Lizenz

Dieses Projekt ist für den internen Gebrauch bei Mercedes-Benz entwickelt.

## 🤝 Beitragen

1. Fork des Repositories erstellen
2. Feature-Branch erstellen (`git checkout -b feature/AmazingFeature`)
3. Änderungen committen (`git commit -m 'Add some AmazingFeature'`)
4. Branch pushen (`git push origin feature/AmazingFeature`)
5. Pull Request erstellen

## 📞 Support

- **Dokumentation**: [`docs/`](docs/) Verzeichnis
- **Setup-Anleitung**: [`docs/SETUP_ANLEITUNG.md`](docs/SETUP_ANLEITUNG.md)
- **Issues**: GitHub Issues für Bug-Reports
- **Logs**: Automatische Log-Sammlung mit `setup.sh`

---

## 🆕 Version 4.1.0 - Erweiterte Konfliktbehandlung (2025-01-06)

### ✨ Neue Features

- **🔧 Intelligente Druckerkonflikt-Management-Engine**: Automatische Erkennung und Lösung von Zeitüberschneidungen
- **🎯 Smart-Empfehlungssystem**: KI-basierte Druckerzuweisung mit Scoring-Algorithmus basierend auf:
  - Verfügbarkeit und Auslastung
  - Prioritätsstufen (urgent, high, normal, low)
  - Zeitfenster-Optimierung (Tag-/Nachtschicht)
  - Job-Dauer-Eignung (Express vs. Langzeit-Jobs)
- **📊 Echtzeit-Verfügbarkeitsanzeige**: Live-Dashboard mit Druckerstatus und Auslastung
- **⚠️ Proaktive Konfliktprävention**: Echzeit-Validierung während Formulareingabe
- **🚀 Automatische Konfliktlösung**: Ein-Klick-Lösung für erkannte Konflikte

### 🔧 Technische Verbesserungen

- **Neue API-Endpunkte**:
  - `/api/calendar/check-conflicts` - Detaillierte Konfliktanalyse
  - `/api/calendar/resolve-conflicts` - Automatische Konfliktlösung
  - `/api/calendar/printer-availability` - Echtzeit-Verfügbarkeit
- **ConflictManager-Klasse** mit umfassender Konfliktbehandlung
- **Erweiterte Frontend-Integration** mit modalen Dialogen und Toast-Benachrichtigungen
- **Smart-Assignment-Algorithmus** mit gewichteter Bewertung

### 📋 Konfliktarten und Behandlung

1. **Zeitüberschneidungen** - Automatische Alternative oder Zeitverschiebung
2. **Druckerausfälle** - Sofortige Neuzuweisung auf verfügbare Drucker
3. **Prioritätskonflikte** - Intelligente Umplanung bei höherprioren Jobs
4. **Ressourcenkonflikte** - Warteschlange mit automatischer Reaktivierung

### 🎨 Benutzeroberfläche

- **Konflikt-Benachrichtigungsmodal** mit detaillierten Lösungsvorschlägen
- **Verfügbarkeits-Dashboard** mit visuellen Status-Indikatoren
- **Smart-Empfehlungs-Widget** mit Confidence-Scores
- **"Konflikte prüfen" Button** für manuelle Validierung
- **Echtzeit-Verfügbarkeitsanzeige** mit Aktualisierungsbutton

### 📚 Dokumentation

- **[`docs/DRUCKERKONFLIKT_MANAGEMENT.md`](docs/DRUCKERKONFLIKT_MANAGEMENT.md)** - Umfassende Dokumentation des Konfliktsystems
- Detaillierte API-Referenz für alle neuen Endpunkte
- Scoring-Algorithmus-Dokumentation mit Beispielen
- Troubleshooting-Guide für Konfliktbehandlung

### 🔄 Migration

```bash
# Keine Datenbankmigrationen erforderlich
# Frontend-Assets aktualisieren
npm run build:css

# Neue JavaScript-Module laden
# (Automatisch über Template-Integration)
```

---

## 🔄 Version 4.0.4 - Setup-Korrekturen (2025-01-12)

### ✅ Behobene Probleme

- **Python-Import-Fehler behoben**: Flask-App kann jetzt korrekt importiert werden
- **Requirements.txt korrigiert**: Alle Versionskonflikte beseitigt (Werkzeug + Flask)
- **Internetverbindung-Erkennung**: Multi-Methoden-Prüfung (HTTP/DNS/ICMP/Gateway)
- **PYTHONPATH-Konflikte behoben**: Robuste Umgebungsvariablen-Behandlung
- **Robuste Installation**: Mehrstufige Validierung und Fallback-Mechanismen
- **Python-Umgebung**: Automatische PYTHONPATH-Konfiguration implementiert

### 🔧 Verbesserungen

- Erweiterte Fehlerbehandlung im Setup-Skript
- Sichere Test-Umgebung für Flask-App-Validierung
- Performance-Optimierungen für pip-Installation
- Robuste Netzwerk-Erkennung für Firewalls/Proxys/VirtualBox
- Umfassende Dokumentation der Korrekturen

### 📋 Nach Update empfohlen

```bash
# Setup-Skript erneut ausführen für korrigierte Installation
sudo ./setup.sh  # Option 1 zum Testen der Korrekturen

# Das Setup sollte jetzt reibungslos durchlaufen ohne:
# - Python-Import-Fehler
# - PYTHONPATH-Konflikte  
# - Internetverbindung-Fehlmeldungen
```

**Details**: Siehe [`docs/SETUP_KORREKTUREN.md`](docs/SETUP_KORREKTUREN.md)

---

**Version**: 4.0.4 (Korrigiert)
**Plattform**: Debian/Linux (Raspberry Pi OS)
**Modus**: HTTPS Kiosk (Port 443)
**Setup**: Konsolidiertes `setup.sh` System
**Entwickelt für**: Mercedes-Benz MYP
