// frontend/src/pages/Help/Help.tsx import React, { useState, useEffect } from 'react'; const Help: React.FC = () => { const [currentStage, setCurrentStage] = useState(0); const [isAnimating, setIsAnimating] = useState(false); const algorithmStages = [ { title: "📊 Phase A: Reguläre Mitarbeiterplanung", description: "Zuweisung aller Mitarbeiter außer Manager", steps: [ "Grundabdeckung: Mindestens 1 Mitarbeiter pro Schicht", "Erfahrene Mitarbeiter werden bevorzugt", "Verhindere 'Neu allein' Situationen", "Fülle Schichten bis zur Zielbesetzung" ], color: "#3498db" }, { title: "👑 Phase B: Manager-Einfügung", description: "Manager wird seinen bevorzugten Schichten zugewiesen", steps: [ "Manager wird festen Schichten zugewiesen", "Erfahrene Mitarbeiter werden zu Manager-Schichten hinzugefügt", "Bei Problemen: Austausch oder Bewegung von Mitarbeitern", "Fallback: Nicht-erfahrene als Backup" ], color: "#e74c3c" }, { title: "🔧 Phase C: Reparatur & Validierung", description: "Probleme erkennen und automatisch beheben", steps: [ "Überbesetzte erfahrene Mitarbeiter identifizieren", "Mitarbeiter-Pool für Neuverteilung erstellen", "Priorisierte Zuweisung zu Problem-Schichten", "Finale Validierung aller Geschäftsregeln" ], color: "#2ecc71" }, { title: "✅ Finale Prüfung", description: "Zusammenfassung und Freigabe", steps: [ "Reparatur-Bericht generieren", "Kritische vs. nicht-kritische Probleme klassifizieren", "Veröffentlichungsstatus bestimmen", "Benutzerfreundliche Zusammenfassung anzeigen" ], color: "#f39c12" } ]; const businessRules = [ { rule: "Manager darf nicht allein arbeiten", critical: true }, { rule: "Erfahrene mit canWorkAlone: false dürfen nicht allein arbeiten", critical: true }, { rule: "Keine leeren Schichten", critical: true }, { rule: "Keine 'Neu allein' Situationen", critical: true }, { rule: "Manager sollte mit erfahrenem Mitarbeiter arbeiten", critical: false }, { rule: "Vertragslimits einhalten", critical: true }, { rule: "Nicht zu viele erfahrene Mitarbeiter in einer Schicht", critical: false } ]; useEffect(() => { const interval = setInterval(() => { if (isAnimating) { setCurrentStage((prev) => (prev + 1) % algorithmStages.length); } }, 3000); return () => clearInterval(interval); }, [isAnimating]); const toggleAnimation = () => { setIsAnimating(!isAnimating); }; return (

❓ Hilfe & Support - Scheduling Algorithmus

{/* Business Rules */}

📋 Validierungs Regeln

{businessRules.map((rule, index) => (
{rule.critical ? '❌' : '⚠️'} {rule.rule} {rule.critical ? 'KRITISCH' : 'WARNUNG'}
))}
{/* Algorithm Explanation */}

🎯 Wie der Algorithmus funktioniert

🏗️ Phasen-basierter Ansatz

Der Algorithmus arbeitet in klar definierten Phasen, um komplexe Probleme schrittweise zu lösen und Stabilität zu gewährleisten.

💡 Tipps für beste Ergebnisse

); }; export default Help;