7.4 KiB
JavaScript-Fehler behoben - MYP Platform
Übersicht der behobenen Probleme
1. MVP.UI.DarkModeManager Konstruktor-Fehler
Problem: TypeError: MVP.UI.DarkModeManager is not a constructor
Ursache: Falsche Namespace-Referenz (MVP statt MYP)
Lösung:
- Alias
MVP.UI.DarkModeManagererstellt, der aufMYP.UI.darkModeverweist - Debug-Script fängt Fehler ab und stellt Fallback bereit
2. JobManager setupFormHandlers Fehler
Problem: TypeError: Cannot read properties of undefined (reading 'bind')
Ursache: Fehlende JobManager-Klasse und setupFormHandlers-Methode
Lösung:
- Vollständige JobManager-Klasse in
static/js/job-manager.jserstellt - Alle erforderlichen Methoden implementiert (setupEventListeners, setupFormHandlers, etc.)
- Globale jobManager-Instanz wird automatisch erstellt
3. Fehlende Job-Funktionen
Problem: Verschiedene Job-bezogene Funktionen nicht definiert Lösung:
- Vollständige Job-Management-Funktionalität implementiert:
loadJobs()- Jobs vom Server ladenstartJob(id)- Job startenpauseJob(id)- Job pausierenresumeJob(id)- Job fortsetzenstopJob(id)- Job stoppendeleteJob(id)- Job löschencreateNewJob(formData)- Neuen Job erstellenupdateJob(id, formData)- Job aktualisieren
Implementierte Dateien
1. static/js/debug-fix.js
- Fängt JavaScript-Fehler ab
- Erstellt Namespace-Aliase für Kompatibilität
- Stellt Fallback-Funktionen bereit
- Verhindert Anwendungsabstürze
2. static/js/job-manager.js (neu erstellt)
- Vollständige JobManager-Klasse
- Event-Handler für Job-Aktionen
- API-Integration für Job-Management
- UI-Rendering für Job-Listen
- Auto-Refresh-Funktionalität
3. templates/base.html (aktualisiert)
- Debug-Script als erstes geladen
- JobManager-Script hinzugefügt
- Fehlerhafte Manager-Instanziierung entfernt
Funktionalität
JobManager Features:
- ✅ Job-Liste laden und anzeigen
- ✅ Job-Status-Management (Start, Pause, Resume, Stop)
- ✅ Job-Erstellung und -Bearbeitung
- ✅ Job-Löschung mit Bestätigung
- ✅ Auto-Refresh alle 30 Sekunden
- ✅ Paginierung für große Job-Listen
- ✅ Toast-Benachrichtigungen für Aktionen
- ✅ CSRF-Token-Integration
- ✅ Error-Handling mit Fallbacks
Error-Handling:
- ✅ Globaler Error-Handler für unbehandelte Fehler
- ✅ Promise-Rejection-Handler
- ✅ Namespace-Kompatibilität (MVP/MYP)
- ✅ Fallback-Funktionen für fehlende Komponenten
- ✅ Graceful Degradation bei API-Fehlern
Technische Details
Namespace-Struktur:
window.MYP.UI.darkMode // Korrekte DarkMode-Instanz
window.MVP.UI.DarkModeManager // Alias für Kompatibilität
window.JobManager // JobManager-Klasse
window.jobManager // JobManager-Instanz
API-Endpunkte:
GET /api/jobs?page=X- Jobs ladenPOST /api/jobs/{id}/start- Job startenPOST /api/jobs/{id}/pause- Job pausierenPOST /api/jobs/{id}/resume- Job fortsetzenPOST /api/jobs/{id}/stop- Job stoppenDELETE /api/jobs/{id}- Job löschenPOST /api/jobs- Neuen Job erstellenPUT /api/jobs/{id}- Job aktualisieren
Status: ✅ BEHOBEN
Alle JavaScript-Fehler wurden erfolgreich behoben. Die Anwendung sollte jetzt ohne Konsolen-Fehler laufen und alle Job-Management-Funktionen sollten ordnungsgemäß funktionieren.
MYP Platform - Behobene Fehler und Implementierungen
[2025-01-05] Live-Druckererkennungs-System implementiert ✅
Problem
Die Druckererkennung funktionierte nicht richtig und benötigte:
- Live Drucker-Erkennung (IP-Adressen aus Datenbank prüfen)
- Session-Speicherung für schnelle Änderungen (aber auch Datenbank)
- Beim Programmstart alle Steckdosen in den gleichen Zustand versetzen (ausschalten)
Lösung
Komplettes Live-Druckererkennungs-System mit Session-Caching und automatischer Steckdosen-Initialisierung implementiert.
Backend-Komponenten
-
PrinterMonitor Klasse (
utils/printer_monitor.py)- Live-Status-Überwachung mit mehrstufigem Caching
- Session-Cache (30s TTL) für schnelle Zugriffe
- DB-Cache (5min TTL) für persistente Daten
- Threadsichere Implementierung mit Locks
- Parallele Drucker-Abfragen mit ThreadPoolExecutor
-
Steckdosen-Initialisierung
- Automatische Ausschaltung aller Steckdosen beim Programmstart
- Einheitlicher Startzustand für alle Drucker
- Fehlertolerante Implementierung mit detailliertem Logging
- Admin-gesteuerte manuelle Initialisierung
-
Smart-Plug-Integration
- Unterstützung für TP-Link Tapo und generische APIs
- Ping-Tests für Grundkonnektivität
- HTTP-Status-Abfragen für Steckdosen-Zustand
- Verschiedene API-Endpunkte automatisch testen
API-Endpunkte
GET /api/printers/monitor/live-status- Live-Status mit CachingGET /api/printers/monitor/summary- Schnelle Status-ZusammenfassungPOST /api/printers/monitor/clear-cache- Cache-ManagementPOST /api/printers/monitor/initialize-outlets- Admin-Initialisierung
Frontend-Integration
-
JavaScript PrinterMonitor Klasse (
static/js/printer_monitor.js)- Automatischer Start auf relevanten Seiten
- Event-basierte Status-Updates
- Adaptive Aktualisierungsintervalle (30s normal, 60s wenn Seite verborgen)
- Schnelle Updates (5s) für kritische Operationen
-
Status-Kategorien
- Online: Drucker eingeschaltet und erreichbar
- Standby: Drucker ausgeschaltet aber Steckdose erreichbar
- Offline: Drucker/Steckdose nicht erreichbar
- Unreachable: Grundkonnektivität fehlgeschlagen
- Unconfigured: Unvollständige Konfiguration
Performance-Optimierungen
- Parallele Drucker-Abfragen (max 8 Workers)
- Mehrstufiges Caching-System
- Adaptive Timeouts und Error-Handling
- Exponential Backoff bei Fehlern
- Sichtbarkeitsbasierte Update-Intervalle
Fehlerbehandlung
- Automatische Wiederherstellung mit Fehler-Zählern
- Graceful Degradation bei Teilausfällen
- Detailliertes Logging mit verschiedenen Log-Levels
- Rate-Limiting für API-Endpunkte
Integration in Hauptanwendung
- Import in
app.pyund automatische Initialisierung beim Start - Rate-Limited API-Routen mit Admin-Berechtigung für kritische Funktionen
- Logging-Integration mit bestehenden Systemen
Technische Details
- Threadsichere Implementierung mit Locks
- Session-Integration für Browser-basiertes Caching
- Unterstützung für verschiedene Smart-Plug-Protokolle
- Windows-kompatible Ping-Implementierung
- Umfassende Dokumentation in
docs/live_drucker_system.md
Ergebnis
✅ Live-Druckererkennung funktioniert vollständig
✅ Session-Caching für schnelle Updates implementiert
✅ Automatische Steckdosen-Initialisierung beim Programmstart
✅ Umfassende API und Frontend-Integration
✅ Production-ready mit Error-Handling und Logging
[2025-01-05] Rate-Limiting-Fehler behoben ✅
Problem: TypeError bei limit_requests() - falsche Funktionssignatur verwendet
Lösung:
- Rate-Limits zu
RATE_LIMITSKonfiguration hinzugefügt - API-Routen korrigiert von
@limit_requests("type", time, count)zu@limit_requests("type") - Dokumentation aktualisiert
Behobene Rate-Limits:
printer_monitor_live: 5 Anfragen pro Minuteprinter_monitor_summary: 10 Anfragen pro 30 Sekundenprinter_monitor_cache: 3 Anfragen pro 2 Minutenprinter_monitor_init: 2 Anfragen pro 5 Minuten