[tradein][tech-debt] houses.house_class never populated — dead merge engine + Avito «Класс жилья» not extracted #2003

Closed
opened 2026-06-27 15:22:22 +00:00 by lekss361 · 1 comment
Owner

Найдено при data-research #2002. houses.house_class = 0% из 13769 (declared 009_houses.sql:32, comfort/business/premium/economy). Два независимых бага, оба выше любого мержа.

Bug 1 — merge-движок для houses = мёртвый код

conflict_resolution.py:45 объявляет "house_class": ["avito_houses_catalog","cian","yandex_realty_nb"], но:

  • resolve_house_field / HOUSE_FIELD_PRIORITY имеют 0 продакшн-вызовов (grep resolve_house_field app/ → только определение + тесты).
  • avito persist (avito_houses.py:_persist_house ~1003-1072) делает прямой UPDATE houses SET … фиксированных колонок — house_class там нет.
  • house_sources пишется без raw_payload-блоба класса (house_dedup_merge.py:377) → мержить неоткуда.
  • Даже распарсенный yandex'ом house_class (yandex_newbuilding.py:200) никуда не персистится.

→ Колонка не наполняется НИКЕМ. Фикс: либо подключить resolve_house_field в house-merge, либо прямой write класса из продюсера.

Bug 2 — Avito отдаёт «Класс жилья», мы не извлекаем

Avito (новостройки, developmentPage) возвращает {"type":"Класс жилья","value":"Комфорт"}мы это СОХРАНЯЕМ в houses.raw_characteristics (jsonb), но не извлекаем в колонку: нет ключа «Класс жилья» в EXPAND_PARAMS_MAP (avito_houses.py:87-104); неизвестные метки молча continue (avito_detail.py:533-536). Подтверждено live: 14 домов уже имеют класс в raw_characteristics.

Так же не извлекаются из raw_characteristics: Серия, Перекрытия, Срок сдачи, «Стоимость ремонта», «Мебель» (видны live на avito-страницах).

→ Quick win: распарсить «Класс жилья» (+ Серия/Перекрытия) из raw_characteristics → колонки. Бесплатно (данные уже в БД). НО покрытие — newbuilding-only (~620 потолок); вторичный класс — только из description (см. #2002).

Note

Avito description майнинг (parse_house_class существует, подключён только к yandex-новострою) — единственный путь к классу вторички. См. roadmap #2002.

Refs #2002

Найдено при data-research #2002. `houses.house_class` = **0% из 13769** (declared 009_houses.sql:32, comfort/business/premium/economy). Два независимых бага, оба выше любого мержа. ## Bug 1 — merge-движок для houses = мёртвый код `conflict_resolution.py:45` объявляет `"house_class": ["avito_houses_catalog","cian","yandex_realty_nb"]`, но: - `resolve_house_field` / `HOUSE_FIELD_PRIORITY` имеют **0 продакшн-вызовов** (`grep resolve_house_field app/` → только определение + тесты). - avito persist (`avito_houses.py:_persist_house` ~1003-1072) делает прямой `UPDATE houses SET …` фиксированных колонок — **house_class там нет**. - `house_sources` пишется без raw_payload-блоба класса (house_dedup_merge.py:377) → мержить неоткуда. - Даже распарсенный yandex'ом `house_class` (yandex_newbuilding.py:200) никуда не персистится. → Колонка не наполняется НИКЕМ. Фикс: либо подключить `resolve_house_field` в house-merge, либо прямой write класса из продюсера. ## Bug 2 — Avito отдаёт «Класс жилья», мы не извлекаем Avito (новостройки, developmentPage) возвращает `{"type":"Класс жилья","value":"Комфорт"}` — **мы это СОХРАНЯЕМ в `houses.raw_characteristics` (jsonb), но не извлекаем в колонку**: нет ключа «Класс жилья» в `EXPAND_PARAMS_MAP` (avito_houses.py:87-104); неизвестные метки молча `continue` (avito_detail.py:533-536). Подтверждено live: 14 домов уже имеют класс в raw_characteristics. Так же не извлекаются из raw_characteristics: **Серия**, **Перекрытия**, **Срок сдачи**, «Стоимость ремонта», «Мебель» (видны live на avito-страницах). → Quick win: распарсить «Класс жилья» (+ Серия/Перекрытия) из `raw_characteristics` → колонки. Бесплатно (данные уже в БД). НО покрытие — newbuilding-only (~620 потолок); вторичный класс — только из `description` (см. #2002). ## Note Avito **`description` майнинг** (`parse_house_class` существует, подключён только к yandex-новострою) — единственный путь к классу вторички. См. roadmap #2002. Refs #2002
lekss361 added the
priority/p2
scope/backend
tech-debt
tradein
labels 2026-06-27 15:22:35 +00:00
Author
Owner

Working on this (автономный проход по backlog) — ветка fix/tradein-house-class-persist.

Working on this (автономный проход по backlog) — ветка `fix/tradein-house-class-persist`.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2003
No description provided.