import { useQuery } from '@tanstack/react-query'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { ResponsiveContainer, ScatterChart, Scatter, XAxis, YAxis, Tooltip, ZAxis, LineChart, Line } from 'recharts'; import config from '../../config'; interface PriceData { pricePoints: { price: number; salesVolume: number; revenue: number; category: string; }[]; elasticity: { date: string; price: number; demand: number; }[]; recommendations: { product: string; currentPrice: number; recommendedPrice: number; potentialRevenue: number; confidence: number; }[]; } export function PriceAnalysis() { const { data, isLoading } = useQuery({ queryKey: ['price-analysis'], queryFn: async () => { const response = await fetch(`${config.apiUrl}/analytics/pricing`); if (!response.ok) { throw new Error('Failed to fetch price analysis'); } const rawData = await response.json(); return { pricePoints: rawData.pricePoints.map((item: any) => ({ ...item, price: Number(item.price) || 0, salesVolume: Number(item.salesVolume) || 0, revenue: Number(item.revenue) || 0 })), elasticity: rawData.elasticity.map((item: any) => ({ ...item, price: Number(item.price) || 0, demand: Number(item.demand) || 0 })), recommendations: rawData.recommendations.map((item: any) => ({ ...item, currentPrice: Number(item.currentPrice) || 0, recommendedPrice: Number(item.recommendedPrice) || 0, potentialRevenue: Number(item.potentialRevenue) || 0, confidence: Number(item.confidence) || 0 })) }; }, }); if (isLoading || !data) { return
Loading price analysis...
; } return (
Price Point Analysis `$${value}`} /> { if (name === 'Price') return [`$${value}`, name]; if (name === 'Sales Volume') return [value.toLocaleString(), name]; if (name === 'Revenue') return [`$${value.toLocaleString()}`, name]; return [value, name]; }} /> Price Elasticity new Date(value).toLocaleDateString()} /> `$${value}`} /> new Date(label).toLocaleDateString()} formatter={(value: number, name: string) => { if (name === 'Price') return [`$${value}`, name]; return [value.toLocaleString(), name]; }} />
Price Optimization Recommendations
{data.recommendations.map((item) => (

{item.product}

Current Price: ${item.currentPrice.toFixed(2)}

Recommended: ${item.recommendedPrice.toFixed(2)}

Potential Revenue: ${item.potentialRevenue.toLocaleString()}

Confidence: {item.confidence}%

))}
); }