'use client'; import { useState } from 'react'; import { Button } from '@/components/ui/Button'; import { Card } from '@/components/ui/Card'; import { applyOCRToVehicle, type OCRResultResponse } from '@/lib/ocr'; interface OCRDetailProps { result: OCRResultResponse; onApplyComplete?: () => void; } export function OCRDetail({ result, onApplyComplete }: OCRDetailProps) { const [applying, setApplying] = useState(false); const [applyError, setApplyError] = useState(null); const [applySuccess, setApplySuccess] = useState(null); const handleApply = async () => { setApplying(true); setApplyError(null); setApplySuccess(null); try { const response = await applyOCRToVehicle(result.id); setApplySuccess(`Applied ${response.updated_fields.length} fields to vehicle`); if (onApplyComplete) onApplyComplete(); } catch (err: unknown) { const apiErr = err as { error?: { message?: string } }; setApplyError(apiErr?.error?.message || 'Failed to apply OCR data'); } finally { setApplying(false); } }; const data = result.structured_data; const canApply = result.vehicle_id && result.structured_data && result.status === 'completed'; return (
{/* Original Scan Side */}

File: {result.file_name}

Type: {result.mime_type}

Status: {result.status}

{result.confidence_score != null && (

Confidence: {(result.confidence_score * 100).toFixed(1)}%

)} {result.error_message && (

Error: {result.error_message}

)} {result.raw_text && (

Raw Text:

                  {result.raw_text}
                
)}
{/* Extracted Data Side */}
{data ? (
Brand:
{data.brand || '-'}
Model:
{data.model || '-'}
VIN:
{data.vin || '-'}
First Registration:
{data.first_registration || '-'}
Mileage:
{data.mileage != null ? `${data.mileage} km` : '-'}
Power (kW):
{data.power_kw != null ? `${data.power_kw} kW` : '-'}
Fuel Type:
{data.fuel_type || '-'}
) : (

No structured data available yet.

)} {canApply && (
)} {applyError && (
{applyError}
)} {applySuccess && (
{applySuccess}
)}
); }