diff --git a/tradein-mvp/backend/tests/test_3466_corridor_tier_a.py b/tradein-mvp/backend/tests/test_3466_corridor_tier_a.py index 4350f621..72542446 100644 --- a/tradein-mvp/backend/tests/test_3466_corridor_tier_a.py +++ b/tradein-mvp/backend/tests/test_3466_corridor_tier_a.py @@ -26,7 +26,6 @@ from unittest.mock import MagicMock, patch os.environ.setdefault("DATABASE_URL", "postgresql+psycopg://test:test@localhost:5432/test") -from app.core.config import settings from app.services import estimator from app.services.geocoder import GeocodeResult @@ -45,7 +44,7 @@ _ANCHOR_PPM2 = (190_000, 195_000, 200_000, 205_000, 210_000) def _cap() -> float: - return _CORRIDOR["high_ppm2"] * (1.0 + settings.estimate_corridor_clamp_slack) + return _CORRIDOR["high_ppm2"] * (1.0 + estimator.CORRIDOR_CLAMP_SLACK) def _call( diff --git a/tradein-mvp/backend/tests/test_estimator_radius_floor.py b/tradein-mvp/backend/tests/test_estimator_radius_floor.py index c532ed95..0f3e8485 100644 --- a/tradein-mvp/backend/tests/test_estimator_radius_floor.py +++ b/tradein-mvp/backend/tests/test_estimator_radius_floor.py @@ -8,8 +8,8 @@ - radius median выше dkp_low × factor → no-op (медиана не изменена) - dkp_raw is None → no-op (нет базы для floor) - anchor-путь (anchor_tier != None) → не затронут floor'ом -- коридор ниже estimate_corridor_clamp_min_n → floor не применяется (#3466) -- коридор ровно estimate_corridor_clamp_min_n → floor применяется (#3466) +- коридор ниже CORRIDOR_CLAMP_MIN_N → floor не применяется (#3466) +- коридор ровно CORRIDOR_CLAMP_MIN_N → floor применяется (#3466) """ from __future__ import annotations @@ -194,23 +194,23 @@ def test_no_dkp_raw_no_floor() -> None: def test_floor_not_applied_below_clamp_min_n() -> None: - """n = estimate_corridor_clamp_min_n − 1: тот же floor, что в тесте 1, но выключен. + """n = CORRIDOR_CLAMP_MIN_N − 1: тот же floor, что в тесте 1, но выключен. `DkpCorridor.advisory_only` (#3452) обосновывает себя общим порогом у клампа headline И у radius-floor. Половина про кламп стережётся test_3452_*, эта — здесь: без гейта по count медиана 80k поднялась бы до 120k. """ - from app.core.config import settings + from app.core.config import CORRIDOR_CLAMP_MIN_N analogs = _six(80_000.0) dkp_raw = { - "count": settings.estimate_corridor_clamp_min_n - 1, + "count": CORRIDOR_CLAMP_MIN_N - 1, "low_ppm2": 150_000, "median_ppm2": 180_000, "high_ppm2": 220_000, "period_months": 12, } - est = _run_estimate(analogs, dkp_raw, radius_floor_factor=0.8) + est = _run_estimate(analogs, dkp_raw) assert est.median_price_per_m2 < 100_000, ( f"median_ppm2={est.median_price_per_m2}: коридор из " @@ -222,18 +222,18 @@ def test_floor_not_applied_below_clamp_min_n() -> None: def test_floor_applied_at_exactly_clamp_min_n() -> None: - """n = estimate_corridor_clamp_min_n: advisory_only=False → floor обязан поднять. + """n = CORRIDOR_CLAMP_MIN_N: advisory_only=False → floor обязан поднять. Тест 4 стережёт «ниже порога — нет», тест 1 — «15 сделок — да». Граница между ними (`>=` против `>`) не стереглась: при n == min_n витрина не пишет подпись «справочно», значит коридор обязан войти в цену. """ - from app.core.config import settings + from app.core.config import CORRIDOR_CLAMP_MIN_N from app.schemas.trade_in import DkpCorridor analogs = _six(80_000.0) dkp_raw = { - "count": settings.estimate_corridor_clamp_min_n, + "count": CORRIDOR_CLAMP_MIN_N, "low_ppm2": 150_000, "median_ppm2": 180_000, "high_ppm2": 220_000, @@ -242,7 +242,7 @@ def test_floor_applied_at_exactly_clamp_min_n() -> None: # Та же граница с другой стороны: на ней коридор уже не справочный. assert DkpCorridor(**dkp_raw).advisory_only is False - est = _run_estimate(analogs, dkp_raw, radius_floor_factor=0.8) + est = _run_estimate(analogs, dkp_raw) assert est.median_price_per_m2 == 150_000 * 0.8, ( f"median_ppm2={est.median_price_per_m2}: коридор из {dkp_raw['count']} сделок "