📝 "Erweiterte Dokumentation für Druckerkonflikt-Management und Steckdosenschaltzeiten hinzugefügt, einschließlich API-Endpunkte, Konfliktbehandlungsszenarien und Systemarchitektur." 📚
This commit is contained in:
@ -1 +1,331 @@
|
||||
|
||||
# Druckerkonflikt-Management System - MYP Platform
|
||||
|
||||
## 📋 Übersicht
|
||||
|
||||
Das MYP-System verfügt über ein mehrstufiges Druckerkonflikt-Management-System, das proaktiv Konflikte verhindert, automatisch Lösungen findet und Benutzern transparente Handlungsoptionen bietet.
|
||||
|
||||
## 🏗️ Systemarchitektur
|
||||
|
||||
### Komponenten
|
||||
- **Intelligent Assignment Engine** - Automatische Druckerzuweisung
|
||||
- **Conflict Detection System** - Echtzeit-Konflikterkennung
|
||||
- **User Guidance Interface** - Benutzerführung bei Konflikten
|
||||
- **Analytics & Optimization** - Datenbasierte Optimierung
|
||||
|
||||
## 🎯 Konfliktarten und Behandlung
|
||||
|
||||
### 1. Zeitüberschneidungen (Primärkonflikte)
|
||||
|
||||
**Problem:** Benutzer wählt Drucker zu einem Zeitpunkt, zu dem bereits ein Job läuft.
|
||||
|
||||
**Erkennung:**
|
||||
```sql
|
||||
SELECT COUNT(*) FROM jobs
|
||||
WHERE printer_id = ?
|
||||
AND status IN ('scheduled', 'running')
|
||||
AND (
|
||||
(start_at >= ? AND start_at < ?) OR
|
||||
(end_at > ? AND end_at <= ?) OR
|
||||
(start_at <= ? AND end_at >= ?)
|
||||
)
|
||||
```
|
||||
|
||||
**Behandlungsstrategien:**
|
||||
1. **Automatische Umzuweisung** - System findet alternativen Drucker
|
||||
2. **Zeitverschiebung** - Vorschlag alternativer Zeitfenster
|
||||
3. **Prioritätsbasierte Verdrängung** - Bei Urgent-Jobs Umplanung bestehender Jobs
|
||||
|
||||
### 2. Druckerausfälle (Sekundärkonflikte)
|
||||
|
||||
**Problem:** Zugewiesener Drucker wird offline oder defekt.
|
||||
|
||||
**Behandlung:**
|
||||
1. Automatische Neuzuweisung an verfügbaren Drucker
|
||||
2. Benachrichtigung des Benutzers
|
||||
3. Status-Update auf "waiting_for_printer"
|
||||
|
||||
### 3. Ressourcenkonflikte (Tertiärkonflikte)
|
||||
|
||||
**Problem:** Material, Wartung oder andere Ressourcen nicht verfügbar.
|
||||
|
||||
**Behandlung:**
|
||||
1. Warteschlange mit automatischer Reaktivierung
|
||||
2. Benachrichtigung bei Ressourcenverfügbarkeit
|
||||
3. Alternative Materialvorschläge
|
||||
|
||||
## 🧠 Intelligente Druckerzuweisung
|
||||
|
||||
### Scoring-Algorithmus
|
||||
|
||||
Das System bewertet jeden Drucker anhand folgender Kriterien:
|
||||
|
||||
#### Verfügbarkeit (Gewichtung: 100 Punkte)
|
||||
- **Verfügbar:** +100 Punkte
|
||||
- **Belegt:** Ausschluss aus Bewertung
|
||||
|
||||
#### Auslastung (Gewichtung: 50 Punkte)
|
||||
- **Niedrige Auslastung (0-2 Jobs/24h):** +50 Punkte
|
||||
- **Mittlere Auslastung (3-5 Jobs/24h):** +30 Punkte
|
||||
- **Hohe Auslastung (6+ Jobs/24h):** +10 Punkte
|
||||
|
||||
#### Prioritätsoptimierung (Gewichtung: 30 Punkte)
|
||||
- **Urgent + Express-Drucker:** +30 Punkte
|
||||
- **High + Niedrige Auslastung:** +20 Punkte
|
||||
- **Normal:** +10 Punkte
|
||||
|
||||
#### Zeitfenster-Eignung (Gewichtung: 25 Punkte)
|
||||
- **Nachtschicht (18-06 Uhr) + Nacht-Drucker:** +25 Punkte
|
||||
- **Tagschicht (08-17 Uhr) + Tag-Drucker:** +15 Punkte
|
||||
|
||||
#### Job-Dauer-Eignung (Gewichtung: 20 Punkte)
|
||||
- **Lange Jobs (>8h) + Langzeit-Drucker:** +20 Punkte
|
||||
- **Kurze Jobs (≤2h) + Express-Drucker:** +15 Punkte
|
||||
|
||||
### Beispiel-Bewertung
|
||||
|
||||
```python
|
||||
Drucker A: Express-Drucker, 1 Job heute, verfügbar
|
||||
- Verfügbarkeit: +100
|
||||
- Auslastung: +50 (niedrig)
|
||||
- Priorität: +30 (urgent job)
|
||||
- Zeitfenster: +15 (tag)
|
||||
- Job-Dauer: +15 (kurz)
|
||||
GESAMT: 210 Punkte
|
||||
|
||||
Drucker B: Standard-Drucker, 3 Jobs heute, verfügbar
|
||||
- Verfügbarkeit: +100
|
||||
- Auslastung: +30 (mittel)
|
||||
- Priorität: +10 (normal)
|
||||
- Zeitfenster: +15 (tag)
|
||||
- Job-Dauer: +10 (standard)
|
||||
GESAMT: 165 Punkte
|
||||
|
||||
→ Drucker A wird gewählt
|
||||
```
|
||||
|
||||
## 🚨 Konfliktbehandlungsszenarien
|
||||
|
||||
### Szenario 1: Zeitüberschneidung bei manueller Druckerauswahl
|
||||
|
||||
**Ablauf:**
|
||||
1. Benutzer wählt Drucker X für 14:00-16:00
|
||||
2. System erkennt: Drucker X bereits belegt 13:30-15:30
|
||||
3. **Mögliche Reaktionen:**
|
||||
- Fehlermeldung mit Alternativvorschlägen
|
||||
- Automatische Umzuweisung mit Bestätigung
|
||||
- Zeitverschiebung vorschlagen (16:00-18:00)
|
||||
|
||||
### Szenario 2: Automatische Zuweisung ohne Verfügbarkeit
|
||||
|
||||
**Ablauf:**
|
||||
1. Benutzer gibt nur Zeitraum an (ohne Drucker)
|
||||
2. System sucht verfügbare Drucker
|
||||
3. **Bei Erfolg:** Automatische Zuweisung mit Begründung
|
||||
4. **Bei Fehlschlag:** Alternativen vorschlagen oder Warteschlange
|
||||
|
||||
### Szenario 3: Prioritätskonflikt
|
||||
|
||||
**Ablauf:**
|
||||
1. Urgent-Job benötigt Drucker X
|
||||
2. Drucker X hat Normal-Job geplant
|
||||
3. **System-Reaktion:**
|
||||
- Normal-Job auf anderen Drucker umplanen
|
||||
- Benutzer beider Jobs benachrichtigen
|
||||
- Begründung der Umplanung
|
||||
|
||||
## 📊 Benutzeroberfläche und Feedback
|
||||
|
||||
### Visueller Status der Drucker
|
||||
|
||||
```html
|
||||
🟢 Verfügbar (0-1 Jobs heute)
|
||||
🟡 Mäßig belegt (2-4 Jobs heute)
|
||||
🟠 Stark belegt (5-7 Jobs heute)
|
||||
🔴 Vollbelegt (8+ Jobs heute)
|
||||
⚫ Offline/Wartung
|
||||
```
|
||||
|
||||
### Konfliktmeldungen
|
||||
|
||||
#### Typ 1: Informativ
|
||||
```
|
||||
ℹ️ Der gewählte Drucker ist zu diesem Zeitpunkt belegt.
|
||||
Alternative: Drucker Y ist verfügbar und optimal geeignet.
|
||||
[Drucker Y wählen] [Anderen Zeitpunkt wählen]
|
||||
```
|
||||
|
||||
#### Typ 2: Warnung
|
||||
```
|
||||
⚠️ Hohe Auslastung in diesem Zeitraum.
|
||||
Empfehlung: Verschiebung um 2 Stunden für bessere Performance.
|
||||
[Trotzdem buchen] [Empfehlung annehmen]
|
||||
```
|
||||
|
||||
#### Typ 3: Fehler
|
||||
```
|
||||
❌ Keine Drucker verfügbar im gewählten Zeitraum.
|
||||
Nächste Verfügbarkeit: Morgen 08:00 Uhr
|
||||
[Warteschlange beitreten] [Anderen Zeitraum wählen]
|
||||
```
|
||||
|
||||
### Smart Recommendations
|
||||
|
||||
Das System zeigt proaktiv Empfehlungen:
|
||||
|
||||
```
|
||||
🎯 SMART-EMPFEHLUNG
|
||||
Drucker: Mercedes Express-01
|
||||
Verfügbarkeit: 95%
|
||||
Auslastung: Niedrig (18%)
|
||||
Begründung: Optimal für Express-Jobs, keine Warteschlange
|
||||
Geschätzte Startzeit: Sofort
|
||||
[Empfehlung annehmen] [Mehr Details]
|
||||
```
|
||||
|
||||
## 🔄 Automatische Optimierung
|
||||
|
||||
### Load Balancing
|
||||
- Gleichmäßige Verteilung auf verfügbare Drucker
|
||||
- Berücksichtigung historischer Auslastungsmuster
|
||||
- Dynamische Anpassung bei Druckerausfällen
|
||||
|
||||
### Predictive Scheduling
|
||||
- Analyse vergangener Buchungsmuster
|
||||
- Vorhersage von Spitzenzeiten
|
||||
- Proaktive Ressourcenzuteilung
|
||||
|
||||
### Queue Management
|
||||
- Intelligente Warteschlangen mit Prioritätssystem
|
||||
- Automatische Nachrückung bei Stornierungen
|
||||
- Benachrichtigungen bei verfügbar werdenden Plätzen
|
||||
|
||||
## 🛠️ Konfiguration
|
||||
|
||||
### Prioritätsstufen
|
||||
```python
|
||||
PRIORITY_LEVELS = {
|
||||
'urgent': {'weight': 4, 'preemption': True},
|
||||
'high': {'weight': 3, 'preemption': False},
|
||||
'normal': {'weight': 2, 'preemption': False},
|
||||
'low': {'weight': 1, 'preemption': False}
|
||||
}
|
||||
```
|
||||
|
||||
### Zeitfenster-Kategorien
|
||||
```python
|
||||
TIME_CATEGORIES = {
|
||||
'night_shift': {'start': 18, 'end': 6, 'bonus': 25},
|
||||
'day_shift': {'start': 8, 'end': 17, 'bonus': 15},
|
||||
'transition': {'start': 6, 'end': 8, 'bonus': 5}
|
||||
}
|
||||
```
|
||||
|
||||
### Drucker-Kategorien
|
||||
```python
|
||||
PRINTER_CATEGORIES = {
|
||||
'express': {'short_job_bonus': 15, 'urgent_bonus': 30},
|
||||
'longterm': {'long_job_bonus': 20, 'reliability_bonus': 10},
|
||||
'standard': {'balanced_bonus': 10}
|
||||
}
|
||||
```
|
||||
|
||||
## 📈 Monitoring und Analytics
|
||||
|
||||
### Wichtige Metriken
|
||||
- **Konfliktrate:** Anzahl Konflikte / Gesamtbuchungen
|
||||
- **Lösungsrate:** Automatisch gelöste / Gesamtkonflikte
|
||||
- **Benutzerzufriedenheit:** Akzeptierte Empfehlungen / Gesamtempfehlungen
|
||||
- **Systemeffizienz:** Durchschnittliche Druckerauslastung
|
||||
|
||||
### Dashboard-Elemente
|
||||
- Echtzeit-Druckerstatus
|
||||
- Konflikthistorie
|
||||
- Optimierungsvorschläge
|
||||
- Auslastungsprognosen
|
||||
|
||||
## 🔧 Wartung und Fehlerbehebung
|
||||
|
||||
### Häufige Probleme
|
||||
|
||||
#### Problem: Falsche Druckerzuweisung
|
||||
**Lösung:** Scoring-Algorithmus-Parameter anpassen
|
||||
|
||||
#### Problem: Zu viele Konflikte
|
||||
**Lösung:** Mehr Drucker aktivieren oder Zeitfenster erweitern
|
||||
|
||||
#### Problem: Benutzer umgehen Empfehlungen
|
||||
**Lösung:** Incentive-System oder bessere Begründungen
|
||||
|
||||
### Log-Analyse
|
||||
```bash
|
||||
grep "CONFLICT" logs/calendar/*.log | tail -50
|
||||
grep "RECOMMENDATION" logs/calendar/*.log | grep "accepted"
|
||||
```
|
||||
|
||||
## 📚 API-Dokumentation
|
||||
|
||||
### Konfliktprüfung
|
||||
```http
|
||||
POST /api/calendar/check-conflicts
|
||||
{
|
||||
"printer_id": 1,
|
||||
"start_time": "2025-01-10T14:00:00",
|
||||
"end_time": "2025-01-10T16:00:00"
|
||||
}
|
||||
|
||||
Response:
|
||||
{
|
||||
"conflicts": true,
|
||||
"conflicting_jobs": [{"id": 123, "name": "Prototyp A"}],
|
||||
"alternatives": [{"printer_id": 2, "name": "Mercedes-02"}]
|
||||
}
|
||||
```
|
||||
|
||||
### Smart Recommendation
|
||||
```http
|
||||
POST /api/calendar/smart-recommendation
|
||||
{
|
||||
"start_time": "2025-01-10T14:00:00",
|
||||
"duration_minutes": 120,
|
||||
"priority": "high"
|
||||
}
|
||||
|
||||
Response:
|
||||
{
|
||||
"recommended_printer": {
|
||||
"id": 3,
|
||||
"name": "Mercedes Express-01",
|
||||
"score": 195,
|
||||
"availability": "96%",
|
||||
"reason": "Optimal für Express-Jobs"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 🚀 Zukünftige Erweiterungen
|
||||
|
||||
### Geplante Features
|
||||
- **KI-basierte Optimierung** - Machine Learning für bessere Vorhersagen
|
||||
- **Multi-Standort-Management** - Konfliktbehandlung über mehrere Standorte
|
||||
- **Ressourcenoptimierung** - Integration von Material- und Personalplanung
|
||||
- **Mobile Benachrichtigungen** - Push-Notifications bei Konflikten
|
||||
- **Automatische Umplanung** - Vollautomatische Konfliktlösung
|
||||
|
||||
### Integration mit externen Systemen
|
||||
- **ERP-System** - Materialverfügbarkeit berücksichtigen
|
||||
- **Wartungskalender** - Planned Maintenance integrieren
|
||||
- **Benutzerkalender** - Outlook/Teams-Integration für bessere Planung
|
||||
|
||||
---
|
||||
|
||||
## 📞 Support und Dokumentation
|
||||
|
||||
**Bei Fragen zur Konfliktbehandlung:**
|
||||
- Dokumentation: `docs/DRUCKERKONFLIKT_MANAGEMENT.md`
|
||||
- Log-Dateien: `logs/calendar/conflict_*.log`
|
||||
- Admin-Interface: `/admin/conflicts`
|
||||
- Support-Ticket: Internes Ticketsystem
|
||||
|
||||
**Letzte Aktualisierung:** 06.01.2025
|
||||
**Version:** 2.1.0
|
||||
**Autor:** MYP Development Team
|
@ -1 +1,303 @@
|
||||
|
||||
# Steckdosenschaltzeiten System
|
||||
|
||||
## Übersicht
|
||||
|
||||
Das Steckdosenschaltzeiten-System ermöglicht Administratoren eine detaillierte Kalenderübersicht aller Schaltungen der Smart Plug Steckdosen (TAPO). Das System protokolliert automatisch:
|
||||
|
||||
- **Verbindungsstatus**: Wann eine Steckdose vom Strom getrennt war
|
||||
- **Schaltzustände**: Wann eine Steckdose ein- oder ausgeschaltet war
|
||||
- **Systemereignisse**: Automatische Checks, manuelle Änderungen, API-Zugriffe
|
||||
- **Performance-Daten**: Antwortzeiten, Energieverbrauch, Firmware-Versionen
|
||||
|
||||
## Funktionen
|
||||
|
||||
### 📅 Kalenderansicht mit FullCalendar
|
||||
- Moderne FullCalendar-Integration mit deutscher Lokalisierung
|
||||
- Monat-, Wochen- und Tages-Ansichten
|
||||
- Farbkodierte Events basierend auf Schaltungsstatus
|
||||
- Interaktive Event-Details mit detaillierten Informationen
|
||||
|
||||
### 🔌 Automatisches Logging
|
||||
- Kontinuierliche Überwachung aller registrierten Steckdosen
|
||||
- Automatische Protokollierung bei Statusänderungen
|
||||
- Integration in das bestehende Drucker-Monitor-System
|
||||
|
||||
### 📊 Administrator-Dashboard
|
||||
- Dedizierte Übersicht unter `/admin/steckdosenschaltzeiten`
|
||||
- Verlinkt über Footer (nur für Administratoren sichtbar)
|
||||
- Echtzeit-Statistiken mit modernen Karten-Design
|
||||
|
||||
### 🔍 Erweiterte Filterung
|
||||
- Filter nach Drucker im Kalender
|
||||
- Verschiedene Ansichtsmodi (Monat/Woche/Tag)
|
||||
- Legende für bessere Übersichtlichkeit
|
||||
|
||||
### 🧹 Automatische Bereinigung
|
||||
- Konfigurierbare Löschung alter Logs
|
||||
- Performance-Optimierung durch Cache-Management
|
||||
- Datenschutz-konforme Datenhaltung
|
||||
|
||||
## Kalender-Features
|
||||
|
||||
### Farbkodierung
|
||||
- **🟢 Grün**: Steckdose EIN (Status: `on`)
|
||||
- **🔴 Orange**: Steckdose AUS (Status: `off`)
|
||||
- **🔌 Blau**: Verbunden (Status: `connected`)
|
||||
- **❌ Rot**: Getrennt (Status: `disconnected`)
|
||||
|
||||
### Event-Details
|
||||
Beim Klick auf ein Kalenderereignis werden folgende Details angezeigt:
|
||||
- Zeitpunkt der Schaltung
|
||||
- Drucker-Name
|
||||
- Status und Quelle der Änderung
|
||||
- Benutzer (bei manueller Schaltung)
|
||||
- Technische Daten (Antwortzeit, Verbrauch, Spannung, Strom)
|
||||
- Notizen und Fehlermeldungen
|
||||
|
||||
### Ansichtsmodi
|
||||
- **Monatsansicht**: Übersicht aller Schaltungen im Monat
|
||||
- **Wochenansicht**: Detaillierte Tageszeiten sichtbar
|
||||
- **Tagesansicht**: Stündliche Aufschlüsselung
|
||||
|
||||
## Datenbankmodell
|
||||
|
||||
### PlugStatusLog
|
||||
```python
|
||||
- id (Primary Key)
|
||||
- printer_id (Foreign Key -> Printer)
|
||||
- status (String): 'connected', 'disconnected', 'on', 'off'
|
||||
- timestamp (DateTime): Zeitpunkt der Statusänderung
|
||||
- ip_address (String): IP der Steckdose
|
||||
- power_consumption (Float): Stromverbrauch in Watt
|
||||
- voltage (Float): Spannung in Volt
|
||||
- current (Float): Stromstärke in Ampere
|
||||
- source (String): 'system', 'manual', 'api', 'scheduler'
|
||||
- user_id (Foreign Key -> User): Bei manueller Änderung
|
||||
- notes (Text): Zusätzliche Notizen
|
||||
- response_time_ms (Integer): Antwortzeit in Millisekunden
|
||||
- error_message (Text): Fehlermeldung bei Problemen
|
||||
- firmware_version (String): Firmware-Version der Steckdose
|
||||
```
|
||||
|
||||
## API-Endpunkte
|
||||
|
||||
### Kalender-Daten abrufen
|
||||
```
|
||||
GET /api/admin/plug-schedules/calendar
|
||||
Parameter:
|
||||
- start (required): Start-Datum im ISO-Format
|
||||
- end (required): End-Datum im ISO-Format
|
||||
- printer_id (optional): Filter nach Drucker
|
||||
```
|
||||
|
||||
### Logs abrufen
|
||||
```
|
||||
GET /api/admin/plug-schedules/logs
|
||||
Parameter:
|
||||
- printer_id (optional): Filter nach Drucker
|
||||
- status (optional): Filter nach Status
|
||||
- hours (optional): Zeitraum in Stunden (Standard: 24)
|
||||
- page (optional): Seite für Paginierung
|
||||
- per_page (optional): Einträge pro Seite
|
||||
```
|
||||
|
||||
### Statistiken abrufen
|
||||
```
|
||||
GET /api/admin/plug-schedules/statistics
|
||||
Parameter:
|
||||
- hours (optional): Zeitraum in Stunden (Standard: 24)
|
||||
```
|
||||
|
||||
### Alte Logs bereinigen
|
||||
```
|
||||
POST /api/admin/plug-schedules/cleanup
|
||||
Body:
|
||||
{
|
||||
"days": 30 // Logs älter als X Tage löschen
|
||||
}
|
||||
```
|
||||
|
||||
## Integration
|
||||
|
||||
### Printer Monitor Integration
|
||||
Das System ist vollständig in das bestehende `printer_monitor.py` integriert:
|
||||
|
||||
- `_check_outlet_status()`: Loggt jeden Status-Check
|
||||
- `_turn_outlet_off()`: Loggt Schaltbefehle
|
||||
- `initialize_all_outlets_on_startup()`: Loggt Startup-Initialisierung
|
||||
|
||||
### Automatisches Logging
|
||||
```python
|
||||
# Beispiel: Status-Änderung loggen
|
||||
PlugStatusLog.log_status_change(
|
||||
printer_id=1,
|
||||
status="on",
|
||||
source="manual",
|
||||
user_id=current_user.id,
|
||||
ip_address="192.168.1.100",
|
||||
response_time_ms=250,
|
||||
notes="Manuell eingeschaltet über Admin-Panel"
|
||||
)
|
||||
```
|
||||
|
||||
## Konfiguration
|
||||
|
||||
### FullCalendar-Einstellungen
|
||||
- **Lokalisierung**: Deutsche Sprache und Formate
|
||||
- **Höhe**: Automatische Anpassung an Container
|
||||
- **Events**: Asynchrones Laden vom Server
|
||||
- **Navigation**: Vor/Zurück, Heute, Ansichtswechsel
|
||||
|
||||
### Cache-Einstellungen
|
||||
- **Session-Cache**: 30 Sekunden für schnelle Zugriffe
|
||||
- **DB-Cache**: 5 Minuten für persistente Daten
|
||||
- **Log-Cache**: Performance-optimierte Abfragen
|
||||
|
||||
### Bereinigung
|
||||
- **Standard**: 30 Tage alte Logs löschen
|
||||
- **Konfigurierbar**: 1-365 Tage
|
||||
- **Automatisch**: Über Scheduler oder manuell
|
||||
|
||||
## Sicherheit
|
||||
|
||||
### Zugriffskontrolle
|
||||
- Nur Administratoren haben Zugriff
|
||||
- CSRF-Schutz für alle Änderungen
|
||||
- Login-Requirement für alle API-Endpunkte
|
||||
|
||||
### Datenschutz
|
||||
- Konfigurierbare Löschung alter Daten
|
||||
- Anonymisierung nach Löschung von Druckern
|
||||
- Audit-Trail für alle Änderungen
|
||||
|
||||
## Status-Bedeutungen
|
||||
|
||||
| Status | Bedeutung | Beschreibung | Farbe im Kalender |
|
||||
|--------|-----------|--------------|-------------------|
|
||||
| `connected` | Verbunden | Steckdose ist erreichbar und antwortet | 🔌 Blau |
|
||||
| `disconnected` | Getrennt | Steckdose ist nicht erreichbar | ❌ Rot |
|
||||
| `on` | Eingeschaltet | Steckdose ist an - Drucker druckt aktiv | 🟢 Grün |
|
||||
| `off` | Ausgeschaltet | Steckdose ist aus - Drucker bereit | 🔴 Orange |
|
||||
|
||||
## Quellenarten
|
||||
|
||||
| Source | Bedeutung | Beschreibung |
|
||||
|--------|-----------|--------------|
|
||||
| `system` | System | Automatische Checks durch Monitor |
|
||||
| `manual` | Manuell | Manuelle Änderung durch Administrator |
|
||||
| `api` | API | Programmatische Änderung über API |
|
||||
| `scheduler` | Scheduler | Geplante Aktion durch Scheduler |
|
||||
|
||||
## UI-Komponenten
|
||||
|
||||
### Statistik-Karten
|
||||
- **Schaltungen (24h)**: Anzahl der Statusänderungen
|
||||
- **Erfolgsrate**: Prozentsatz erfolgreicher Verbindungen
|
||||
- **Ø Antwortzeit**: Durchschnittliche Reaktionszeit
|
||||
- **Fehlerzahl**: Anzahl der Verbindungsfehler
|
||||
|
||||
### Steuerungselemente
|
||||
- **Drucker-Filter**: Dropdown zur Filterung nach Drucker
|
||||
- **Ansicht-Buttons**: Wechsel zwischen Monat/Woche/Tag
|
||||
- **Aktualisieren**: Manuelle Datenaktualisierung
|
||||
- **Bereinigen**: Löschung alter Logs
|
||||
|
||||
### Modal-Details
|
||||
Detailansicht für Kalenderereignisse mit:
|
||||
- Vollständige Event-Informationen
|
||||
- Technische Parameter
|
||||
- Fehlerdetails (falls vorhanden)
|
||||
- Benutzernotizen
|
||||
|
||||
## Performance
|
||||
|
||||
### Optimierungen
|
||||
- Asynchrone Kalender-Events mit Lazy Loading
|
||||
- Intelligentes Caching auf mehreren Ebenen
|
||||
- Paginierte Datenabfrage für große Datensätze
|
||||
- Index-optimierte Datenbankabfragen
|
||||
- FullCalendar-Performance-Optimierung
|
||||
|
||||
### Monitoring-Metriken
|
||||
- Durchschnittliche Antwortzeit der Steckdosen
|
||||
- Fehlerrate bei Verbindungen
|
||||
- Anzahl Logs pro Zeitraum
|
||||
- Top-Drucker nach Aktivität
|
||||
|
||||
## Fehlerbehebung
|
||||
|
||||
### Häufige Probleme
|
||||
|
||||
**FullCalendar lädt nicht**
|
||||
- JavaScript-Konsole auf Fehler prüfen
|
||||
- CDN-Verfügbarkeit überprüfen
|
||||
- Browser-Cache leeren
|
||||
|
||||
**Kalender-Events fehlen**
|
||||
- API-Endpunkt `/api/admin/plug-schedules/calendar` testen
|
||||
- Datums-Parameter überprüfen
|
||||
- Administratorberechtigung validieren
|
||||
|
||||
**PyP100-Modul nicht verfügbar**
|
||||
```bash
|
||||
pip install PyP100
|
||||
```
|
||||
|
||||
**Steckdose nicht erreichbar**
|
||||
- IP-Adresse überprüfen
|
||||
- Netzwerkverbindung testen
|
||||
- TAPO-Anmeldedaten validieren
|
||||
|
||||
### Debug-Informationen
|
||||
```javascript
|
||||
// Kalender-Debug im Browser
|
||||
console.log(calendar.getEvents());
|
||||
|
||||
// API-Test
|
||||
fetch('/api/admin/plug-schedules/calendar?start=2025-01-01&end=2025-01-31')
|
||||
.then(r => r.json())
|
||||
.then(console.log);
|
||||
```
|
||||
|
||||
## Wartung
|
||||
|
||||
### Regelmäßige Aufgaben
|
||||
1. **Wöchentlich**: Logs älter als 30 Tage bereinigen
|
||||
2. **Monatlich**: Cache-Performance überprüfen
|
||||
3. **Quartal**: Datenbankgröße und Indizes optimieren
|
||||
4. **Jährlich**: FullCalendar-Version aktualisieren
|
||||
|
||||
### Backup-Empfehlungen
|
||||
- Steckdosen-Logs in reguläre Backups einbeziehen
|
||||
- Export-Funktionen für langfristige Archivierung
|
||||
- Disaster-Recovery-Tests durchführen
|
||||
|
||||
## Changelog
|
||||
|
||||
### Version 2.0.0 (Januar 2025)
|
||||
- ✅ Umbenennung zu "Steckdosenschaltzeiten"
|
||||
- ✅ FullCalendar-Integration implementiert
|
||||
- ✅ Moderne Kalenderansicht mit deutschen Lokalisierung
|
||||
- ✅ Event-Details Modal hinzugefügt
|
||||
- ✅ Farbkodierte Ereignisse nach Status
|
||||
- ✅ Interaktive Drucker-Filterung
|
||||
- ✅ Responsive Design für mobile Geräte
|
||||
- ✅ Performance-Optimierungen für Kalender-Daten
|
||||
|
||||
### Version 1.0.0 (Januar 2025)
|
||||
- ✅ Grundlegendes Monitoring-System implementiert
|
||||
- ✅ Administrator-Dashboard erstellt
|
||||
- ✅ API-Endpunkte entwickelt
|
||||
- ✅ Integration in Printer Monitor
|
||||
- ✅ Automatisches Logging aktiviert
|
||||
- ✅ Footer-Link für Administratoren hinzugefügt
|
||||
- ✅ Bereinigungsfunktionen implementiert
|
||||
|
||||
## Support
|
||||
|
||||
Für Fragen oder Probleme:
|
||||
1. Logs in `/logs/printer_monitor/` prüfen
|
||||
2. Administrator-Dashboard auf Fehler überprüfen
|
||||
3. Browser-Konsole auf JavaScript-Fehler prüfen
|
||||
4. FullCalendar-Kompatibilität validieren
|
||||
5. Bei persistenten Problemen System-Admin kontaktieren
|
Reference in New Issue
Block a user