Рекомендованная цена в объявлении
@@ -466,6 +469,8 @@ export function HeroSummary({ estimate, input, onResubmit, isResubmitting = fals
);
})()}
+ >
+ )}
{/* ── Источники данных (#648 IA, task #5) — какие источники участвовали ── */}
diff --git a/tradein-mvp/frontend/src/components/trade-in/ListingsCard.tsx b/tradein-mvp/frontend/src/components/trade-in/ListingsCard.tsx
index 8820700e..eb9d00d5 100644
--- a/tradein-mvp/frontend/src/components/trade-in/ListingsCard.tsx
+++ b/tradein-mvp/frontend/src/components/trade-in/ListingsCard.tsx
@@ -136,10 +136,18 @@ export function ListingsCard({ estimate, estimateId }: Props) {
Медиана
- {(m / 1_000_000).toFixed(2)}
- млн ₽
+ {m > 0 ? (
+ <>
+ {(m / 1_000_000).toFixed(2)}
+ млн ₽
+ >
+ ) : (
+ —
+ )}
+
+
+ {m > 0 ? `${estimate.median_price_per_m2.toLocaleString("ru-RU")} ₽/м²` : "нет данных"}
-
{estimate.median_price_per_m2.toLocaleString("ru-RU")} ₽/м²
Диапазон P25–P75
@@ -201,7 +209,8 @@ export function ListingsCard({ estimate, estimateId }: Props) {
className="bar-title"
style={{ color: "var(--fg-2)", fontSize: 12, letterSpacing: "0.04em" }}
>
- ДИАПАЗОН ЦЕН В ОБЪЯВЛЕНИЯХ · {(m / 1_000_000).toFixed(2)} МЛН ₽ медиана
+ ДИАПАЗОН ЦЕН В ОБЪЯВЛЕНИЯХ
+ {m > 0 ? ` · ${(m / 1_000_000).toFixed(2)} МЛН ₽ медиана` : ""}
diff --git a/tradein-mvp/frontend/src/components/trade-in/OfferCard.tsx b/tradein-mvp/frontend/src/components/trade-in/OfferCard.tsx
index 8dca2ac3..743bafb2 100644
--- a/tradein-mvp/frontend/src/components/trade-in/OfferCard.tsx
+++ b/tradein-mvp/frontend/src/components/trade-in/OfferCard.tsx
@@ -84,7 +84,10 @@ export function OfferCard({ estimate, brandSlug }: Props) {
- Оценка по рынку: {formatMln(estimate.median_price_rub)} ₽
+ Оценка по рынку:{" "}
+
+ {estimate.insufficient_data ? "—" : `${formatMln(estimate.median_price_rub)} ₽`}
+
медиана цен в объявлениях аналогов
diff --git a/tradein-mvp/frontend/src/components/trade-in/SourcesProgress.tsx b/tradein-mvp/frontend/src/components/trade-in/SourcesProgress.tsx
index 49bc6e91..65f34492 100644
--- a/tradein-mvp/frontend/src/components/trade-in/SourcesProgress.tsx
+++ b/tradein-mvp/frontend/src/components/trade-in/SourcesProgress.tsx
@@ -118,7 +118,7 @@ export function SourcesProgress({ estimate, isPending }: Props) {
медиана:{" "}
- {formatMln(estimate.median_price_rub)} ₽
+ {estimate.insufficient_data ? "—" : `${formatMln(estimate.median_price_rub)} ₽`}
)}
diff --git a/tradein-mvp/frontend/src/components/trade-in/WhatIfPanel.tsx b/tradein-mvp/frontend/src/components/trade-in/WhatIfPanel.tsx
index d6e9c9b2..69a9d480 100644
--- a/tradein-mvp/frontend/src/components/trade-in/WhatIfPanel.tsx
+++ b/tradein-mvp/frontend/src/components/trade-in/WhatIfPanel.tsx
@@ -328,7 +328,7 @@ export function WhatIfPanel({ baseEstimate, baseInput }: Props) {
>
) : (
- исходная оценка {formatMln(basePrice)} ₽
+ {basePrice > 0 ? `исходная оценка ${formatMln(basePrice)} ₽` : "исходная оценка —"}
)}