'use client'; import { useState } from 'react'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { useValuationPredictForListing } from '@/lib/hooks/use-valuation'; interface AiEstimateButtonProps { listingId: string; } function formatPrice(num: number): string { if (num >= 1_000_000_000) return `${(num / 1_000_000_000).toFixed(2)} ty`; if (num >= 1_000_000) return `${(num / 1_000_000).toFixed(0)} trieu`; return num.toLocaleString('vi-VN'); } export function AiEstimateButton({ listingId }: AiEstimateButtonProps) { const [showResult, setShowResult] = useState(false); const mutation = useValuationPredictForListing(); const handleClick = () => { mutation.mutate(listingId, { onSuccess: () => setShowResult(true), }); }; if (showResult && mutation.data) { const result = mutation.data; const confidencePct = Math.round(result.confidence * 100); return ( Gia uoc tinh AI {formatPrice(result.estimatedPriceVND)} VND Do tin cay {confidencePct}% Khoang gia {formatPrice(result.priceRangeLow)} - {formatPrice(result.priceRangeHigh)} ); } return ( {mutation.isPending ? 'Đang định giá...' : 'Định giá AI'} ); }