2025-06-05 01:34:10 +02:00

12 KiB

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                 # Hauptanwendung mit HTTPS-Support
├── models.py              # Datenbankmodelle
├── setup.sh               # Konsolidiertes Setup-Skript
├── requirements.txt       # Python-Abhängigkeiten
├── package.json           # Node.js-Abhängigkeiten
├── 
├── 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
├── docs/                 # Dokumentation
├── logs/                 # Log-Dateien
└── uploads/              # Hochgeladene Dateien

🔧 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