import { useState, useEffect } from 'react' import { useNavigate } from 'react-router-dom' import { useKlausur } from '../hooks/useKlausur' type Step = 'action' | 'type' | 'class' type Action = 'korrigieren' | 'erstellen' type ExamType = 'vorabitur' | 'abitur' interface SchoolClass { id: string name: string student_count: number } export default function OnboardingPage() { const navigate = useNavigate() const { createKlausur, loadKlausuren, klausuren } = useKlausur() const [step, setStep] = useState('action') const [action, setAction] = useState(null) const [examType, setExamType] = useState(null) const [selectedClass, setSelectedClass] = useState(null) const [classes, setClasses] = useState([]) const [loading, setLoading] = useState(false) // Load existing klausuren on mount useEffect(() => { loadKlausuren() }, [loadKlausuren]) // Load classes when reaching step 3 useEffect(() => { if (step === 'class') { loadClasses() } }, [step]) const loadClasses = async () => { try { // Try to load from school-service via backend proxy const resp = await fetch('/api/school/classes') if (resp.ok) { const data = await resp.json() setClasses(data) } else { // If no school service available, use demo data setClasses([ { id: 'demo-q1', name: 'Q1 Deutsch GK', student_count: 24 }, { id: 'demo-q2', name: 'Q2 Deutsch LK', student_count: 18 }, { id: 'demo-q3', name: 'Q3 Deutsch GK', student_count: 22 } ]) } } catch (e) { console.error('Failed to load classes:', e) // Use demo data on error setClasses([ { id: 'demo-q1', name: 'Q1 Deutsch GK', student_count: 24 }, { id: 'demo-q2', name: 'Q2 Deutsch LK', student_count: 18 }, { id: 'demo-q3', name: 'Q3 Deutsch GK', student_count: 22 } ]) } } const handleSelectAction = (a: Action) => { setAction(a) if (a === 'erstellen') { alert('Die Klausur-Erstellung wird in einer spaeteren Version verfuegbar sein.') return } setStep('type') } const handleSelectType = (t: ExamType) => { setExamType(t) setStep('class') } const handleSelectClass = (c: SchoolClass) => { setSelectedClass(c) } const handleBack = () => { if (step === 'type') setStep('action') else if (step === 'class') setStep('type') } const handleStartCorrection = async () => { if (!selectedClass || !examType) return setLoading(true) try { const klausur = await createKlausur({ title: `Klausur ${selectedClass.name}`, subject: 'Deutsch', modus: examType === 'abitur' ? 'landes_abitur' : 'vorabitur', class_id: selectedClass.id, year: new Date().getFullYear(), semester: 'Q1' }) navigate(`/korrektur/${klausur.id}`) } catch (e) { console.error('Failed to create klausur:', e) alert('Fehler beim Erstellen der Klausur') } finally { setLoading(false) } } const getStepClasses = (s: Step) => { const steps: Step[] = ['action', 'type', 'class'] const currentIndex = steps.indexOf(step) const stepIndex = steps.indexOf(s) if (stepIndex < currentIndex) return 'onboarding-step completed' if (stepIndex === currentIndex) return 'onboarding-step active' return 'onboarding-step' } return (
{step !== 'action' && (
← Zurueck
)}
{step === 'action' && ( <>

Was moechten Sie tun?

Waehlen Sie eine Option, um fortzufahren

handleSelectAction('korrigieren')} >
✏️
Klausuren korrigieren
Schuelerarbeiten hochladen und mit KI-Unterstuetzung bewerten
handleSelectAction('erstellen')} >
📝
Klausur erstellen
Neue Klausur mit Erwartungshorizont anlegen
{klausuren.length > 0 && (
)} )} {step === 'type' && ( <>

Welche Art von Klausur?

Waehlen Sie den Klausurtyp

handleSelectType('vorabitur')} >
📋
Vorabitur / Klausur
Regulaere Klausuren waehrend des Schuljahres
handleSelectType('abitur')} >
🎓
Abiturklausur
Abiturpruefung mit 15-Punkte-System
)} {step === 'class' && ( <>

Klasse waehlen

Waehlen Sie die Klasse oder legen Sie eine neue Klausur an

{classes.length === 0 ? (
Keine Klassen gefunden. Bitte legen Sie Klassen im Studio Modul an.
) : (
{classes.map(c => (
handleSelectClass(c)} >
{c.name}
{c.student_count} Schueler
))}
)}
)}
) }