|
All checks were successful
CI / changes (pull_request) Successful in 9s
CI Trade-In / changes (pull_request) Successful in 10s
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 51s
Миграция 177 залила +47183 ДКП-сделки по всей Свердловской обл. (66, 368 городов, deals.city заполнен). Потребители deals матчат по имени улицы БЕЗ city-фильтра → одноимённые улицы дешёвых городов области контаминируют ЕКБ-числа. C1 — street-deals + ДКП-коридор (клиент видит СЕЙЧАС): - estimator._fetch_dkp_corridor + api/v1/trade_in.get_street_deals: добавлен city-скоуп `city IS NOT NULL AND :address ILIKE '%'||city||'%'` (канонический deals.city как подстрока целевого адреса — self-normalizing, адрес всегда содержит город). - Live-repro (Ленина, 2к, 12мес): median 52 908 → 118 052 ₽/м² (было занижение ~−55%). C2 — дневной пересчёт asking→sold ratio (imminent, «выкупная» −29%): - tasks/asking_to_sold_ratio: deal_side + deal_global скоупятся на ЕКБ (asking-сторона = listings покрыты скрейпом только по ЕКБ; в listings нет колонки city). Константа _ASKING_CITY_PATTERN. ask-стороны не трогаем. - Live-repro (rooms=2): sold_median all-city 82 593 (ratio 0.622) → EKB 116 858 (ratio 0.880). Предотвращает обвал «выкупной» на след. пересчёте. - Когда появятся oblast-листинги (B1/B2) → заменить на per-city ratio через `district`. Тесты: subset-тест 080↔refresh (mirror _drop_segment_guard прецедента для city-guard) + позитивный тест скоупа; 125 passed вкл. regression-гейт (байт-зелёный — коридор заморожен в фикстуре), expected_sold, idor, 781. Regression-гейт не затронут (dkp_raw — frozen kwarg). |
||
|---|---|---|
| .. | ||
| v1 | ||
| __init__.py | ||