'use client' import React, { useState } from 'react' import { useRouter } from 'next/navigation' import Link from 'next/link' import { useSDK } from '@/lib/sdk' import { CourseCategory, COURSE_CATEGORY_INFO, CreateCourseRequest, GenerateCourseRequest } from '@/lib/sdk/academy/types' import { createCourse, generateCourse } from '@/lib/sdk/academy/api' type CreationMode = 'manual' | 'ai' export default function NewCoursePage() { const router = useRouter() const [mode, setMode] = useState('ai') const [isLoading, setIsLoading] = useState(false) const [error, setError] = useState(null) // Manual form state const [title, setTitle] = useState('') const [description, setDescription] = useState('') const [category, setCategory] = useState('dsgvo_basics') const [duration, setDuration] = useState(60) const [passingScore, setPassingScore] = useState(70) // AI generation state const [topic, setTopic] = useState('') const [targetGroup, setTargetGroup] = useState('Alle Mitarbeiter') const [useRag, setUseRag] = useState(true) const handleManualCreate = async () => { if (!title.trim()) { setError('Bitte geben Sie einen Kurstitel ein.') return } setIsLoading(true) setError(null) try { const tenantId = typeof window !== 'undefined' ? localStorage.getItem('bp_tenant_id') || 'default-tenant' : 'default-tenant' const result = await createCourse({ tenantId, title: title.trim(), description: description.trim(), category, durationMinutes: duration, passingScore, requiredForRoles: ['all'] } as any) // Navigate to the new course if (result && (result as any).id) { router.push(`/sdk/academy/${(result as any).id}`) } else { router.push('/sdk/academy') } } catch (err: any) { setError(err.message || 'Fehler beim Erstellen des Kurses') } finally { setIsLoading(false) } } const handleAIGenerate = async () => { if (!topic.trim()) { setError('Bitte geben Sie ein Thema fuer den Kurs ein.') return } setIsLoading(true) setError(null) try { const tenantId = typeof window !== 'undefined' ? localStorage.getItem('bp_tenant_id') || 'default-tenant' : 'default-tenant' const result = await generateCourse({ tenantId, topic: topic.trim(), category, targetGroup: targetGroup.trim(), language: 'de', useRag }) if (result && result.course && result.course.id) { router.push(`/sdk/academy/${result.course.id}`) } else { router.push('/sdk/academy') } } catch (err: any) { setError(err.message || 'Fehler bei der KI-Generierung') } finally { setIsLoading(false) } } return (
{/* Header */}

Neuen Kurs erstellen

Erstellen Sie einen Compliance-Schulungskurs manuell oder lassen Sie ihn von der KI generieren.

{/* Mode Toggle */}
{/* Error Message */} {error && (

{error}

)} {/* AI Generation Form */} {mode === 'ai' && (

KI-generierter Kurs

Die KI erstellt automatisch Lektionen, Inhalte und Quizfragen basierend auf dem gewaehlten Thema. Optionaler RAG-Kontext aus relevanten Gesetzestexten wird einbezogen.

{/* Topic */}
setTopic(e.target.value)} placeholder="z.B. DSGVO-Grundlagen fuer neue Mitarbeiter" className="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-purple-500 focus:border-purple-500 text-base" />
{/* Category */}
{Object.entries(COURSE_CATEGORY_INFO).map(([cat, info]) => ( ))}
{/* Target Group */}
setTargetGroup(e.target.value)} placeholder="z.B. Alle Mitarbeiter, IT-Abteilung, Fuehrungskraefte" className="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-purple-500 focus:border-purple-500" />
{/* RAG Toggle */}
RAG-Kontext verwenden

Relevante Gesetzestexte (DSGVO, AI Act, NIS2) einbeziehen

{/* Submit */}
Abbrechen
)} {/* Manual Creation Form */} {mode === 'manual' && (
{/* Title */}
setTitle(e.target.value)} placeholder="z.B. DSGVO-Grundlagen fuer Mitarbeiter" className="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-purple-500 focus:border-purple-500 text-base" />
{/* Description */}