'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import { StepHeader, STEP_EXPLANATIONS } from '@/components/sdk/StepHeader' import { useControlsData } from './_hooks/useControlsData' import { useRAGSuggestions } from './_hooks/useRAGSuggestions' import { ControlCard } from './_components/ControlCard' import { AddControlForm } from './_components/AddControlForm' import { LoadingSkeleton } from './_components/LoadingSkeleton' import { TransitionErrorBanner } from './_components/TransitionErrorBanner' import { StatsCards } from './_components/StatsCards' import { FilterBar } from './_components/FilterBar' import { RAGPanel } from './_components/RAGPanel' export default function ControlsPage() { const router = useRouter() const [filter, setFilter] = useState('all') const [showAddForm, setShowAddForm] = useState(false) const { state, loading, error, setError, displayControls, transitionError, setTransitionError, handleStatusChange, handleEffectivenessChange, handleAddControl, addSuggestedControl, } = useControlsData() const { ragLoading, ragSuggestions, showRagPanel, setShowRagPanel, selectedRequirementId, setSelectedRequirementId, suggestControlsFromRAG, removeSuggestion, } = useRAGSuggestions(setError) const filteredControls = filter === 'all' ? displayControls : displayControls.filter(c => c.displayStatus === filter || c.displayType === filter || c.displayCategory === filter ) const implementedCount = displayControls.filter(c => c.displayStatus === 'implemented').length const avgEffectiveness = displayControls.length > 0 ? Math.round(displayControls.reduce((sum, c) => sum + c.effectivenessPercent, 0) / displayControls.length) : 0 const partialCount = displayControls.filter(c => c.displayStatus === 'partial').length const stepInfo = STEP_EXPLANATIONS['controls'] return (
{showAddForm && ( { handleAddControl(data); setShowAddForm(false) }} onCancel={() => setShowAddForm(false)} /> )} {showRagPanel && ( { addSuggestedControl(s); removeSuggestion(s.control_id) }} onClose={() => setShowRagPanel(false)} /> )} {error && (
{error}
)} {transitionError && ( setTransitionError(null)} /> )} {state.requirements.length === 0 && !loading && (

Keine Anforderungen definiert

Bitte definieren Sie zuerst Anforderungen, um die zugehoerigen Kontrollen zu laden.

)} {loading && } {!loading && (
{filteredControls.map(control => ( handleStatusChange(control.id, status)} onEffectivenessChange={(effectiveness) => handleEffectivenessChange(control.id, effectiveness)} onLinkEvidence={() => router.push(`/sdk/evidence?control_id=${control.id}`)} /> ))}
)} {!loading && filteredControls.length === 0 && state.requirements.length > 0 && (

Keine Kontrollen gefunden

Passen Sie den Filter an oder fuegen Sie neue Kontrollen hinzu.

)}
) }