'use client' import React, { useState, useEffect } from 'react' import { useParams } from 'next/navigation' import Link from 'next/link' import { ZoneBadge } from '@/components/sdk/compliance-optimizer/ZoneBadge' import { DimensionZoneTable } from '@/components/sdk/compliance-optimizer/DimensionZoneTable' import { ConfigComparison } from '@/components/sdk/compliance-optimizer/ConfigComparison' import { OptimizationScoreCard } from '@/components/sdk/compliance-optimizer/OptimizationScoreCard' export default function OptimizationDetailPage() { const params = useParams() const id = params?.id as string const [data, setData] = useState(null) const [loading, setLoading] = useState(true) const [activeVariant, setActiveVariant] = useState(0) useEffect(() => { if (!id) return fetch(`/api/sdk/v1/maximizer/optimizations/${id}`) .then((r) => r.ok ? r.json() : null) .then(setData) .finally(() => setLoading(false)) }, [id]) if (loading) return
Laden...
if (!data) return
Optimierung nicht gefunden.
const maxSafe = data.max_safe_config const variants = data.variants || [] const zones = data.zone_map || {} const controls = data.original_evaluation?.required_controls || [] const patterns = data.original_evaluation?.required_patterns || [] const triggered = data.original_evaluation?.triggered_rules || [] return (
{/* Header */}
← Zurueck

{data.title || 'Optimierung'}

{new Date(data.created_at).toLocaleString('de-DE')} — v{data.constraint_version}

{data.assessment_id && ( Basierend auf Assessment )}
{/* 3-Zone Summary */}

3-Zonen-Analyse

{/* Optimization Result */} {maxSafe && (

Optimierte Konfiguration

{maxSafe.rationale && (

{maxSafe.rationale}

)}
)} {/* Alternative Variants */} {variants.length > 1 && (

Alternative Varianten ({variants.length})

{variants.map((v: any, i: number) => ( ))}
{variants[activeVariant] && (
Sicherheit: {variants[activeVariant].safety_score} Nutzen: {variants[activeVariant].utility_score} Gesamt: {Math.round(variants[activeVariant].composite_score)}
{variants[activeVariant].rationale && (

{variants[activeVariant].rationale}

)}
)}
)} {/* Required Controls & Patterns */} {(controls.length > 0 || patterns.length > 0) && (

Erforderliche Massnahmen

{controls.length > 0 && (

Controls

    {controls.map((c: string, i: number) => (
  • {c}
  • ))}
)} {patterns.length > 0 && (

Architektur-Patterns

    {patterns.map((p: string, i: number) => (
  • {p}
  • ))}
)}
)} {/* Triggered Rules (Audit Trail) */} {triggered.length > 0 && (

Ausgeloeste Regeln ({triggered.length})

{triggered.map((r: any, i: number) => (
{r.rule_id} {r.title} {r.article_ref}
))}
)}
) }