Commit graph

3 commits

Author SHA1 Message Date
96c09c30ee feat(tradein): infer repair_state from listing description text (#622)
Structured repair coverage was too low for data-derived repair coefficients
(#7 v2): avito ~1% / cian ~5% / yandex 0%. When the structured field is absent
we now extract repair state from the listing description via Russian-phrase
regexes (евроремонт / без отделки / черновая / дизайнерский / косметический,
...), centralized in repair_state_normalizer.infer_repair_state_from_text().

Wired as a fallback into avito_detail, cian SERP + cian_detail, and both yandex
SERP and detail parsers — the structured field always wins; only NULLs fall back
to inference. Patterns are checked strongest-first (excellent > good >
needs_repair > standard) so mixed descriptions resolve to the latest state.
Migration 075 backfills existing rows with the same patterns; unknown stays NULL
(no fabrication).
2026-05-28 20:35:46 +05:00
b21d7c7c85 feat(tradein): scraper_settings live-config + Yandex admin trigger endpoints (#484)
All checks were successful
Deploy Trade-In / changes (push) Successful in 4s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / build-backend (push) Successful in 39s
Deploy Trade-In / deploy (push) Successful in 32s
2026-05-23 15:28:34 +00:00
3d90221fa0 feat(tradein): yandex_detail.py — Product JSON-LD + DOM detail parser (#466)
All checks were successful
Deploy Trade-In / changes (push) Successful in 4s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / build-backend (push) Successful in 38s
Deploy Trade-In / deploy (push) Successful in 21s
Stage 4 of YandexRealtyScraper v1. YandexDetailScraper.fetch_detail(offer_url) extracts authoritative price from Product JSON-LD (offers.price exact int) + DOM sections (description, agent, stats, metro, photos 8 sizes, newbuilding link, NLP). 35 unit tests, ruff clean. Photo URLs sanitized downstream via _safe_url CDN allowlist (avatars.mds.yandex.net).
2026-05-23 13:45:09 +00:00