16 KiB
16 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
Netzwerk-Zugriff
- HTTPS:
https://<raspberry-pi-ip>:443
Remote-Zugang (falls konfiguriert)
- SSH:
ssh user@<raspberry-pi-ip>
(Passwort:raspberry
) - RDP:
<raspberry-pi-ip>:3389
(Benutzer:root
, Passwort:744563017196A
)
Standard-Anmeldedaten
- Benutzername:
admin
- Passwort:
admin123
⚠️ Wichtig: Ändern Sie das Standard-Passwort nach der ersten Anmeldung!
🔧 Konfiguration
Umgebungsvariablen
# Produktionsumgebung
export FLASK_ENV=production
export FLASK_HOST=0.0.0.0
export FLASK_PORT=443
# Entwicklungsumgebung
export FLASK_ENV=development
export FLASK_HOST=127.0.0.1
export FLASK_PORT=5000
SSL-Konfiguration
# Automatische Zertifikat-Generierung
python3 utils/ssl_config.py /opt/myp
# Manuelle Zertifikat-Erneuerung
python3 utils/ssl_config.py /opt/myp --force
Drucker-Konfiguration
- Admin-Panel → Drucker → Neuer Drucker
- IP-Adresse und TP-Link Tapo-Zugangsdaten eingeben
- Drucker-Test durchführen
- Smart-Plug-Integration aktivieren
📊 Überwachung
Service-Status
# HTTPS-Service
sudo systemctl status myp-https.service
sudo journalctl -u myp-https -f
# Kiosk-Service
sudo systemctl status myp-kiosk.service
sudo journalctl -u myp-kiosk -f
# Watchdog-Service
sudo systemctl status kiosk-watchdog.service
sudo tail -f /var/log/kiosk-watchdog.log
System-Tests
# HTTPS-Erreichbarkeit
curl -k https://localhost:443
# SSL-Zertifikat prüfen
openssl s_client -connect localhost:443 -servername localhost
# Automatische Tests mit setup.sh
sudo ./setup.sh # Option 5: System-Test
Log-Dateien
# Anwendungslogs
tail -f logs/app/app.log
tail -f logs/auth/auth.log
tail -f logs/printers/printers.log
# Systemlogs
sudo journalctl -u myp-https -f
sudo tail -f /var/log/kiosk-watchdog.log
# Installationslog
sudo tail -f /var/log/myp-install.log
🛠️ Entwicklung
Entwicklungsserver starten
# HTTP-Entwicklungsserver (Port 5000)
python app.py --debug
# HTTPS-Produktionsserver (Port 443)
python app.py
Frontend-Entwicklung
# TailwindCSS im Watch-Modus
npm run watch:css
# CSS kompilieren
npm run build:css
# Alle Assets bauen
npm run build
Datenbank-Management
# Datenbank initialisieren
python -c "from models import init_database; init_database()"
# Backup erstellen
python -c "from utils.backup_manager import BackupManager; BackupManager().create_backup()"
🔒 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
- Systemd-Service-Isolation
- Read-only Systempartitionen (optional)
📚 Dokumentation
Detaillierte Anleitungen
docs/SETUP_ANLEITUNG.md
- Konsolidiertes Setup-Systemdocs/INSTALLATION_DEBIAN_KIOSK.md
- Vollständige Kiosk-Installationdocs/API_DOCUMENTATION.md
- API-Referenzdocs/CONFIGURATION.md
- Konfigurationsoptionendocs/TROUBLESHOOTING.md
- Fehlerbehebung
API-Endpunkte
- Authentifizierung:
/auth/login
,/auth/logout
- Drucker:
/api/printers
,/api/printers/{id}
- Jobs:
/api/jobs
,/api/jobs/{id}
- Benutzer:
/api/users
,/api/users/{id}
- Dashboard:
/api/dashboard/refresh
,/api/stats
🐛 Fehlerbehebung
Häufige Probleme
HTTPS nicht erreichbar
# Service-Status prüfen
sudo systemctl status myp-https.service
# SSL-Zertifikate neu generieren
sudo python3 utils/ssl_config.py /opt/myp --force
sudo systemctl restart myp-https.service
# Oder mit setup.sh
sudo ./setup.sh # Option 1 für Zertifikat-Neugenerierung
Kiosk-Browser startet nicht
# X-Server prüfen
ps aux | grep X
# Browser manuell starten
sudo su - kiosk
DISPLAY=:0 chromium --kiosk https://localhost:443
# Service-Status prüfen
sudo systemctl status myp-kiosk.service
Hohe Speichernutzung
# Browser-Cache leeren
sudo rm -rf /home/kiosk/.chromium-kiosk/Default/Cache/*
# System-Cache leeren
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
# Watchdog überwacht automatisch Speichernutzung
sudo journalctl -u kiosk-watchdog -f
Support
Bei Problemen:
- System-Test durchführen:
sudo ./setup.sh
→ Option 5 - Log-Bundle erstellen:
sudo tar -czf myp-logs-$(date +%Y%m%d).tar.gz \
logs/ \
/var/log/kiosk-watchdog.log \
/var/log/myp-install.log
🔄 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