Миграция 172 убрала english 'Comfort' из v_bucket_success_score (NULL-class → 'не указан'), но _bucket_success_ranking в analytics_queries.py матчил COALESCE(:cls, 'Comfort') — после 172 ни одна строка не равна 'Comfort' → recommend_mix success-boost (#25, /analytics/recommend квартирография) тихо возвращал [] (silent degradation). LIVE на проде с момента ручного применения 172 (graceful empty, без краша). Fix: - call site (recommend_mix): передаём target_class_db (уже переведённый через _class_to_db_vocab english→русский), а не сырой english target_class. Чинит и латентный pre-existing баг: Business/Elite никогда не матчили русский источник. - SQL default 'Comfort' → 'Комфорт' (массовый класс ЕКБ, 723 объекта). NULL-class ('не указан') в default-путь намеренно не попадают (документировано в docstring). Prod-verified: OLD 'Comfort' default → 0 строк; NEW 'Комфорт' default → 5. Tests: - _bucket_success_ranking: реальный запрос (не замокан) с русским default — SQL содержит 'Комфорт', не 'Comfort'; ranking непустой. - recommend_mix: english 'Business' переводится в 'Бизнес' перед ranking (раньше тест патчил _bucket_success_ranking→[] и баг не ловил; helper теперь умеет patch_success_ranking=False). - #1960: позитивный тест выбора quarter_rosreestr basis (deals≥5, все higher fallback'и None) → median_price_basis='quarter_rosreestr'. |
||
|---|---|---|
| .. | ||
| api | ||
| core | ||
| models | ||
| observability | ||
| schemas | ||
| scrapers | ||
| services | ||
| templates | ||
| workers | ||
| __init__.py | ||
| main.py | ||