# 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 