FIX 1: в _parse_html добавлен гео-фильтр per-card source_url. При avito_serp_ekb_only=True (ENV AVITO_SERP_EKB_ONLY, дефолт True) карточки без /ekaterinburg/ в source_url отбрасываются — Авито добивает выдачу «по всей России» при малом числе ЕКБ-результатов (rooms=4 давал 96% не-ЕКБ). Карточки без распознанного city-slug пропускаются консервативно. Лог: «avito SERP: dropped N non-EKB cards (padding)». FIX 2 (анализ): ROOM_SLUGS уже содержит отдельные бакеты «4-комн.» и «5+комн.» (разбиты ранее). rooms-значение берётся из текста заголовка карточки (_extract_rooms_from_title: regex «(\d)-к. квартира»), а не из бакета — 4/5/6 различаются по факту парсинга. Сплит slug'ов был сделан ранее, регрессий нет. Тесты: 4 новых unit-теста в test_avito_ekb_geo_filter.py покрывают: EKB+non-EKB → только EKB; ekb_only=False → все проходят; без city-slug → консервативно оставляем; все EKB → ничего не дропается. |
||
|---|---|---|
| .. | ||
| app | ||
| data/sql | ||
| scripts | ||
| tests | ||
| .dockerignore | ||
| Dockerfile | ||
| pyproject.toml | ||