gendesign/tradein-mvp/backend/app
lekss361 45a9db2f25 fix(tradein): flag coarse-geo estimates as low-confidence (#693)
Когда DaData/геокод резолвит адрес лишь до уровня города/населённого пункта
(qc_geo>=2 — центроид, не дом/улица), радиусный поиск брал аналоги по случайной
окрестности и выдавал уверенную medium-оценку, хотя адрес по сути не найден.

Добавлен консервативный downgrade: confidence→low + флаг «оценка ориентировочная»,
ТОЛЬКО при позитивном coarse-сигнале (dadata.qc_geo>=2) И несработавшем
same-building anchor (anchor_tier is None — путь #691 с реальными комплами дома
не трогаем) И median_price>0. Без dadata/qc_geo — не понижаем (не фабрикуем).

Тесты: coarse+no-anchor→low+флаг; coarse+anchor→не понижен (#691 защищён);
precise→без изменений; dadata=None→без ложного downgrade. 41 passed.

Closes #693
2026-05-30 11:54:16 +03:00
..
api fix(tradein): time-budget estimate enrichment + observable errors to stop opaque 502 (#654) (#673) 2026-05-29 17:22:02 +00:00
core feat(tradein): brand-by-account + result IA redesign (distinct asking/sale prices) (#683) 2026-05-30 06:45:14 +00:00
observability feat(tradein): enrich GlitchTip SDK init — integrations + PII scrub (#396) (#643) 2026-05-29 09:23:17 +00:00
schemas feat(tradein): enrich /estimate response for web map, distribution, exposure & trend (#685) 2026-05-30 07:32:40 +00:00
services fix(tradein): flag coarse-geo estimates as low-confidence (#693) 2026-05-30 11:54:16 +03:00
tasks feat(tradein): daily asking→sold ratio refresh (#648 S4) (#663) 2026-05-29 13:49:36 +00:00
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
main.py feat(tradein): enrich GlitchTip SDK init — integrations + PII scrub (#396) (#643) 2026-05-29 09:23:17 +00:00