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). |
||
|---|---|---|
| .. | ||
| api | ||
| core | ||
| schemas | ||
| services | ||
| tasks | ||
| __init__.py | ||
| main.py | ||