331 lines
8.9 KiB
Markdown
331 lines
8.9 KiB
Markdown
# 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 |