From 8cdc7840ef702fc74c1e88d0834b5663fa6705df Mon Sep 17 00:00:00 2001 From: lekss361 Date: Sun, 24 May 2026 17:25:58 +0300 Subject: [PATCH] =?UTF-8?q?fix(tradein/cian):=20rename=20chart=20key=20mon?= =?UTF-8?q?th=5Fdate=E2=86=92date=20+=20null-filter=20+=20typed=20ChartPoi?= =?UTF-8?q?nt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tradein-mvp/backend/app/schemas/trade_in.py | 9 ++++++++- tradein-mvp/backend/app/services/estimator.py | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/tradein-mvp/backend/app/schemas/trade_in.py b/tradein-mvp/backend/app/schemas/trade_in.py index 2bc0993d..ed3d93d8 100644 --- a/tradein-mvp/backend/app/schemas/trade_in.py +++ b/tradein-mvp/backend/app/schemas/trade_in.py @@ -46,6 +46,13 @@ class AnalogLot(BaseModel): distance_m: int | None = None # расстояние до целевой квартиры в метрах +class CianChartPoint(BaseModel): + """Одна точка 7-месячного chart Cian Valuation Calculator.""" + + date: str + price: float + + class CianValuationSummary(BaseModel): """Cian Valuation Calculator данные для UI. @@ -55,7 +62,7 @@ class CianValuationSummary(BaseModel): sale_price_rub: int | None = None rent_price_rub: int | None = None - chart: list[dict[str, Any]] = Field(default_factory=list) + chart: list[CianChartPoint] = Field(default_factory=list) chart_change_pct: float | None = None chart_change_direction: Literal["increase", "decrease", "neutral"] | None = None diff --git a/tradein-mvp/backend/app/services/estimator.py b/tradein-mvp/backend/app/services/estimator.py index e3b74d72..a77b2d4e 100644 --- a/tradein-mvp/backend/app/services/estimator.py +++ b/tradein-mvp/backend/app/services/estimator.py @@ -874,7 +874,14 @@ async def estimate_quality( CianValuationSummary( sale_price_rub=int(cian_val.sale_price_rub) if cian_val.sale_price_rub else None, rent_price_rub=int(cian_val.rent_price_rub) if cian_val.rent_price_rub else None, - chart=list(cian_val.chart or []), + chart=[ + { + "date": p.get("month_date") or p.get("date") or "", + "price": p["price"], + } + for p in (cian_val.chart or []) + if p.get("price") is not None + ], chart_change_pct=cian_val.chart_change_pct, chart_change_direction=( cian_val.chart_change_direction