import React, { useState, useEffect } from 'react'; import { CheckCircle, XCircle } from 'lucide-react'; import { Card, Badge } from './common/Card'; import { matchApi } from '../services/api'; import type { MatchResult, ReviewAction } from '../types'; interface ReviewViewProps { onReviewComplete: () => void; } export const ReviewView: React.FC = ({ onReviewComplete }) => { const [reviews, setReviews] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { loadReviews(); }, []); const loadReviews = async () => { try { const results = await matchApi.getResults(); setReviews(results.filter(r => r.status === 'pending')); } catch (error) { console.error('Error loading reviews:', error); } finally { setLoading(false); } }; const handleReviewAction = async (id: number, action: ReviewAction) => { try { await matchApi.review(id, action); setReviews(prev => prev.filter(r => r.id !== id)); if (reviews.length === 1) { onReviewComplete(); } } catch (error) { console.error('Error submitting review:', error); } }; if (loading) { return (
); } return (

模糊比對審核工作台 待審核: {reviews.length}

系統發現以下案件名稱相似,請人工確認關聯性。

{reviews.length === 0 ? (

所有案件已審核完畢!

您的資料比對已完成,請查看分析儀表板。

) : (
{reviews.map(item => (
{/* Left: DIT */}
DIT (設計導入) OP NO: {item.dit?.op_id}
{item.dit?.op_name && (
{item.dit.op_name}
)}
Customer Name
{item.dit?.customer}
Part Number
{item.dit?.pn}
{/* Middle: Score & Reason */}
{item.score}%
相似度
{item.reason}
{/* Right: Target (Sample/Order) */}
{item.target_type === 'ORDER' ? 'Order (訂單)' : 'Sample (樣品)'} 來源單號: {(item.target as { order_no?: string })?.order_no || 'N/A'}
Customer Name
{(item.target as { customer?: string })?.customer}
Part Number
{(item.target as { pn?: string })?.pn}
{/* Actions */}
))}
)}
); };