// File: components/ai/ai-suggestion-field.tsx // Component แสดง AI Suggestion พร้อม Accept / Reject / Edit actions (ADR-018, ADR-020) import { useState } from 'react'; import { Check, X, Edit2, Sparkles } from 'lucide-react'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { cn } from '@/lib/utils'; // สีตาม confidence score (>= 0.95 สีเขียว, >= 0.85 สีเหลือง, < 0.85 สีแดง) const getConfidenceClass = (confidence: number): string => { if (confidence >= 0.95) return 'text-green-700 bg-green-50 border-green-400'; if (confidence >= 0.85) return 'text-yellow-700 bg-yellow-50 border-yellow-400'; return 'text-red-700 bg-red-50 border-red-400'; }; export interface AiSuggestionFieldProps { label: string; value: string; suggestion?: string; confidence?: number; onAccept: () => void; onReject: () => void; onEdit: (newValue: string) => void; className?: string; } export function AiSuggestionField({ label, value, suggestion, confidence, onAccept, onReject, onEdit, className, }: AiSuggestionFieldProps) { const [isEditing, setIsEditing] = useState(false); const [editValue, setEditValue] = useState(value); // มีค่าจาก AI หรือไม่ const hasSuggestion = suggestion !== undefined && suggestion !== ''; // ค่าปัจจุบันตรงกับที่ AI แนะนำ const isAiValue = hasSuggestion && value === suggestion; const handleSave = () => { onEdit(editValue); setIsEditing(false); }; const handleStartEdit = () => { setEditValue(value); setIsEditing(true); }; return (
AI แนะนำ:{' '}
)}