gendesign/tradein-mvp/backend/app
bot-backend 1917b6dbf7 feat(tradein): add data_quality flag to /sales-vs-listings (#721)
ADR variant 3 (human-decided): house-level ДКП↔listing join is physically
impossible (deals carry only a street centroid). Instead of null-silence at
linkage=0, expose an honest enum so the frontend can tell 'no house linkage'
(street_only) from 'no data' (no_data) from 'linked' (house_linked).

- SalesVsListingsResponse: new required field data_quality.
- _empty() → 'no_data'; main return → 'house_linked' if deals_with_listings>0
  else 'street_only' (main return guarded by 'if not rows' → total_deals>0).

Does not touch SQL linkage / cadastre / geo ingest (out of scope per ADR).

Refs #721
2026-05-30 16:18:01 +03:00
..
api feat(tradein): add data_quality flag to /sales-vs-listings (#721) 2026-05-30 16:18:01 +03:00
core feat(tradein): brand-by-account + result IA redesign (distinct asking/sale prices) (#683) 2026-05-30 06:45:14 +00:00
observability feat(tradein): enrich GlitchTip SDK init — integrations + PII scrub (#396) (#643) 2026-05-29 09:23:17 +00:00
schemas feat(tradein): add data_quality flag to /sales-vs-listings (#721) 2026-05-30 16:18:01 +03:00
services fix(tradein): coarse-geo downgrade no longer shielded by Tier C anchor (#693) (#720) 2026-05-30 12:34:11 +00:00
tasks feat(tradein): daily asking→sold ratio refresh (#648 S4) (#663) 2026-05-29 13:49:36 +00:00
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
main.py feat(tradein): enrich GlitchTip SDK init — integrations + PII scrub (#396) (#643) 2026-05-29 09:23:17 +00:00