'use client' import React, { useState } from 'react' import { SecurityItemCard } from './_components/SecurityItemCard' import { ItemModal } from './_components/ItemModal' import { useSecurityBacklog, EMPTY_NEW_ITEM } from './_hooks/useSecurityBacklog' import type { SecurityItem } from './_hooks/useSecurityBacklog' export default function SecurityBacklogPage() { const [filter, setFilter] = useState('all') const [showModal, setShowModal] = useState(false) const [editItem, setEditItem] = useState(null) const { items, stats, loading, handleCreate, handleUpdate, handleDelete, handleStatusChange, } = useSecurityBacklog() const filteredItems = filter === 'all' ? items : items.filter(i => i.severity === filter || i.status === filter || i.type === filter) async function onSave(form: Parameters[0]) { if (editItem) { const ok = await handleUpdate(editItem.id, form) if (ok) setEditItem(null) } else { const ok = await handleCreate(form) if (ok) setShowModal(false) } } return (
{/* Header */}

Security Backlog

Verwalten Sie Sicherheitsbefunde und verfolgen Sie deren Behebung

{/* Stats */}
Offen
{stats.open}
Kritisch
{stats.critical}
Hoch
{stats.high}
Ueberfaellig
{stats.overdue}
{/* Critical Alert */} {stats.critical > 0 && (

{stats.critical} kritische Schwachstelle(n) erfordern sofortige Aufmerksamkeit

Diese Befunde haben ein CVSS von 9.0 oder hoeher und sollten priorisiert werden.

)} {/* Filter */}
Filter: {['all', 'open', 'in-progress', 'critical', 'high', 'vulnerability', 'misconfiguration'].map(f => ( ))}
{/* Items List */} {loading ? (
Lade Sicherheitsbefunde...
) : (
{filteredItems .sort((a, b) => { const sOrder = { critical: 0, high: 1, medium: 2, low: 3 } const stOrder = { open: 0, 'in-progress': 1, 'accepted-risk': 2, resolved: 3 } const sd = sOrder[a.severity] - sOrder[b.severity] if (sd !== 0) return sd return stOrder[a.status] - stOrder[b.status] }) .map(item => ( { setEditItem(i); setShowModal(true) }} onDelete={handleDelete} onStatusChange={handleStatusChange} /> ))} {filteredItems.length === 0 && (

Keine Befunde gefunden

Passen Sie den Filter an oder erfassen Sie einen neuen Befund.

)}
)} {/* Create/Edit Modal */} {showModal && ( { setShowModal(false); setEditItem(null) }} onSave={onSave} /> )}
) }