"use client"; import { useMemo } from "react"; import { LineChart, Line, XAxis, YAxis, Tooltip, Legend, ResponsiveContainer, CartesianGrid, } from "recharts"; import type { PriceHistoryYearPoint } from "@/types/trade-in"; type Props = { points: PriceHistoryYearPoint[] }; const fmtK = (n: number) => `${Math.round(n / 1000)}k`; interface PivotRow { year: number; avito_imv?: number; yandex_valuation?: number; n_avito?: number; n_yandex?: number; } export function PriceHistoryChart({ points }: Props) { const pivoted = useMemo(() => { const byYear: Record = {}; for (const p of points) { if (!byYear[p.year]) byYear[p.year] = { year: p.year }; if (p.source === "avito_imv") { byYear[p.year].avito_imv = p.median_price_per_m2; byYear[p.year].n_avito = p.n_lots; } else if (p.source === "yandex_valuation") { byYear[p.year].yandex_valuation = p.median_price_per_m2; byYear[p.year].n_yandex = p.n_lots; } } return Object.values(byYear).sort((a, b) => a.year - b.year); }, [points]); const totalLots = points.reduce((s, p) => s + p.n_lots, 0); return (

История цен в этом доме

Медиана ₽/м² по годам · только этот дом · Avito + Яндекс ({totalLots} лотов)
{/* #835: декоративный чарт — aria-hidden (данные в тексте/легенде карточки). */}
); }