gendesign/tradein-mvp/backend/tests/fixtures
bot-backend efce189c8b fix(tradein/avito): починить чтение параметров, добавить metro/is_homeowner/days_on_market
Разобрались по эталонной разметке (2 живые detail-карточки, 2026-08-21), что реально
парсится и что нет:

- sale_type: item-view/item-params — Avito отдаёт "О квартире" и "О доме" как ДВА
  ОТДЕЛЬНЫХ <div> с ОДНИМ И ТЕМ ЖЕ маркером, а не один div с двумя <ul>, как
  предполагал старый код. css_first брал только ПЕРВЫЙ div — sale_type это не
  задевало (он в первом блоке), но house_type/total_floors_house/лифты из второго
  блока терялись молча через мёртвую ветку `len(ul_els) >= 2`. Теперь читаем <ul>
  из ВСЕХ блоков с этим маркером — устойчиво к порядку блоков.
- metro_stations: раньше только эвристика по тексту описания (28 строк из 54 855).
  Основной источник теперь — структурная разметка (#item-view-address, иконка
  "Пешком до метро"), покрывает станции без ограничения на суффикс имени
  (METRO_RE ловил только "-ская"/"-инская"). Описание — фолбэк.
- is_homeowner: не парсился вовсе. [data-marker='seller-info/label'] — "Частное
  лицо" -> True, "Агентство" -> False. Подтверждено разными значениями на двух
  эталонах.
- days_on_market: на странице явно нет, но есть publish_date, из которого честно
  выводится. Заодно чинит сам publish_date — искали дату ВНУТРИ item-id-блока, а
  она в СОСЕДНЕМ [data-marker='item-view/item-date'] ("сегодня в HH:MM").
- cadastral_number: подтверждено отсутствие на странице (не парсим, не выдумываем).

Тесты на реальной разметке (backend/tests/test_avito_detail_fields_3086.py) на
обеих эталонных фикстурах (большие embedded JS-блобы вырезаны из фикстур —
не используются DOM-based парсером, экономят место). estimator.py не тронут —
ни одно поле не влияет на цену.
2026-08-21 23:36:19 +03:00
..
.gitattributes feat(tradein/backtest): hermetic estimator regression gate — frozen fixture + baseline (#1966 PR 3/3) 2026-06-27 12:55:35 +00:00
avito_blockpage_sample.html fix(scrapers): avito per-card parse_failures counter + logging (Refs #823) (#830) 2026-05-30 20:01:50 +00:00
avito_detail_card_agency_95m2.html fix(tradein/avito): починить чтение параметров, добавить metro/is_homeowner/days_on_market 2026-08-21 23:36:19 +03:00
avito_detail_card_owner_66m2.html fix(tradein/avito): починить чтение параметров, добавить metro/is_homeowner/days_on_market 2026-08-21 23:36:19 +03:00
avito_house_572538.html fix(scrapers): avito_houses читает MFE props-вложенность виджетов — отзывы/история/тип ЖК теперь долетают (#1789) 2026-06-19 19:21:49 +03:00
avito_houses_sample.html fix(tradein): decode Avito houses URL-encoded __preloadedState__ (#566) 2026-05-28 15:58:19 +05:00
avito_imv_geo_position.json fix(tradein-imv): harden Avito IMV anti-bot path + offline contract tests (#565) 2026-05-28 16:29:05 +05:00
avito_imv_getdata.json fix(tradein-imv): harden Avito IMV anti-bot path + offline contract tests (#565) 2026-05-28 16:29:05 +05:00
avito_novostroyka_12879380.html fix(scrapers): avito pipeline — новостройки house graceful (без housePage), AvitoBlockedError per-item не крашит прогон (#1820) 2026-06-20 09:53:46 +03:00
avito_serp_novostroyka.html feat(avito): dedicated newbuilding (novostroyka) citywide sweep 2026-06-18 09:45:54 +03:00
avito_serp_sample.html fix(scrapers): avito listing_date from sortTimeStamp JSON (#726) (#729) 2026-05-30 14:13:38 +00:00
backtest_baseline.json fix(tradein/estimate): залипший anchor_tier молча глушил IMV-blend и quarter-index 2026-08-17 10:54:07 +03:00
backtest_full_fixture.json.gz feat(tradein/backtest): hermetic estimator regression gate — frozen fixture + baseline (#1966 PR 3/3) 2026-06-27 12:55:35 +00:00
cian_catph_newbuilding_serp.html fix(tradein): working cian ЖК-url resolver via cat.php SERP (#972) 2026-06-08 11:13:06 +05:00
cian_flat_330982715.html fix(scrapers): cian_detail — ceiling/repair актуальные пути state (#1791) 2026-06-19 19:57:18 +03:00
cian_waf_block_zhk_page.html fix(tradein/cian): обогащение ЖК падало не на разметке, а на сожжённом узле (#2767) (#2798) 2026-08-09 17:38:40 +00:00
domclick_bff_offers_sample.json feat(scraper-kit): copy domclick provider with protocol injection, strangler (#2133 domclick) 2026-07-02 16:08:09 +00:00
sber_real_estate_deals_66.json feat(tradein): СберИндекс time-adjust for frozen Rosreestr ДКП + per-dashboard filter fix (#794) (#919) 2026-05-31 18:48:22 +00:00
yandex_offer_3402418396407468801.html fix(scrapers): yandex_detail — area/ceiling из структурного блока, покрытие area 63%->~95% (#1792) 2026-06-19 19:37:51 +03:00
yandex_offer_7811691822126445498.html fix(scrapers): yandex_detail — area/ceiling из структурного блока, покрытие area 63%->~95% (#1792) 2026-06-19 19:37:51 +03:00