test(estimator): полоса площади — единственный фильтр похожести, а не просто «есть»
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 10s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 5m6s

`test_dkp_corridor_keeps_full_area_band` проверял только присутствие полосы ±15% в
bind-параметрах — она есть и на origin/main, и на варианте с бакет-ключом, поэтому
тест был зелёным по построению и ничего не охранял (мутационная проверка: при
восстановлении предиката он оставался зелёным, пока остальные 4 краснели).

Утверждение усилено до «полоса единственная»: тест дополнительно требует отсутствия
предиката по rooms рядом с ней. На origin/main фильтров по площади ДВА (полоса и
бакет через d.rooms), итоговое окно — их пересечение, поэтому теперь тест краснеет
значением вместе с остальными.

Refs #3256
This commit is contained in:
bot-backend 2026-09-12 02:39:28 +05:00
parent 16d99e0f1a
commit 6df6f92a2b

View file

@ -108,11 +108,17 @@ def test_dkp_corridor_has_no_rooms_predicate() -> None:
assert _rooms_binds(db) == []
def test_dkp_corridor_keeps_full_area_band() -> None:
"""Полоса ±15% доходит до SQL целиком — это единственный фильтр «похожести»."""
def test_dkp_corridor_area_band_is_the_only_similarity_filter() -> None:
"""Полоса ±15% доходит до SQL целиком И остаётся ЕДИНСТВЕННЫМ фильтром похожести.
Вторая половина утверждения та, что краснеет: на origin/main рядом с полосой
стоит `d.rooms = ...`, т.е. фильтров по площади там два (полоса и бакет), и
итоговое окно их пересечение.
"""
db = _RecordingDB()
_fetch_dkp_corridor(db, address=_EKB_ADDRESS, rooms=2, area=50.0, city="екатеринбург")
assert _area_bands(db) == [(50.0 * 0.85, 50.0 * 1.15)]
assert _rooms_predicates(db) == []
def test_dkp_corridor_five_room_client_is_reachable() -> None: