feat(tradein/estimator): manual_review recommendation flag (#2002) #2019
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#2019
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/tradein-manual-review"
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
Recommends a human valuation (no auto-offer) when the auto-estimate is risky — closes the identification→action loop (#2002 #4). Consumes the shipped
premium_buildingflag (#2006) + value/confidence/range signals. Metadata only — no pricing change (regression baseline byte-identical).estimate_qualitycomputesmanual_review_recommended: bool+manual_review_reasons: list[str]via a pure helper, triggered (whenestimate_manual_review_enabled) by any of:premium_building→ "премиальный дом — премия зависит от отделки/вида (не в данных сделок)"expected_sold_price ≥ 20M₽(estimate_manual_review_high_value_rub) → "высокая стоимость"confidence == "low"→ "низкая уверенность оценки"range_high/range_low ≥ 1.9(estimate_manual_review_wide_range_ratio) → "широкий диапазон цены"Exposed on
AggregatedEstimate(manual_review_recommended,manual_review_reasons), defaultsFalse/[].Design note (reviewer-relevant): the wide-range trigger reads the asking-IQR
range_*_rub, NOTexpected_sold_range_*— the calibrated PI band is a fixed ×[0.649,1.392] (ratio ≈2.14 ≥ 1.9) so it would fire on nearly every estimate; the asking-IQR reflects real comp dispersion.Test plan
tests/test_estimator_manual_review.py— 16 tests (each trigger isolated, 4-reason combined, all-clear, threshold boundaries, div-guard ×4, disabled-flag,recommended == bool(reasons)invariant, serialization)test_search_cache_hit)Follow-up (#2002)
Frontend surfaces
manual_review_recommended+ reasons (banner / disable auto-offer); premium-building curation (class labels + false-positive demotion) enriches thepremium_buildinginput.Refs #2002