feat(tradein/estimator): elite-segment manual_review trigger by asking ppm² (#2002) #2027
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2027
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/tradein-manual-review-elite"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Every expensive-segment estimate now carries an honest "auto-estimate is conservative" warning. Closes the gap left by #2019: an elite unit that is NOT in a curated premium building, is < 20M, and has decent confidence previously got NO warning — yet the backtest proved élit is systematically under-estimated ~−29% (premium is unit-level: finish/view/class, absent from deal data). Metadata only — gate byte-identical.
New trigger in
_manual_review(gated onestimate_manual_review_enabled):Key: uses the ASKING/headline
median_ppm2, NOTexpected_sold_per_m2. The schema is explicit that the headline median stays asking-side whileexpected_sold_* = asking × ratio; because the estimate under-prices elite,expected_sold_per_m2drags an elite unit into the бизнес band and wouldn't identify it — the un-discounted asking median cleanly marks the segment. Reasons are additive (a curated premium elite unit shows both bullets). Frontend already rendersmanual_review_reasons→ no UI change.Test plan
tests/test_estimator_manual_review.py+6 cases (elite alone < 20M / decent-confidence fires; ==250k boundary; 249 999 no-fire; None/0 safe; 5-reason accumulation) → 25 passed with the gatetest_search_cache_hit)Refs #2002