fix(estimator): флаг + тесты для ghost-anchor guard и radius-dedup (#1871) #1919

Merged
lekss361 merged 2 commits from fix/estimator-trust-ghost-dedup into main 2026-06-26 16:18:59 +00:00
Owner

Догон к уже-смердженным #1874 (ghost-anchor guard) + #1880 (radius dedup). При анализе #1871 обнаружено, что обе реализации уже в main — этот PR добавляет недостающее:

  • флаг estimate_confidence_floor_no_analogs (дефолт True) вокруг _enforce_zero_analog_low (запрет confidence='high' при n_analogs=0 — ghost-anchor #1871 🔴). Чтобы можно было отключить без редеплоя кода.
  • тесты: test_flag_default_true, test_flag_off_does_not_downgrade (ghost), test_n_analogs_reflects_deduped_count (dedup — 3 дубля одного source_id → n_analogs=1).

ruff clean, pytest 2228 passed (1 pre-existing unrelated fail). Целевые: 18 ghost + 12 dedup = 30/30.

Cross-ref #1871, #1874, #1880.

Догон к уже-смердженным #1874 (ghost-anchor guard) + #1880 (radius dedup). При анализе #1871 обнаружено, что обе реализации уже в main — этот PR добавляет недостающее: - **флаг** `estimate_confidence_floor_no_analogs` (дефолт True) вокруг `_enforce_zero_analog_low` (запрет `confidence='high'` при `n_analogs=0` — ghost-anchor #1871 🔴). Чтобы можно было отключить без редеплоя кода. - **тесты**: `test_flag_default_true`, `test_flag_off_does_not_downgrade` (ghost), `test_n_analogs_reflects_deduped_count` (dedup — 3 дубля одного source_id → n_analogs=1). ruff clean, pytest **2228 passed** (1 pre-existing unrelated fail). Целевые: 18 ghost + 12 dedup = 30/30. Cross-ref #1871, #1874, #1880.
lekss361 added 2 commits 2026-06-26 15:53:14 +00:00
Добавляет settings-флаг estimate_confidence_floor_no_analogs (дефолт True),
гейтящий вызов _enforce_zero_analog_low перед сборкой AggregatedEstimate.
При n_analogs==0 и confidence!='low' форсит 'low' + добавляет caveat в
explanation («без сопоставимых аналогов рядом»), предотвращая показ выдуманного
«высокого» доверия когда оценка построена только на внешних оценщиках
(yandex_valuation/cian_valuation) без реальных рыночных аналогов.
fix(estimator): dedup radius-аналогов — не раздувать n_analogs (#1871)
All checks were successful
CI / changes (pull_request) Successful in 7s
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
9678aface5
Добавляет тест test_n_analogs_reflects_deduped_count: 3 дубля одного объекта
(один source_id) → 1 кандидат (freshest scraped_at); 3 разных объекта → все 3.
Верифицирует ключевое требование #1871 P2: n_analogs отражает дедупнутое число,
а не raw кол-во строк в listings с дублями (prod: 797 yandex + 93 cian дублей
раздували n_analogs и искажали медиану/перцентили).
lekss361 merged commit 5d5b2981fc into main 2026-06-26 16:18:59 +00:00
lekss361 deleted branch fix/estimator-trust-ghost-dedup 2026-06-26 16:18:59 +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#1919
No description provided.