gendesign/tradein-mvp/backend/app
lekss361 b22ea0da80 feat(tradein): cian.py SERP refactor — state-based extraction (137 fields, no jitter)
Stage 3 of CianScraper v1 plan. Replaces DOM+__NEXT_DATA__ parsing with
cian_state_parser.extract_state(mfe='frontend-serp', key='initialState').
No anchor jitter — precise coords from offer.geo.coordinates.{lat,lng}.
Subdomain: ekb.cian.ru (per Schema sec 13, closed Q4).
curl_cffi anti-bot preserved (chrome120 TLS fingerprint).

Fields mapped: identity, geo, area, building, cadastral (flat+house),
bargainTerms, newbuilding link, seller (phones/is_homeowner/is_pro),
description_minhash (Cian native + SHA1 fallback), metro_stations,
balconies/loggias/bedrooms, listing_segment (vtorichka/novostroyki).
kitchen_area_m2 stored in raw_payload (not in ScrapedLot Stage 2).

Tests: 21 new unit tests in test_cian_serp_scraper.py (all passing).
Full suite: 71/71 passed.
2026-05-23 15:46:40 +03:00
..
api fix(tradein): восстановленная оценка показывает этаж/площадь, не 0/0 2026-05-22 15:50:19 +05:00
core fix(tradein): security hotfix — C-3 config default + C-4 empty estimate persist + C-6 PDF URL allowlist (#435) 2026-05-23 09:38:23 +00:00
schemas fix(tradein): восстановленная оценка показывает этаж/площадь, не 0/0 2026-05-22 15:50:19 +05:00
services feat(tradein): cian.py SERP refactor — state-based extraction (137 fields, no jitter) 2026-05-23 15:46:40 +03:00
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
main.py feat(tradein): мониторинг ошибок через GlitchTip (#396) 2026-05-22 11:18:26 +05:00