'use client' import React from 'react' import { useParams } from 'next/navigation' import { useMonitoring } from './_hooks/useMonitoring' import { EventForm } from './_components/EventForm' import { ResolveModal } from './_components/ResolveModal' import { TimelineEvent } from './_components/TimelineEvent' export default function MonitoringPage() { const params = useParams() const projectId = params.projectId as string const { events, loading, showForm, resolvingEvent, filterType, filterStatus, filteredEvents, openCount, resolvedCount, setShowForm, setResolvingEvent, setFilterType, setFilterStatus, handleSubmit, handleResolve, } = useMonitoring(projectId) if (loading) { return (
) } return (
{/* Header */}

Monitoring

Post-Market Surveillance -- Ueberwachung von Vorfaellen, Updates, Drift und Regulierungsaenderungen.

{/* Stats */} {events.length > 0 && (
{events.length}
Gesamt
{openCount}
Offen
{resolvedCount}
Geloest
{events.filter((e) => e.severity === 'critical' || e.severity === 'high').length}
Hoch/Kritisch
)} {/* Filters */} {events.length > 0 && (
{filteredEvents.length} Ereignisse
)} {/* Form */} {showForm && ( setShowForm(false)} /> )} {/* Resolve Modal */} {resolvingEvent && ( setResolvingEvent(null)} /> )} {/* Timeline */} {filteredEvents.length > 0 ? (
{filteredEvents .sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime()) .map((event) => ( setResolvingEvent(event)} /> ))}
) : ( !showForm && (

Keine Monitoring-Ereignisse

Erfassen Sie Vorfaelle, Software-Updates, KI-Drift-Warnungen und Regulierungsaenderungen im Rahmen der Post-Market Surveillance.

) )}
) }