Files
Projektarbeit-MYP/backend
Till Tomczak 3c1129644c 🎉 🎨 Feature: Enhanced Logging and Monitoring System
📚  🔍 Improved Utility Modules
🐛  🚧 Refactoring of Backend Blueprints for Better Organization
💄  🖼️ Updated Utility Cache Files

This commit introduces a new logging and monitoring system, enhancing our application's observability. Additionally, we've refactored the backend blueprint modules to improve organization and maintainability. The utility cache files have been updated as well.
2025-06-19 21:48:29 +02:00
..
2025-06-16 09:42:26 +02:00

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)

# 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)

# 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)

# 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

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

# 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

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

Schritt 4: Services einrichten

# 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

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

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/ Verzeichnis
  • Setup-Anleitung: 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 - Umfassende Dokumentation des Konfliktsystems
  • Detaillierte API-Referenz für alle neuen Endpunkte
  • Scoring-Algorithmus-Dokumentation mit Beispielen
  • Troubleshooting-Guide für Konfliktbehandlung

🔄 Migration

# 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

# 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


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