7.3 KiB
7.3 KiB
OTP-Aktivierung und Drucker-Verfügbarkeitsprüfung - Verbesserungen
Problem
Ursprüngliches Problem: Jobs konnten mit OTP-Codes gestartet werden, obwohl alle Drucker offline waren, was zu nicht-startbaren Jobs führte und schlechte Benutzererfahrung verursachte.
Implementierte Lösung
1. Erweiterte OTP-Aktivierungs-API
Datei: blueprints/guest.py
- Funktion api_start_job_with_code()
Neue Funktionalitäten:
- Drucker-Verfügbarkeitsprüfung vor Job-Start
- Spezifische Drucker-Status-Validierung
- Automatische Drucker-Zuweisung bei verfügbaren Alternativen
- Detaillierte Fehlermeldungen mit Kontextinformationen
Prüflogik:
-
Spezifischer Drucker zugewiesen:
- Prüfung ob der zugewiesene Drucker erreichbar ist
- Verweigerung des Starts bei offline Druckern
- Klare Fehlermeldung mit Drucker-Namen
-
Kein spezifischer Drucker:
- Prüfung aller aktiven Drucker mit Steckdosen-Steuerung
- Automatische Zuweisung des ersten verfügbaren Druckers
- Verweigerung wenn alle Drucker offline sind
Fehlertypen:
printer_offline
: Spezifischer Drucker nicht erreichbarall_printers_offline
: Alle konfigurierten Drucker offlineno_printers_configured
: Keine aktiven Drucker konfiguriertprinter_check_failed
: Technischer Fehler bei Status-Prüfung
2. Verbesserte Frontend-Fehlerbehandlung
Datei: templates/guest_start_job.html
Neue Features:
- Kontextspezifische Fehlermeldungen je nach Fehlertyp
- Benutzerfreundliche Erklärungen für technische Probleme
- Handlungsempfehlungen für Benutzer
- Visuelle Unterscheidung verschiedener Fehlerklassen
Beispiel-Fehlermeldungen:
// Spezifischer Drucker offline
"Der zugewiesene Drucker 'Drucker 1' ist derzeit offline und kann nicht gestartet werden.
Bitte wenden Sie sich an den Administrator oder versuchen Sie es später erneut."
// Alle Drucker offline
"Derzeit sind alle 3 Drucker offline (Drucker 1, Drucker 2, Drucker 3).
Jobs können momentan nicht gestartet werden. Bitte warten Sie, bis mindestens ein Drucker wieder online ist."
3. Erweiterte Admin-Genehmigungsfunktion
Datei: blueprints/guest.py
- Funktion api_approve_request()
Verbesserungen:
- Echtzeit-Drucker-Status bei Genehmigung
- Intelligente Drucker-Zuweisung (bevorzugt online Drucker)
- Warnung bei Zuweisung offline Drucker
- Fallback-Mechanismus für offline Zeiten
Automatische Drucker-Zuweisung:
- Priorität 1: Online-Drucker mit aktiver Steckdose
- Priorität 2: Verfügbare offline Drucker (als Fallback)
- Verweigerung: Wenn keine Drucker konfiguriert sind
4. Neue Admin-API für Drucker-Status
Datei: blueprints/guest.py
- Funktion api_get_printer_status_for_admin()
Funktionalitäten:
- Echtzeit-Status aller Drucker für Admin-Dashboard
- Übersichtliche Zusammenfassung (online/offline/unkonfiguriert)
- Empfehlungen für Admin-Aktionen
- Sortierung nach Verfügbarkeit
Response-Struktur:
{
"success": true,
"printers": [
{
"id": 1,
"name": "Drucker 1",
"status": "online",
"can_be_assigned": true,
"status_message": "Online (OFF)",
"reachable": true,
"power_state": "off"
}
],
"summary": {
"total": 3,
"online": 1,
"offline": 2,
"unconfigured": 0
},
"recommendations": [
"Nur 1 von 3 Druckern sind verfügbar"
]
}
Integration mit bestehenden Systemen
Hardware-Integration
- Nutzung der bestehenden
DruckerSteuerung
-Klasse - Kompatibilität mit Tapo-Steckdosen-System
- Erweiterte Fehlerbehandlung für Netzwerkprobleme
Logging und Monitoring
- Detaillierte Logs für alle Verfügbarkeitsprüfungen
- Strukturierte Fehlermeldungen für bessere Debugging
- Admin-Benachrichtigungen bei kritischen Problemen
Database-Kompatibilität
- Keine Schema-Änderungen erforderlich
- Nutzung bestehender Printer- und Job-Tabellen
- Backward-Kompatibilität mit existierenden Daten
Vorteile der Implementierung
Für Benutzer:
- Keine frustrierenden fehlgeschlagenen Job-Starts
- Klare Informationen über Probleme und Lösungsansätze
- Bessere Erwartungshaltung durch Status-Transparenz
- Reduzierte Support-Anfragen durch selbsterklärende Meldungen
Für Administratoren:
- Echtzeit-Drucker-Übersicht in der Admin-Oberfläche
- Automatische intelligente Drucker-Zuweisung
- Proaktive Warnungen bei System-Problemen
- Reduzierter manueller Aufwand durch Automatisierung
Für das System:
- Vermeidung von hängenden Jobs
- Bessere Ressourcen-Ausnutzung
- Robustere Fehlerbehandlung
- Skalierbare Architektur für zusätzliche Drucker
Technische Details
Implementierte Sicherheitsprüfungen:
- Netzwerk-Erreichbarkeit via
check_outlet_status()
- Tapo-API-Validierung mit Retry-Mechanismus
- Database-Transaction-Sicherheit
- Input-Validierung für alle Parameter
Performance-Optimierungen:
- Parallelisierte Status-Prüfungen für mehrere Drucker
- Caching von Hardware-Status (geerbt von bestehender Implementierung)
- Minimierte Database-Queries durch efficient loading
- Timeout-Handling für langsame Netzwerkverbindungen
Error Recovery:
- Graceful Degradation bei Hardware-Problemen
- Fallback-Mechanismen für offline Drucker
- Retry-Logik für temporäre Netzwerkfehler
- Logging für Post-Mortem-Analyse
Konfiguration
Umgebungsvariablen:
# Keine neuen Variablen erforderlich - nutzt bestehende Tapo-Konfiguration
TAPO_USERNAME=admin
TAPO_PASSWORD=***
Admin-Interface:
Neue API-Endpunkte verfügbar unter:
GET /api/admin/printer-status
- Drucker-Status für Admin-Dashboard- Erweiterte Responses bei Job-Genehmigungen mit Status-Informationen
Testszenarien
1. Normaler Betrieb:
- ✅ Job-Start mit online Drucker funktioniert wie bisher
- ✅ Admin sieht Drucker-Status in Echtzeit
2. Alle Drucker offline:
- ✅ OTP-Aktivierung wird verweigert mit klarer Meldung
- ✅ Admin bekommt Warnung bei Genehmigungsversuch
3. Spezifischer Drucker offline:
- ✅ Job-Start wird verweigert mit Drucker-Namen
- ✅ Alternative Drucker werden nicht automatisch gewählt
4. Netzwerkprobleme:
- ✅ Timeout-Handling verhindert hängende Requests
- ✅ Fallback auf cached Status wenn verfügbar
Wartung und Monitoring
Log-Monitoring:
# Neue Log-Patterns für Überwachung:
grep "Drucker-Verfügbarkeitsprüfung" logs/guest.log
grep "Admin-Drucker-Zuweisung" logs/guest.log
grep "alle.*Drucker.*offline" logs/guest.log
Metriken für Dashboard:
- Anzahl verweigerter Job-Starts wegen offline Druckern
- Durchschnittliche Drucker-Verfügbarkeit
- Häufigkeit automatischer Drucker-Zuweisungen
Zukunftserweiterungen
Geplante Verbesserungen:
- Push-Benachrichtigungen an Admins bei kritischen Offline-Situationen
- Automatische Retry-Mechanismen für Jobs bei Drucker-Recovery
- Erweiterte Drucker-Priorisierung basierend auf Warteschlangen
- Integration mit Drucker-Wartungszeitplänen
Status: ✅ Vollständig implementiert und getestet
Version: 1.0
Datum: 2024-12-19
Autor: System-Administrator