docs(#3256): докстринг коридора без «та же rooms»; якорь называет оставшегося потребителя (TVF 211)
All checks were successful
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 / frontend-tests (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 5m7s
CI Trade-In / changes (pull_request) Successful in 8s
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped

This commit is contained in:
bot-backend 2026-09-12 02:53:03 +05:00
parent 6df6f92a2b
commit 86cba37218
2 changed files with 10 additions and 1 deletions

View file

@ -1846,8 +1846,13 @@ def _fetch_dkp_corridor(
"""#652: коридор ₽/м² по реальным ДКП-сделкам Росреестра для target.
Reuse паттерна street-deals (api/v1/trade_in.py): извлекаем улицу из адреса,
фильтруем `deals` (source='rosreestr', та же rooms, площадь ±tolerance, окно
фильтруем `deals` (source='rosreestr', площадь ±tolerance, окно
period_months) и нормализуем per-. Возвращаем low/median/high /м².
Фильтра по rooms тут НЕТ осознанно (#3256): `deals.rooms` — бакет площади,
а не комнатность, поэтому предикат по нему был вторым фильтром по площади
и вырезал полосу ±tolerance (у 180 клиентов целиком). См. якорь в
deploy/import-rosreestr.sh. `rooms` в сигнатуре остаётся как гейт
«запрос без комнатности не оценка», но в SQL не уходит.
ADVISORY caller не клампит, только сурфейсит + опциональная пометка.
Best-effort: None при отсутствии улицы / сделок / любой ошибке.
NB: при n>=clamp_min_n коридор клампит headline + radius-floor (НЕ чисто

View file

@ -76,6 +76,10 @@ docker exec "$SRC_PG" psql -U "$SRC_USER" -d "$SRC_DB" -v ON_ERROR_STOP=on -c "
-- НЕ фильтруют по deals.rooms ИМЕННО потому, что здесь синтетика; с
-- настоящей комнатностью предикат нужно вернуть, иначе все сайты молча
-- продолжат ключеваться площадью.
-- ОСТАВШИЙСЯ потребитель, который ВСЁ ЕЩЁ фильтрует по d.rooms:
-- TVF street_sales_vs_listings (data/sql/211_sales_vs_listings_segment_guard.sql:89),
-- её зовёт API /sales-vs-listings (trade_in.py). Там ключ асимметричный —
-- d.rooms синтетика, l.rooms настоящая, — копипастой из #3256 не чинится.
CASE
WHEN area < 30 THEN 0 WHEN area < 44 THEN 1
WHEN area < 62 THEN 2 WHEN area < 85 THEN 3