📚 🔍 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.
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:
- Abhängigkeiten installieren - System für manuelles Testen vorbereiten
- 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
- Fork des Repositories erstellen
- Feature-Branch erstellen (
git checkout -b feature/AmazingFeature
) - Änderungen committen (
git commit -m 'Add some AmazingFeature'
) - Branch pushen (
git push origin feature/AmazingFeature
) - 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
- Zeitüberschneidungen - Automatische Alternative oder Zeitverschiebung
- Druckerausfälle - Sofortige Neuzuweisung auf verfügbare Drucker
- Prioritätskonflikte - Intelligente Umplanung bei höherprioren Jobs
- 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