12 KiB
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:
- 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 # 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
- 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