'use client' import React, { useState } from 'react' import { useSDK } from '@/lib/sdk' // ============================================================================= // TYPES // ============================================================================= interface ChatMessage { id: string role: 'user' | 'assistant' content: string sources?: Source[] timestamp: Date } interface Source { title: string reference: string relevance: number } // ============================================================================= // MOCK DATA // ============================================================================= const mockHistory: ChatMessage[] = [ { id: 'msg-1', role: 'user', content: 'Wann ist eine Datenschutz-Folgenabschaetzung nach DSGVO erforderlich?', timestamp: new Date('2024-01-22T10:30:00'), }, { id: 'msg-2', role: 'assistant', content: `Nach Art. 35 DSGVO ist eine Datenschutz-Folgenabschaetzung (DSFA) erforderlich, wenn eine Verarbeitung voraussichtlich ein hohes Risiko fuer die Rechte und Freiheiten natuerlicher Personen zur Folge hat. Dies ist insbesondere der Fall bei: 1. **Systematischer und umfassender Bewertung** persoenlicher Aspekte natuerlicher Personen, einschliesslich Profiling, auf deren Grundlage Entscheidungen getroffen werden 2. **Umfangreicher Verarbeitung besonderer Kategorien** personenbezogener Daten (Art. 9) oder von Daten ueber strafrechtliche Verurteilungen (Art. 10) 3. **Systematischer umfangreicher Ueberwachung** oeffentlich zugaenglicher Bereiche Die Aufsichtsbehoerden haben zudem sogenannte "Blacklists" veroeffentlicht, die weitere Verarbeitungstaetigkeiten benennen, fuer die eine DSFA durchzufuehren ist.`, sources: [ { title: 'Art. 35 DSGVO', reference: 'DSGVO Art. 35 Abs. 1, 3', relevance: 0.95 }, { title: 'Erwaegungsgrund 91', reference: 'DSGVO EG 91', relevance: 0.85 }, { title: 'DSFA-Blacklist DSK', reference: 'DSK Beschluss 2018', relevance: 0.75 }, ], timestamp: new Date('2024-01-22T10:30:05'), }, ] const suggestedQuestions = [ 'Was sind die Rechte der Betroffenen nach DSGVO?', 'Wie lange betraegt die Meldefrist bei einer Datenpanne?', 'Welche Anforderungen stellt der AI Act an Hochrisiko-KI?', 'Wann brauche ich einen Auftragsverarbeitungsvertrag?', 'Was muss in einer Datenschutzerklaerung stehen?', ] // ============================================================================= // COMPONENTS // ============================================================================= function MessageBubble({ message }: { message: ChatMessage }) { const isUser = message.role === 'user' return (
{message.content}
{message.sources && message.sources.length > 0 && (

Quellen:

{message.sources.map((source, i) => ( {source.title} ))}
)}

{message.timestamp.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' })}

) } // ============================================================================= // MAIN PAGE // ============================================================================= export default function RAGPage() { const { state } = useSDK() const [messages, setMessages] = useState(mockHistory) const [inputValue, setInputValue] = useState('') const [isLoading, setIsLoading] = useState(false) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!inputValue.trim() || isLoading) return const userMessage: ChatMessage = { id: `msg-${Date.now()}`, role: 'user', content: inputValue, timestamp: new Date(), } setMessages(prev => [...prev, userMessage]) setInputValue('') setIsLoading(true) // Simulate AI response setTimeout(() => { const assistantMessage: ChatMessage = { id: `msg-${Date.now() + 1}`, role: 'assistant', content: 'Dies ist eine Platzhalter-Antwort. In der produktiven Version wird hier die Antwort des Legal RAG Systems angezeigt, das Ihre Frage auf Basis der integrierten Rechtsdokumente beantwortet.', sources: [ { title: 'DSGVO', reference: 'Art. 5', relevance: 0.9 }, { title: 'AI Act', reference: 'Art. 6', relevance: 0.8 }, ], timestamp: new Date(), } setMessages(prev => [...prev, assistantMessage]) setIsLoading(false) }, 1500) } const handleSuggestedQuestion = (question: string) => { setInputValue(question) } return (
{/* Header */}

Legal RAG

Stellen Sie rechtliche Fragen zu DSGVO, AI Act und anderen Regelwerken

{/* Info Box */}

KI-gestuetzte Rechtsauskunft

Das System durchsucht DSGVO, AI Act, BDSG und weitere Regelwerke, um Ihre Fragen zu beantworten. Die Antworten ersetzen keine Rechtsberatung.

{/* Chat Area */}
{messages.length === 0 ? (

Stellen Sie eine Frage

Fragen Sie zu DSGVO, AI Act, Datenschutz oder Compliance-Themen.

) : ( messages.map(message => ( )) )} {isLoading && (
)}
{/* Suggested Questions */} {messages.length === 0 && (

Vorgeschlagene Fragen:

{suggestedQuestions.map((question, i) => ( ))}
)} {/* Input Area */}