'use client' import { useState } from 'react' import { PagePurpose } from '@/components/common/PagePurpose' import { PipelineStepper } from '@/components/ocr-pipeline/PipelineStepper' import { StepDeskew } from '@/components/ocr-pipeline/StepDeskew' import { StepDewarp } from '@/components/ocr-pipeline/StepDewarp' import { StepColumnDetection } from '@/components/ocr-pipeline/StepColumnDetection' import { StepWordRecognition } from '@/components/ocr-pipeline/StepWordRecognition' import { StepCoordinates } from '@/components/ocr-pipeline/StepCoordinates' import { StepReconstruction } from '@/components/ocr-pipeline/StepReconstruction' import { StepGroundTruth } from '@/components/ocr-pipeline/StepGroundTruth' import { PIPELINE_STEPS, type PipelineStep } from './types' export default function OcrPipelinePage() { const [currentStep, setCurrentStep] = useState(0) const [sessionId, setSessionId] = useState(null) const [steps, setSteps] = useState( PIPELINE_STEPS.map((s, i) => ({ ...s, status: i === 0 ? 'active' : 'pending', })), ) const handleStepClick = (index: number) => { if (index <= currentStep || steps[index].status === 'completed') { setCurrentStep(index) } } const handleNext = () => { if (currentStep < steps.length - 1) { setSteps((prev) => prev.map((s, i) => { if (i === currentStep) return { ...s, status: 'completed' } if (i === currentStep + 1) return { ...s, status: 'active' } return s }), ) setCurrentStep((prev) => prev + 1) } } const handleDeskewComplete = (sid: string) => { setSessionId(sid) handleNext() } const renderStep = () => { switch (currentStep) { case 0: return case 1: return case 2: return case 3: return case 4: return case 5: return case 6: return default: return null } } return (
{renderStep()}
) }