gendesign/tradein-mvp/backend
bot-backend d5ed6f0fe4 fix(tradein): sanitize ДКП deal outliers (floor / ppm²) (#699)
actual_deals carried non-market/broken rows (floor:100, ~39.7K/m² for 125m²)
that fed dkp_corridor + expected_sold with noise. Add absolute guard-bands
for EKB vtorichka:
- ppm² in [50K, 800K] (market ~100-400K, premium up to ~680K; below/above is
  not arms-length — shares, encumbered, typos)
- floor in [1, 60] and floor <= total_floors (floor:100 / 30-in-a-5-storey).

_fetch_deals filters rows via _is_plausible_deal (display + downstream);
_fetch_dkp_corridor adds the ppm² band to its SQL (expected_sold corridor).
Relative Tukey outlier filter on listings unchanged.

Refs #699
2026-05-30 17:29:29 +03:00
..
app fix(tradein): sanitize ДКП deal outliers (floor / ppm²) (#699) 2026-05-30 17:29:29 +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): sanitize ДКП deal outliers (floor / ppm²) (#699) 2026-05-30 17:29:29 +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