'use client' import type { StepGroundTruthProps, ImageRegionWithState } from './ground-truth-types' import { useGroundTruthSession } from './useGroundTruthSession' import { ReconstructionPanel } from './ReconstructionPanel' import { ImageRegionsPanel } from './ImageRegionsPanel' import { ValidationPanel } from './ValidationPanel' export function StepGroundTruth({ sessionId, onNext }: StepGroundTruthProps) { const s = useGroundTruthSession(sessionId) const handleUpdateRegion = (index: number, update: Partial) => { s.setImageRegions(prev => prev.map((r, j) => j === index ? { ...r, ...update } : r )) } if (s.status === 'loading') { return (
Session wird geladen...
) } if (s.status === 'error' && !s.session) { return (

{s.error}

) } if (!s.session) return null const aspect = s.session.imageHeight / s.session.imageWidth return (
{/* Header / Controls */}

Validierung — Original vs. Rekonstruktion

{s.zoom}%
{s.error && (
{s.error}
)} {/* Side-by-side panels */}
{/* Left: Original */}
Original
s.handleScroll('left')} >
Original
{/* Right: Reconstruction */} s.handleScroll('right')} onToggleDrawing={() => s.setDrawingRegion(!s.drawingRegion)} onMouseDown={s.handleReconMouseDown} onMouseMove={s.handleReconMouseMove} onMouseUp={s.handleReconMouseUp} />
{/* Image regions editor */} {/* Notes, score, and action bar */}
) }