'use client' /** * Audit Checklist Page - Sprint 3 Feature * * Ermoeglicht Auditoren: * - Audit-Sessions zu erstellen und zu verwalten * - Checklisten-Items durchzuarbeiten * - Sign-offs mit digitaler Signatur (SHA-256) zu erstellen * - Fortschritt und Statistiken zu verfolgen */ import Link from 'next/link' import AdminLayout from '@/components/admin/AdminLayout' import { RESULT_STATUS, SESSION_STATUS } from './_components/types' import { useAuditChecklist } from './_components/useAuditChecklist' import SessionCard from './_components/SessionCard' import AuditProgressBar from './_components/AuditProgressBar' import ChecklistItemRow from './_components/ChecklistItemRow' import CreateSessionModal from './_components/CreateSessionModal' import SignOffModal from './_components/SignOffModal' export default function AuditChecklistPage() { const { sessions, selectedSession, setSelectedSession, filteredItems, statistics, regulations, loading, loadingChecklist, error, filterStatus, setFilterStatus, filterRegulation, setFilterRegulation, searchQuery, setSearchQuery, showCreateModal, setShowCreateModal, showSignOffModal, setShowSignOffModal, selectedItem, setSelectedItem, lang, handleSignOff, handleCreateSession, } = useAuditChecklist() // Session list view when no session is selected if (!selectedSession && !loading) { return ( Zurueck zu Compliance setShowCreateModal(true)} className="px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 flex items-center gap-2" > Neue Audit-Session {error && ( {error} )} {sessions.length === 0 ? ( Keine Audit-Sessions Erstellen Sie eine neue Audit-Session um zu beginnen. setShowCreateModal(true)} className="px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700" > Erste Session erstellen ) : ( sessions.map(session => ( setSelectedSession(session)} /> )) )} {showCreateModal && ( setShowCreateModal(false)} onCreate={handleCreateSession} /> )} ) } if (loading) { return ( ) } // Checklist view for selected session return ( setSelectedSession(null)} className="text-sm text-slate-600 hover:text-slate-900 flex items-center gap-1" > Zurueck zur Uebersicht {SESSION_STATUS[selectedSession?.status || 'draft'].label} {/* Export PDF */}} > Export PDF {statistics && } {/* Filters */} Suche setSearchQuery(e.target.value)} placeholder="Artikel, Titel..." className="w-full px-3 py-2 border border-slate-300 rounded-lg text-sm" /> Verordnung setFilterRegulation(e.target.value)} className="px-3 py-2 border border-slate-300 rounded-lg text-sm" > Alle {regulations.map(reg => ( {reg.code} ))} Status setFilterStatus(e.target.value)} className="px-3 py-2 border border-slate-300 rounded-lg text-sm" > Alle {Object.entries(RESULT_STATUS).map(([key, { label }]) => ( {label} ))} {/* Checklist Items */} {loadingChecklist ? ( Checkliste wird geladen... ) : filteredItems.length === 0 ? ( Keine Eintraege gefunden ) : ( {filteredItems.map((item, index) => ( { setSelectedItem(item) setShowSignOffModal(true) }} lang={lang} /> ))} )} {showSignOffModal && selectedItem && ( { setShowSignOffModal(false) setSelectedItem(null) }} onSubmit={(result, notes, sign) => handleSignOff(selectedItem, result, notes, sign)} /> )} ) }
Erstellen Sie eine neue Audit-Session um zu beginnen.
Checkliste wird geladen...
Keine Eintraege gefunden