fix(tradein/domclick): дом-поля карточки → houses, backfill total_units/material_* из raw_payload (миграция 284) #3356
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3356
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/3253-domclick-house-fields"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Refs #3253 (пп. 1, 2, 4; п.3
domclick_building_guidкак ключ дома — отдельно). Данные для аналогов оценщика:houses.total_units= 0 у ВСЕХ источников при том, что у Домкликаquarters_countлежит вlistings.raw_payload.П.1 — откуда 400 «домклик-домов» (фактами)
Дома домклику создаёт SERP-путь (
base.py:1067 _link_listing_to_house → match_or_create_house) для каждого лота;houses.source= кто дом впервые заминтил. Тиры матчера сажают домклик-объявления на уже существующие дома avito/cian/derived — 400 это дома, где Домклик пришёл первым, не покрытие. Второй канал потерь — терминалno_house_number(безномерной адрес без кадастра → дом не пишется). Detail-путь до правкиhousesне трогал вовсе.П.2 — перенос
save_detail_enrichment: второй UPDATEhousesчерезlistings.house_id_fk— калька с avito_fill_house_params_from_detail(#3036):quarters_count → total_units,wall_type → material_walls,floor_type → material_floors, COALESCE в SET и в WHERE-гейте (непустое не затирается). Серия/энергоэффективность/подъезды — остаются в raw_payload (колонок нет, схему не заводили).П.4 — миграция 284
Backfill из raw_payload через house_id_fk; победитель при нескольких объявлениях
DISTINCT ON (house_id_fk) ORDER BY detail_enriched_at DESC NULLS LAST, id DESC; идемпотентно; lock_timeout (гейт: 41 миграция ok).Замер радиуса на проде ДО мержа (SQL воркера):
houses_touchable=3590, заполнитсяtotal_units=3198,material_walls=367,material_floors=3424, конфликтов (непустое ≠ raw) = 0 — COALESCE ничего не перепишет.Тесты
712 passed, 11 skipped(-k domclick/house). Фальсификация (откат кодового хунка):UPDATE houses не исполнен; операторы: ['UPDATE listings …'].Прод-приёмка после деплоя
SELECT count(*) FILTER (WHERE total_units IS NOT NULL) FROM houses≈ +3198; следующий domclick detail-прогон обновляет дома (лог/счётчик).