fix(tradein): cian newbuilding MFE/reliability drift — initialState extraction (#972) #1544
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#1544
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/cian-newbuilding-mfe-drift"
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?
Проблема
После деплоя #1540 (#972, BrowserFetcher) валидационный backfill cian newbuilding всё равно давал
failed_fetchдля всех домов (succeeded=0), хотя страница ЖК тянется живой (verified: title «ЖК Светлый»,_cianConfig×60,initialState×14, egress = мобильный IP). Диагностика через прод-браузер-контейнер (camoufox, прод egress) показала два drift'а структуры Cian —extract_stateвозвращалNone:newbuilding-card-desktop-fichering-frontend→newbuilding-card-desktop-frontend(старого имени на странице больше нет →initialState=None→ главный блокер).initialState.reliability→initialState.reliabilityState.reliability(inner dict сохранил форму{checkStatus, details[], banner, actions}).reviewsвinitialStateотсутствует (грузится отдельным XHR) — вне scope, baseline и так 0.Изменения
cian_newbuilding.py:mfe→ актуальное имя;rel_stateчитаетreliabilityState.reliability; docstring синхронизирован. Только новая реализация (без legacy-fallback на старые ключи).test_cian_newbuilding.py: fixturefake_stateобновлён подreliabilityState.reliability.Верификация (live, прод-браузер 2026-06-15)
ЖК «Светлый» (nb 17556):
newbuilding.id=17556,realtyValuationchart = 27 точек,reliabilityState.reliability.checkStatus(status=reliable) + 2 details — всё извлекается.Test plan
uv run ruff check— passeduv run pytest -q— 1779 passed. 2 несвязанных локальных env-only падения (test_cian_valuation::test_cache_hit_returns_cachedKeyError,test_search_api::test_search_cache_hit401) — в чужих модулях, мой diff их не касается; в CI проходят (jobtestна main @483fdb0cбыл success минуты назад).После merge+deploy — повторить валидационный backfill (#972) + полный прогон.
Refs #972
Cian переименовал MFE ЖК-карточки и переместил reliability-контейнер, из-за чего fetch_newbuilding получал initialState=None → failed_fetch для всех домов (verified live 2026-06-15 на прод-браузере через мобильный egress): - MFE: 'newbuilding-card-desktop-fichering-frontend' → 'newbuilding-card-desktop-frontend' (старое имя на странице отсутствует → extract_state=None → backfill succeeded=0) - reliability: initialState.reliability → initialState.reliabilityState.reliability (inner dict сохранил форму {checkStatus, details[], banner, actions}) Проверено на ЖК «Светлый» (nb 17556): newbuilding.id, realtyValuation chart (27 точек), reliabilityState.reliability.checkStatus + 2 details — всё извлекается. test_fetch_newbuilding_parses_state: fixture обновлён под reliabilityState.reliability. Полный suite зелёный (1779 passed; 2 несвязанных env-only локальных падения — cian_valuation cache / search_api auth — в CI проходят). Refs #972