feat(tradein/backtest): --city per-city валидация точности + corridor city-parity #2491

Merged
lekss361 merged 1 commit from fix/tradein-oblast-d-backtest into main 2026-07-12 17:51:13 +00:00
Owner

Что

D validation harness — измерять точность оценщика по городам после oblast-расширения.

Изменения (scripts/backtest_estimator.py + tests)

  • --city '<точное deals.city>' (напр. --city "Нижний Тагил") → скоуп выборки по deals.city. Default None = байт-идентично (тот же _SAMPLE_SQL object — literal identity, залочено тестом).
  • Per-city PPM2 band из deal_city_price_bands (fallback global, 0 доп-запросов при None).
  • Corridor city-parity fix: backtest _fetch_dkp_corridor теперь передаёт city=_resolve_target_city(deal.address) — зеркалит прод (C2). Раньше backtest считал коридоры cross-city-contaminated (не как прод). ⚠️ Это меняет и default-run live-числа (не fixture-replay) — intended catch-up к проду; MAPE до/после этого PR напрямую не сравнимы для default-прогонов.
  • _compute_confidence подтверждён comp-count-based (без EKB-хардкода) — code change не нужен.
  • +10 unit-тестов (argparse, _sample_sql(None) is _SAMPLE_SQL, city-predicate, per-city band no-DB/found/missing/error, corridor city передан).

Проверка

  • code-review APPROVE, без блокеров.
  • Regression-гейт байт-зелёный (replay не гоняет _fetch_dkp_corridor). Frozen fixture/baseline не тронуты. ruff clean.

После merge (я прогоню)

Live per-city backtest docker exec tradein-backend python -m scripts.backtest_estimator --city "<город>" для target-городов → per-city MAPE report (валидация oblast-точности).

## Что D validation harness — измерять точность оценщика **по городам** после oblast-расширения. ## Изменения (scripts/backtest_estimator.py + tests) - **`--city '<точное deals.city>'`** (напр. `--city "Нижний Тагил"`) → скоуп выборки по `deals.city`. Default None = **байт-идентично** (тот же `_SAMPLE_SQL` object — literal identity, залочено тестом). - Per-city PPM2 band из `deal_city_price_bands` (fallback global, 0 доп-запросов при None). - **Corridor city-parity fix**: backtest `_fetch_dkp_corridor` теперь передаёт `city=_resolve_target_city(deal.address)` — зеркалит прод (C2). Раньше backtest считал коридоры cross-city-contaminated (не как прод). ⚠️ Это меняет и **default-run live-числа** (не fixture-replay) — intended catch-up к проду; MAPE до/после этого PR напрямую не сравнимы для default-прогонов. - `_compute_confidence` подтверждён comp-count-based (без EKB-хардкода) — code change не нужен. - +10 unit-тестов (argparse, `_sample_sql(None) is _SAMPLE_SQL`, city-predicate, per-city band no-DB/found/missing/error, corridor city передан). ## Проверка - code-review ✅ **APPROVE**, без блокеров. - Regression-гейт **байт-зелёный** (replay не гоняет `_fetch_dkp_corridor`). Frozen fixture/baseline **не тронуты**. ruff clean. ## После merge (я прогоню) Live per-city backtest `docker exec tradein-backend python -m scripts.backtest_estimator --city "<город>"` для target-городов → per-city MAPE report (валидация oblast-точности).
lekss361 added 1 commit 2026-07-12 17:49:32 +00:00
feat(tradein/backtest): --city per-city валидация + corridor city-parity
All checks were successful
CI / changes (pull_request) Successful in 8s
CI Trade-In / changes (pull_request) Successful in 9s
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 Trade-In / backend-tests (pull_request) Successful in 51s
CI / openapi-codegen-check (pull_request) Has been skipped
25a865f27b
D validation harness для oblast-точности:
- --city '<точное deals.city>' → scope выборки по deals.city; default None = байт-идентично (тот же _SAMPLE_SQL object, literal identity).
- per-city PPM2 band из deal_city_price_bands (fallback global, 0 доп-запросов при None).
- corridor city-parity: backtest _fetch_dkp_corridor теперь передаёт city=_resolve_target_city(deal.address) — зеркалит прод C2 (был cross-city contaminated). NB: меняет и default-run live-числа (не fixture-replay) — intended catch-up к проду.
- _compute_confidence подтверждён comp-count-based (без EKB-хардкода).
- +10 unit-тестов. Регресс-гейт байт-зелёный (replay не гоняет corridor).

code-review  APPROVE. Frozen fixture/baseline не тронуты. Live per-city backtest прогоню после деплоя.
lekss361 merged commit 3293df8e14 into main 2026-07-12 17:51:13 +00:00
lekss361 deleted branch fix/tradein-oblast-d-backtest 2026-07-12 17:51:13 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2491
No description provided.