diff --git a/backend/app/schemas/recommend.py b/backend/app/schemas/recommend.py index 62e6ba82..962ea09c 100644 --- a/backend/app/schemas/recommend.py +++ b/backend/app/schemas/recommend.py @@ -45,6 +45,18 @@ class RecommendBucket(BaseModel): # what-if recompute. velocity_per_month: float | None = None months_to_sellout: float | None = None + # Per-bucket эластичность спроса по цене (#1204) — recommend_mix считает её + # отдельно на каждую квартирографию (см. analytics_queries.py:2592-2606), фронт + # скейлит velocity_per_month как `velocity * price_factor^elasticity` при движении + # слайдера цены (RecommendVelocityPanel.tsx:68). Без этих полей в схеме + # response_model молча их отбрасывал → фронт всегда падал на глобальную + # эластичность, расходясь с серверным months_to_sellout и UI-таблицей сегментов. + elasticity: float | None = None + elasticity_r2: float | None = None + elasticity_n: int | None = None + elasticity_source: str | None = None + # Источник базового темпа продаж (analytics_queries → 'hedonic'|'deals'|'fallback'). + velocity_source: str | None = None # Success-driven mix flag (issue #25): bucket has top success_score in district is_top_success: bool = False