fix(tradein/estimator): lock honest asking_to_sold_ratio invariant + disambiguate torg bases (#2087 M2/M3) #2387

Merged
lekss361 merged 1 commit from fix/tradein-2087-ratio-reconciliation into main 2026-07-04 06:48:52 +00:00
Owner

Summary

  • M2 (asking_to_sold_ratio рассинхрон с медианами) — расследование показало, что root-cause фикс уже смержен в PR #2152/#2141 (honest-ratio recompute после всех mutations). Найден непокрытый gap: segment-multiplier (#2255) мутирует обе стороны ПОСЛЕ honest-ratio recompute с независимым округлением — добавлен regression-guard тест test_honest_ratio_invariant_under_segment_multiplier.
  • M3 (несовместимые базы «торга») — median_bargain_pct (house-level, все лоты, без sold-фильтра и без ограничения по давности) и asking_to_sold_ratio (estimate-level) — генуинно разные метрики без честной общей базы. Явные cross-referencing docstrings вместо слияния.
  • Docstring HouseAnalyticsKpi.median_bargain_pct поправлен после code-review (ранее ошибочно утверждал "снятые лоты"/"12 мес" — реальный запрос без sold-фильтра и без date-range).

Test plan

  • tests/test_estimator_price_spine.py + test_estimator_segment_multiplier.py + test_estimator_expected_sold*.py + test_estimator_dedup_cross_source_2087.py: 93 passed
  • Full -k estimator: 478 passed
  • Full backend suite: 3279 passed, 6 skipped, 1 pre-existing unrelated failure (test_search_cache_hit, confirmed pre-existing on clean main)
  • ruff check — clean
  • code-review: ⚠️MINOR → docstring inaccuracy пофикшена (см. выше)

Refs #2087

## Summary - M2 (asking_to_sold_ratio рассинхрон с медианами) — расследование показало, что root-cause фикс уже смержен в PR #2152/#2141 (honest-ratio recompute после всех mutations). Найден непокрытый gap: segment-multiplier (#2255) мутирует обе стороны ПОСЛЕ honest-ratio recompute с независимым округлением — добавлен regression-guard тест `test_honest_ratio_invariant_under_segment_multiplier`. - M3 (несовместимые базы «торга») — `median_bargain_pct` (house-level, все лоты, без sold-фильтра и без ограничения по давности) и `asking_to_sold_ratio` (estimate-level) — генуинно разные метрики без честной общей базы. Явные cross-referencing docstrings вместо слияния. - Docstring `HouseAnalyticsKpi.median_bargain_pct` поправлен после code-review (ранее ошибочно утверждал "снятые лоты"/"12 мес" — реальный запрос без sold-фильтра и без date-range). ## Test plan - [x] `tests/test_estimator_price_spine.py` + `test_estimator_segment_multiplier.py` + `test_estimator_expected_sold*.py` + `test_estimator_dedup_cross_source_2087.py`: 93 passed - [x] Full `-k estimator`: 478 passed - [x] Full backend suite: 3279 passed, 6 skipped, 1 pre-existing unrelated failure (`test_search_cache_hit`, confirmed pre-existing on clean main) - [x] `ruff check` — clean - [x] code-review: ⚠️MINOR → docstring inaccuracy пофикшена (см. выше) Refs #2087
lekss361 added 1 commit 2026-07-04 06:44:31 +00:00
fix(tradein/estimator): lock honest asking_to_sold_ratio invariant thru segment-multiplier + disambiguate torg bases (#2087 M2/M3)
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 1m45s
f5bfa3dca5
M2 root-cause fix already landed in PR #2152/#2141 — honest-ratio recompute
runs unconditionally after all median mutations. Gap found: segment-multiplier
(#2255) mutates both sides after that recompute with independent rounding,
untested at the ratio-invariant level. Added regression guard.

M3 — median_bargain_pct (house-level exposure discount) and
asking_to_sold_ratio (estimate-level asking-vs-sold) are genuinely different
metrics with no honest common basis. Chose explicit cross-referencing
docstrings over merging.
lekss361 merged commit 2580158d8c into main 2026-07-04 06:48:52 +00:00
lekss361 deleted branch fix/tradein-2087-ratio-reconciliation 2026-07-04 06:48:52 +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#2387
No description provided.