'use client' import { useState, useEffect } from 'react' import { UserPreferences, SearchResult, Message, BUNDESLAENDER, SCHULFORMEN, COMMON_QUESTIONS } from './_components/types' import OnboardingWizard from './_components/OnboardingWizard' import ChatInterface from './_components/ChatInterface' import SearchResults from './_components/SearchResults' export default function ZeugnissePage() { const [preferences, setPreferences] = useState({ bundesland: null, schulform: null, hasSeenWizard: false, favorites: [], recentSearches: [], }) const [showWizard, setShowWizard] = useState(true) const [activeTab, setActiveTab] = useState<'chat' | 'search' | 'documents'>('chat') const [searchQuery, setSearchQuery] = useState('') const [searchResults, setSearchResults] = useState([]) const [messages, setMessages] = useState([]) const [isLoading, setIsLoading] = useState(false) useEffect(() => { const saved = localStorage.getItem('zeugnis-preferences') if (saved) { const parsed = JSON.parse(saved); setPreferences(parsed); setShowWizard(!parsed.hasSeenWizard) } }, []) const savePreferences = (newPrefs: Partial) => { const updated = { ...preferences, ...newPrefs } setPreferences(updated) localStorage.setItem('zeugnis-preferences', JSON.stringify(updated)) } const handleWizardComplete = (prefs: Partial) => { savePreferences(prefs); setShowWizard(false) } const handleSendMessage = async (content: string) => { const userMessage: Message = { id: Date.now().toString(), role: 'user', content, timestamp: new Date() } setMessages(prev => [...prev, userMessage]) setIsLoading(true) setTimeout(() => { const assistantMessage: Message = { id: (Date.now() + 1).toString(), role: 'assistant', content: `Basierend auf der Zeugnisverordnung ${preferences.bundesland ? `fuer ${BUNDESLAENDER.find(b => b.code === preferences.bundesland)?.name}` : ''} kann ich Ihnen folgende Auskunft geben:\n\n${content.includes('Bemerkung') ? 'Bemerkungen zum Arbeits- und Sozialverhalten sollten wertschaetzend formuliert werden und konkrete Beobachtungen enthalten. Sie muessen den Vorgaben der jeweiligen Schulordnung entsprechen.' : content.includes('Noten') ? 'Im Zeugnis werden die Noten gemaess der geltenden Notenverordnung eingetragen. Die Notenskala reicht von 1 (sehr gut) bis 6 (ungenuegend).' : 'Ich habe in den Verordnungen relevante Informationen zu Ihrer Frage gefunden. Bitte beachten Sie die verlinkten Quellen fuer weitere Details.'}`, sources: [{ id: '1', title: 'Zeugnisverordnung', bundesland: preferences.bundesland || 'ni', bundesland_name: BUNDESLAENDER.find(b => b.code === (preferences.bundesland || 'ni'))?.name || 'Niedersachsen', doc_type: 'Verordnung', snippet: 'Relevanter Auszug aus der Verordnung...', relevance_score: 0.92, url: '#', last_updated: '2024-01-15' }], timestamp: new Date(), } setMessages(prev => [...prev, assistantMessage]) setIsLoading(false) }, 1500) } const handleSearch = (query: string) => { setSearchQuery(query) if (!query.trim()) { setSearchResults([]); return } setSearchResults([ { id: '1', title: 'Zeugnisverordnung - Bemerkungen', bundesland: preferences.bundesland || 'ni', bundesland_name: BUNDESLAENDER.find(b => b.code === (preferences.bundesland || 'ni'))?.name || 'Niedersachsen', doc_type: 'Verordnung', snippet: 'Die Bemerkungen im Zeugnis sollen das Arbeits- und Sozialverhalten beschreiben...', relevance_score: 0.95, url: '#', last_updated: '2024-01-15' }, { id: '2', title: 'Ergaenzende Bestimmungen fuer Zeugnisse', bundesland: preferences.bundesland || 'ni', bundesland_name: BUNDESLAENDER.find(b => b.code === (preferences.bundesland || 'ni'))?.name || 'Niedersachsen', doc_type: 'Erlass', snippet: 'Fuer die Erstellung von Zeugnissen gelten folgende ergaenzende Bestimmungen...', relevance_score: 0.87, url: '#', last_updated: '2024-02-20' }, ]) savePreferences({ recentSearches: [query, ...preferences.recentSearches.filter(s => s !== query).slice(0, 9)] }) } if (showWizard) return return (
📋

Zeugnis-Assistent

{BUNDESLAENDER.find(b => b.code === preferences.bundesland)?.name || 'Alle Bundeslaender'} {preferences.schulform && ` - ${SCHULFORMEN.find(s => s.id === preferences.schulform)?.name}`}

{([{ id: 'chat' as const, label: 'Assistent', icon: '💬' }, { id: 'search' as const, label: 'Suche', icon: '🔍' }, { id: 'documents' as const, label: 'Dokumente', icon: '📄' }]).map((tab) => ( ))}
{activeTab === 'chat' && } {activeTab === 'search' && (
handleSearch(e.target.value)} placeholder="Suchen Sie in den Verordnungen..." className="w-full px-12 py-4 bg-gray-100 dark:bg-gray-900 border-0 rounded-xl text-lg focus:ring-2 focus:ring-blue-500" />
{!searchQuery && preferences.recentSearches.length > 0 && (

Letzte Suchen

{preferences.recentSearches.map((search, i) => ())}
)} {!searchQuery && (

Haeufige Fragen

{COMMON_QUESTIONS.map((q, i) => ())}
)} {searchQuery && { handleSendMessage(`Erklaere mir: ${result.title}`); setActiveTab('chat') }} />}
)} {activeTab === 'documents' && (
📚

Dokumente-Browser

Durchsuchen Sie alle verfuegbaren Verordnungen und Handreichungen fuer Ihr Bundesland.

)}
) }