fix(tradein/cian): rename chart key month_date→date + null-filter + typed ChartPoint

This commit is contained in:
lekss361 2026-05-24 17:25:58 +03:00
parent e73f9479ef
commit 8cdc7840ef
2 changed files with 16 additions and 2 deletions

View file

@ -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

View file

@ -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