gendesign/tradein-mvp/backend/app
lekss361 d9e0bfd541 fix(tradein): distinct asking median vs expected-sold price (no double-discount)
Same-building anchor set the headline median from anchor_sold_ppm2 (band-haircut
already applied), then forced expected_sold == headline. With the per-rooms
asking_to_sold_ratio also attached, the UI showed two identical numbers
('Ориентир запроса' == 'Ожидаемая цена продажи') + a mismatched -N% badge.
Fix: headline uses anchor_ppm2 (ASKING space); expected_sold = median × ratio
(single asking->sold mechanism) → distinct, strictly lower; null-guard preserved.
Median now asking-space (closer to golden asking reals; Хохрякова 48 4к 98.6M).
227 estimator tests pass; ruff clean.

Refs #651 #677
2026-05-30 09:29:18 +03:00
..
api fix(tradein): time-budget estimate enrichment + observable errors to stop opaque 502 (#654) (#673) 2026-05-29 17:22:02 +00:00
core feat(tradein): refine same-building anchor for within-building heterogeneity (#681) 2026-05-30 05:49:46 +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): blend Avito IMV anchor into estimate + ДКП corridor advisory (#651, #652) (#674) 2026-05-29 17:42:06 +00:00
services fix(tradein): distinct asking median vs expected-sold price (no double-discount) 2026-05-30 09:29:18 +03: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