'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.
setShowForm(true)}
className="flex items-center gap-2 px-4 py-2 bg-purple-600 text-white rounded-lg hover:bg-purple-700 transition-colors"
>
Ereignis erfassen
{/* Stats */}
{events.length > 0 && (
{events.filter((e) => e.severity === 'critical' || e.severity === 'high').length}
Hoch/Kritisch
)}
{/* Filters */}
{events.length > 0 && (
setFilterType(e.target.value)}
className="px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-purple-500 dark:bg-gray-700 dark:border-gray-600 dark:text-white"
>
Alle Typen
Vorfaelle
Updates
Drift-Warnungen
Regulierungsaenderungen
setFilterStatus(e.target.value)}
className="px-3 py-2 border border-gray-300 rounded-lg text-sm focus:ring-2 focus:ring-purple-500 dark:bg-gray-700 dark:border-gray-600 dark:text-white"
>
Alle Status
Offen
In Untersuchung
Geloest
Geschlossen
{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.
setShowForm(true)}
className="mt-6 px-6 py-3 bg-purple-600 text-white rounded-lg hover:bg-purple-700 transition-colors"
>
Erstes Ereignis erfassen
)
)}
)
}