diff --git a/tradein-mvp/backend/app/api/v1/trade_in.py b/tradein-mvp/backend/app/api/v1/trade_in.py index d49fec6a..cb358668 100644 --- a/tradein-mvp/backend/app/api/v1/trade_in.py +++ b/tradein-mvp/backend/app/api/v1/trade_in.py @@ -1581,6 +1581,7 @@ def get_sales_vs_listings( deals_with_listings=0, linkage_rate_pct=0.0, median_discount_pct=None, + data_quality="no_data", # #721 ADR v3: нет сделок / улица не извлеклась pairs=[], ) @@ -1686,5 +1687,7 @@ def get_sales_vs_listings( deals_with_listings=deals_with_listings, linkage_rate_pct=linkage_rate_pct, median_discount_pct=median_discount, + # #721 ADR v3: total_deals>0 здесь (guard `if not rows` выше → _empty). + data_quality="house_linked" if deals_with_listings > 0 else "street_only", pairs=pairs, ) diff --git a/tradein-mvp/backend/app/schemas/trade_in.py b/tradein-mvp/backend/app/schemas/trade_in.py index c897c1f7..3cc7d214 100644 --- a/tradein-mvp/backend/app/schemas/trade_in.py +++ b/tradein-mvp/backend/app/schemas/trade_in.py @@ -457,6 +457,7 @@ class SalesVsListingsResponse(BaseModel): deals_with_listings: int # сколько имеют связанный listing linkage_rate_pct: float # deals_with_listings / total_deals * 100 median_discount_pct: float | None # медиана по парам с listing + data_quality: str # "house_linked" | "street_only" | "no_data" (#721, ADR v3) pairs: list[SalesListingPair] # все пары, sorted by deal_date DESC