feat(tradein/cian): surface valuation chart + rent + change-pct on /trade-in #530

Merged
lekss361 merged 5 commits from feat/cian-valuation-surface into main 2026-05-24 14:32:54 +00:00
2 changed files with 16 additions and 2 deletions
Showing only changes of commit 8cdc7840ef - Show all commits

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