import React from "react"; import { Box, Paper, Typography, Button, Alert, } from "@mui/material"; import CheckCircleIcon from "@mui/icons-material/CheckCircle"; import { useFetchRequestAmbiguities, useResolveAmbiguity } from "../../features/fetch-requests"; interface AmbiguityResolverProps { fetchRequestId: string; } export function AmbiguityResolver({ fetchRequestId }: AmbiguityResolverProps) { const { data: ambiguities, refetch } = useFetchRequestAmbiguities(fetchRequestId); const resolveMutation = useResolveAmbiguity(); const handleResolve = async (ambiguity: any, candidate: { amount: number; balance: number }) => { await resolveMutation.mutateAsync({ ambiguityId: ambiguity.id, payload: { chosen: { amount: candidate.amount, balance: candidate.balance } }, }); refetch(); }; if (!ambiguities || ambiguities.length === 0) return null; const allResolved = ambiguities.every((a: any) => a.status === "resolved"); return ( Ambiguity Resolution {allResolved ? ( All ambiguities resolved — pipeline will resume on next poll cycle ) : ( Pipeline paused — resolve ambiguities to continue )} {ambiguities.map((ambiguity: any) => { const isResolved = ambiguity.status === "resolved"; return ( {ambiguity.line} OCR Amount ₹{ambiguity.ocr_amount} OCR Balance ₹{ambiguity.ocr_balance} Previous Balance ₹{ambiguity.prev_balance} {isResolved ? ( }> Resolved: ₹{ambiguity.chosen?.amount} / ₹{ambiguity.chosen?.balance} ) : ( {ambiguity.candidates.map((candidate: any, ci: number) => { const isCredit = candidate.amount > 0; const isDebit = candidate.amount < 0; const cColor = isCredit ? "success.main" : isDebit ? "error.main" : undefined; return ( ); })} )} ); })} ); }