import { Link, useParams } from 'react-router-dom'; import { useQuery } from '@tanstack/react-query'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { DiagnosisStatusBadge } from '@/components/diagnosis-status-badge'; import { RiskBadge } from '@/components/risk-badge'; import { apiClient } from '@/lib/api-client'; export function DiagnosisDetailPage() { const { id } = useParams(); const query = useQuery({ queryKey: ['diagnosis', id], queryFn: () => apiClient.getDiagnosis(id!), enabled: Boolean(id), }); if (query.isLoading) return
Memuat diagnosis...
; if (query.error || !query.data) return
Diagnosis tidak ditemukan
; const diagnosis = query.data; return (

Detail Diagnosis

{diagnosis.disease?.commonName ?? 'Diagnosis gagal'}

Daun jagung
Hasil AI
{diagnosis.confidence === null ? 'Model gagal memproses gambar.' : `Confidence ${(diagnosis.confidence * 100).toFixed(1)}%`}
{diagnosis.status === 'needs_review' && (
Hasil ini masih sementara karena confidence di bawah 70% dan sedang menunggu review pakar.
)} {diagnosis.failureReason &&

{diagnosis.failureReason}

} {diagnosis.disease && (

{diagnosis.disease.label}

{diagnosis.disease.summary}

Rekomendasi

    {diagnosis.disease.recommendations.map((item) =>
  • {item}
  • )}
)}
Top Predictions {diagnosis.predictions.map((prediction) => (
{prediction.rank}. {prediction.modelLabel} {(prediction.confidence * 100).toFixed(1)}%
))}
{diagnosis.latestReview && ( Catatan Pakar {diagnosis.latestReview.expert.name}

{diagnosis.latestReview.notes}

)}
); }