trade-in/v2 [BE-1]: estimate +cv +source_counts +created_at; /history +sources_used; cache-KPI
trade-in/v2 [BE-2]: optional radius_m param (estimate / house-analytics / sell-time-sensitivity)
feat(tradein): #2043 BE-1 (cv/source_counts/created_at + history/cache-KPI) + #2044 BE-2 (radius_m query-params)
scraper-kit H: Docker/build wiring для пакета
scraper-kit G: scheduler + registry-dispatch (25+ trigger_* → dict-реестр)
scraper-kit F: перенос pipeline (scrape_pipeline) в пакет
scraper-kit E: консолидация бисекции цены (4 копии → pricing/bisection.py)
scraper-kit D: перенос провайдеров (avito/cian/yandex/domclick)
scraper-kit C: перенос core-слоя в пакет
scraper-kit B: Protocol-границы (matcher/config/session/jobs) + adapters
market I: contract-view market.v_* поверх producer-таблиц
scrapers K: fix _unix_to_date TZ-inconsistency (3 копии MSK/UTC/naive)
scraper-kit A: скаффолд пакета + workspace-подключение
[EPIC] market — контракт данных скрапперов для внешних потребителей
[EPIC] scraper-kit — внутренний код-пакет монорепо (консолидация скрапперов)
trade-in/v2: UI/UX аудит — round 2 (системный контраст · честность чисел: дедуп/фильтр/адрес · a11y drawer+автокомплит)
Follow-up (live-проверка под админом на реальной оценке) → ещё 2 PR + UX-правка
После того как удалось зайти на live…