МЕРА: тест якоря «тот же дом» проверяет веса на месте вызова (#2381)

Ревью #3556: подмена rooms_boost=1.0 на месте вызова _compute_same_building_anchor
проходила весь сьют — тест значений держит только число в константе. Новый тест
оборачивает расчёт якоря и требует боевые sigma/rooms_boost/floor_sigma/min_comps/
mad_k (прод 17.09.2026). SB_GUARDRAIL_TOL, FSD_K, SB_GATE_MAX_FSD и сдвиг
ANCHOR_TIER_C_CORRIDOR_MULT вниз по-прежнему без поведенческих тестов.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
bot-backend 2026-09-17 13:57:05 +05:00
parent bc7fe9b0b9
commit 228c5f58f9

View file

@ -501,6 +501,29 @@ def test_estimate_premium_lift_real_in_range() -> None:
assert est.range_high_rub >= int(real * 0.9) assert est.range_high_rub >= int(real * 0.9)
def test_estimate_anchor_gets_prod_weights() -> None:
"""#2381: веса якоря доходят до расчёта боевыми (прод 17.09.2026).
Тест значений констант держит только число в estimator.py. Подмена
rooms_boost/floor_sigma на месте вызова (например, 1.0) проходила весь сьют:
веса сдвигают headline внутри тех же допусков, что проверяют тесты выше.
"""
with patch(
"app.services.estimator._compute_same_building_anchor",
wraps=_compute_same_building_anchor,
) as spy:
est = _run_estimate(anchor_comps=_SB_COMPS_PREMIUM, anchor_tier="A")
assert est.median_price_per_m2 >= 450_000 # якорь сработал, а не радиус
kw = spy.call_args.kwargs
assert {k: kw[k] for k in ("sigma", "rooms_boost", "floor_sigma", "min_comps", "mad_k")} == {
"sigma": 0.18,
"rooms_boost": 1.6,
"floor_sigma": 0.25,
"min_comps": 4,
"mad_k": 3.5,
}
def test_estimate_anchor_fires_without_radius_analogs() -> None: def test_estimate_anchor_fires_without_radius_analogs() -> None:
"""#691: радиусных аналогов НЕТ (median=0, прод-кейс провала ST_DWithin), но """#691: радиусных аналогов НЕТ (median=0, прод-кейс провала ST_DWithin), но
same-building комплы есть якорь обязан сработать и дать median>0. same-building комплы есть якорь обязан сработать и дать median>0.