gendesign/tradein-mvp/backend/app/services/scrapers
Light1YT dfd608d6f2 refactor(tradein): нормализовать repair_state → enum на ингесте (#621)
listings.repair_state хранил сырые значения парсеров (cosmetic/euro/
designer/required/without/…), не совместимые с ожидаемым estimator-ом
enum needs_repair/standard/good/excellent. Покрытие ~2%, но значения
не совпадали с enum — repair_coef всегда возвращал 1.0 (no-op).

Решение: централизованный helper repair_state_normalizer.py со всеми
10 известными raw-значениями → 4 enum-buckets. Все ingest-пути
нормализуют на входе; миграция 073 бэкфилит существующие строки.
2026-05-28 20:12:35 +05:00
..
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
avito.py fix(tradein): Avito listing_date extraction (3 формата) (#601) 2026-05-27 12:55:27 +00:00
avito_detail.py refactor(tradein): нормализовать repair_state → enum на ингесте (#621) 2026-05-28 20:12:35 +05:00
avito_exceptions.py fix(tradein/avito): anti-bot hardening — sleep + abort + shared session (#487) 2026-05-23 20:08:40 +00:00
avito_houses.py fix(tradein): decode Avito houses URL-encoded __preloadedState__ (#566) 2026-05-28 15:58:19 +05:00
avito_imv.py fix(tradein-imv): harden Avito IMV anti-bot path + offline contract tests (#565) 2026-05-28 16:29:05 +05:00
base.py fix(tradein): implement listings_snapshots + offer_price_history writers (#567) (#624) 2026-05-28 13:49:52 +00:00
cian.py refactor(tradein): нормализовать repair_state → enum на ингесте (#621) 2026-05-28 20:12:35 +05:00
cian_detail.py refactor(tradein): нормализовать repair_state → enum на ингесте (#621) 2026-05-28 20:12:35 +05:00
cian_newbuilding.py feat(tradein): houses.cian_zhk_url column + backfill (#568) (#627) 2026-05-28 13:57:43 +00:00
cian_state_parser.py feat(tradein): cian_state_parser shared utility + ScrapedLot Cian fields (#447) 2026-05-23 12:35:01 +00:00
cian_valuation.py fix(tradein/cian): sanitize valuation cache writes (047 UNIQUE + 026/044 cols) (#523) 2026-05-24 13:44:39 +00:00
n1.py feat(tradein): global scraper delay setting (applies across all scrapers) (#485) 2026-05-23 15:43:28 +00:00
repair_state_normalizer.py refactor(tradein): нормализовать repair_state → enum на ингесте (#621) 2026-05-28 20:12:35 +05:00
snapshot_writer.py fix(tradein): implement listings_snapshots + offer_price_history writers (#567) (#624) 2026-05-28 13:49:52 +00:00
yandex_detail.py feat(tradein): scraper_settings live-config + Yandex admin trigger endpoints (#484) 2026-05-23 15:28:34 +00:00
yandex_helpers.py fix(tradein): Yandex listing_date — keyword + absolute-no-year (#602) 2026-05-27 13:11:22 +00:00
yandex_newbuilding.py feat(tradein): scraper_settings live-config + Yandex admin trigger endpoints (#484) 2026-05-23 15:28:34 +00:00
yandex_realty.py fix(tradein): yandex_realty captures house number + parse_rub strips NBSP (#593) 2026-05-27 07:23:36 +00:00
yandex_valuation.py fix(yandex-valuation): off-by-one cell index in _parse_row_cells (#552) 2026-05-24 19:57:17 +00:00