gendesign/tradein-mvp/backend
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
..
app fix(tradein): distinct asking median vs expected-sold price (no double-discount) 2026-05-30 09:29:18 +03:00
data/sql feat(tradein): white-label branded page for client «Практика» (#657) (#672) 2026-05-29 16:09:23 +00:00
scripts feat(backtest): per-rooms asking→sold correction block (#648 S1) (#650) 2026-05-29 13:11:55 +00:00
tests fix(tradein): distinct asking median vs expected-sold price (no double-discount) 2026-05-30 09:29:18 +03:00
.dockerignore feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
Dockerfile feat(tradein): persistent infra для backfill scripts (PR F) (#592) 2026-05-27 06:59:54 +00:00
pyproject.toml feat(rbac): role-based access control via X-Authenticated-User middleware (#585) 2026-05-26 06:18:40 +00:00