'use client' import { useState, useEffect } from 'react' export interface DashboardData { compliance_score: number total_regulations: number total_requirements: number total_controls: number controls_by_status: Record controls_by_domain: Record> total_evidence: number evidence_by_status: Record total_risks: number risks_by_level: Record } export interface Regulation { id: string code: string name: string full_name: string regulation_type: string effective_date: string | null description: string requirement_count: number } export interface MappingsData { total: number by_regulation: Record } export interface FindingsData { major_count: number minor_count: number ofi_count: number total: number open_majors: number open_minors: number } export function useComplianceHub() { const [dashboard, setDashboard] = useState(null) const [regulations, setRegulations] = useState([]) const [mappings, setMappings] = useState(null) const [findings, setFindings] = useState(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [seeding, setSeeding] = useState(false) useEffect(() => { loadData() }, []) const loadData = async () => { setLoading(true) setError(null) try { const [dashboardRes, regulationsRes, mappingsRes, findingsRes] = await Promise.all([ fetch('/api/sdk/v1/compliance/dashboard'), fetch('/api/sdk/v1/compliance/regulations'), fetch('/api/sdk/v1/compliance/mappings'), fetch('/api/sdk/v1/isms/findings?status=open'), ]) if (dashboardRes.ok) { setDashboard(await dashboardRes.json()) } if (regulationsRes.ok) { const data = await regulationsRes.json() setRegulations(data.regulations || []) } if (mappingsRes.ok) { const data = await mappingsRes.json() setMappings(data) } if (findingsRes.ok) { const data = await findingsRes.json() setFindings(data) } } catch (err) { console.error('Failed to load compliance data:', err) setError('Verbindung zum Backend fehlgeschlagen') } finally { setLoading(false) } } const seedDatabase = async () => { setSeeding(true) try { const res = await fetch('/api/sdk/v1/compliance/seed', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ force: false }), }) if (res.ok) { const result = await res.json() alert(`Datenbank erfolgreich initialisiert!\n\nRegulations: ${result.counts?.regulations || 0}\nControls: ${result.counts?.controls || 0}\nRequirements: ${result.counts?.requirements || 0}`) loadData() } else { const errorText = await res.text() alert(`Fehler beim Seeding: ${errorText}`) } } catch (err) { console.error('Seeding failed:', err) alert('Fehler beim Initialisieren der Datenbank') } finally { setSeeding(false) } } return { dashboard, regulations, mappings, findings, loading, error, seeding, loadData, seedDatabase } }