Бэктест оценщика умеет любой регион, а не только Свердловскую область #3516
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
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#3516
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/backtest-estimator-region"
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?
Обещание точности на лендинге измерено исключительно на екатеринбургских сделках, а по Москве прогон сделать было нечем:
region_codeв скрипте стоял константой 66.Появился флаг
--regionсо списком допустимых значений из реестра регионов, дефолт прежний. Регион проброшен во все выборки; заодно в сами SQL добавлен фильтрregion_code, которого там не было вовсе — без него флаг остался бы декоративным и регионы смешивались бы в одной выборке.Отдельно починен резолв региона в ДКП-коридоре внутри бэктеста: он брал константу 66 независимо от сделки, то есть московский коридор считался бы по Свердловской области. Теперь регион определяется по координатам сделки, как в боевом оценщике.
Прогон по Москве этот PR не делает — он длинный и пойдёт отдельно командой
python -m scripts.backtest_estimator --region 77.🤖 Generated with Claude Code
https://claude.ai/code/session_01NQb6WeJtagZwZnUsSjDizs
Обещание точности лендинга измерялось только на екатеринбургских ДКП: скрипт бэктеста не имел параметра региона (region_code был зашит числом 66), а сам SELECT сделок вообще не фильтровал по deals.region_code. Пока в базе жил только регион 66, это было незаметно — но теперь там же лежат 212 937 московских ДКП (69 138 за последние 12 мес.) и 113 351 подмосковных, и безусловный "unscoped" запрос молча смешал бы все три региона в одной выборке. Прогон по Москве до этой правки сделать было нечем. Добавлен CLI-флаг --region (по идиоме app/tasks/msk_raw_import.py: явный список поддерживаемых значений, отказ на неизвестном коде ДО любого запроса к БД). Источник допустимых значений — реестр REGIONS из app/services/regions.py, а не отдельный литерал: регион заводится в реестре один раз и становится доступен здесь автоматически. Дефолт оставлен 66 — поведение существующих вызовов не меняется. region_code проведён во все 4 варианта SQL выборки сделок (обычная/scattered × city/no-city) и в per-city PPM2-band lookup (_resolve_city_ppm2_band). Отдельно поправлен _predict_full_spine: ДКП-коридор (_fetch_dkp_corridor) резолвил регион только по умолчанию (66) независимо от сделки — теперь регион резолвится ПО КООРДИНАТАМ каждой сделки через regions.region_for_point, зеркаля то, как это делает сам prod-эстиматор (estimator.py ~4868-4870). Без этого фикса флаг --region был бы декоративным: SELECT сделок брал бы верный регион, но коридор аналогов всё равно считался бы по Свердловской области. Проверено: --help показывает --region {50,66,77}; --region 99 отклоняется argparse ДО подключения к БД (exit 2); ruff check/format check чисты; все 83 существующих теста backtest_* проходят без изменений. Полный прогон по Москве в этой задаче не запускался (долгий, отдельная проверка): python -m scripts.backtest_estimator --region 77 --since 2024-09-01 --sample 300