'use client' import React, { useState, useEffect } from 'react' import { useParams, useRouter } from 'next/navigation' import Link from 'next/link' import { AssessmentResultCard } from '@/components/sdk/use-case-assessment/AssessmentResultCard' interface FullAssessment { id: string title: string tenant_id: string domain: string created_at: string use_case_text?: string intake?: Record result?: { feasibility: string risk_level: string risk_score: number complexity: string dsfa_recommended: boolean art22_risk: boolean training_allowed: string summary: string recommendation: string alternative_approach?: string triggered_rules?: Array<{ rule_code: string title: string severity: string gdpr_ref: string }> required_controls?: Array<{ id: string title: string description: string effort: string }> recommended_architecture?: Array<{ id: string title: string description: string benefit: string }> } } export default function AssessmentDetailPage() { const params = useParams() const router = useRouter() const assessmentId = params.id as string const [assessment, setAssessment] = useState(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) useEffect(() => { async function load() { try { const response = await fetch(`/api/sdk/v1/ucca/assessments/${assessmentId}`) if (!response.ok) { throw new Error('Assessment nicht gefunden') } const data = await response.json() setAssessment(data) } catch (err) { setError(err instanceof Error ? err.message : 'Fehler beim Laden') } finally { setLoading(false) } } if (assessmentId) { // Try the direct endpoint first; if it fails, try the list endpoint and filter load().catch(() => { // Fallback: fetch from list fetch('/api/sdk/v1/ucca/assessments') .then(r => r.json()) .then(data => { const found = (data.assessments || []).find((a: FullAssessment) => a.id === assessmentId) if (found) { setAssessment(found) setError(null) } }) .catch(() => {}) .finally(() => setLoading(false)) }) } }, [assessmentId]) const handleDelete = async () => { if (!confirm('Assessment wirklich loeschen?')) return try { await fetch(`/api/sdk/v1/ucca/assessments/${assessmentId}`, { method: 'DELETE' }) router.push('/sdk/use-cases') } catch { // Ignore delete errors } } if (loading) { return (
Lade Assessment...
) } if (error || !assessment) { return (

Fehler

{error || 'Assessment nicht gefunden'}

Zurueck zur Uebersicht
) } return (
{/* Breadcrumb */}
Use Cases / {assessment.title || assessmentId.slice(0, 8)}
{/* Header */}

{assessment.title || 'Assessment Detail'}

Domain: {assessment.domain} Erstellt: {new Date(assessment.created_at).toLocaleDateString('de-DE')}
Zurueck
{/* Use Case Text */} {assessment.use_case_text && (

Beschreibung des Anwendungsfalls

{assessment.use_case_text}

)} {/* Result */} {assessment.result && ( )} {/* No Result */} {!assessment.result && (

Dieses Assessment hat noch kein Ergebnis.

)}
) }