2026-07-12 - 2026-07-15
Overview
51 pull requests merged by 3 users
Merged
#2525 fix(tradein/scraper): per-city SERP location for oblast city-sweep (#12)
Merged
#2524 feat(tradein/ui): admin links to audit + analytics in UserMenu
Merged
#2523 fix(tradein/avito): route sidecar timeout/transport errors as transient, not crash
Merged
#2522 fix(tradein/audit): exclude /api/v1/admin/* from api_request events
Merged
#2521 feat(tradein/admin): audit + activity dashboards (Feature 2/3 UI)
Merged
#2520 feat(tradein/admin): audit + analytics read API over user_events
Merged
#2518 fix(tradein/estimator): analogs cards match n_analogs, no cross-source dups
Merged
#2516 fix(tradein/auth): honest 401/error screens in RouteGuard instead of misleading text
Merged
#2517 fix(tradein/quota): per-user quota override + no burn on empty result
Merged
#2519 feat(tradein/audit): request-audit middleware + estimate_request logging → user_events
Merged
#2515 feat(tradein/db): user_events table — unified login/IP audit + behavior event log
Merged
#2514 feat(tradein/ui): Telegram feedback button in Topbar (env-gated)
Merged
#2513 fix(tradein/pdf): МЕРА branding + 4-page report (no empty pages)
Merged
#2512 fix(tradein/auth): restore brusnika (user2) pilot access
Merged
#2511 feat(tradein/lead): persist 152-ФЗ proof-of-consent (LOW audit R2 #9)
Merged
#2510 fix(tradein/scheduler): re-enable deactivate_stale_domklik now that domclick sweeps run (LOW audit R2 #10)
Merged
#2509 fix(tradein/location-coef): re-center coefficient band so a strong central location ~= 1.0 (LOW audit R2 #7a)
Merged
#2508 fix(tradein/v2): location coefficient informational + price-history clarity (LOW audit R2 #7c/#8)
Merged
#2507 fix(tradein/scrapers): clamp implausible listing/publish dates (LOW audit R2 #6)
Merged
#2506 fix(tradein/pdf): scale offer-page rent by room count (LOW audit R2 #5)
Merged
#2505 fix(tradein/estimator): honest repair-note + ratio_basis label; doc EKB-calibrated constants (LOW audit R2 #1-4)
Merged
#2504 fix(tradein/geocoder): gate EKB-local tiers for non-EKB oblast addresses (#11)
Merged
#2502 fix(tradein/matching): Tier-2a city-guard для non-ЕКБ coord-less (п.2, defense-in-depth)
Merged
#2503 feat(tradein): sber-index freshness monitor (п.1 observability)
Merged
#2501 refactor(tradein): консолидировать corridor/street-deals city-scope на _resolve_target_city (п.3)
Merged
#2500 fix(tradein): oblast avito-sweep city-slug + Tier-2b geo-guard (R2, latent)
Merged
#2499 fix(tradein/v2): honesty + a11y — histogram outlier-guard, scatter-релейбл, mobile-notice, keyboard-nav (R2)
Merged
#2498 fix(tradein/rbac): энфорсить roles.yaml scope на всех non-admin путях (R2 H3 security)
Merged
#2497 fix(tradein/lead): phone digit-guard, убрать dead landing-литерал, 152-ФЗ audit (R2)
Merged
#2496 fix(tradein): ingest/scheduler integrity — year sanity, propagate geo-guard, dkp_import counters + DO UPDATE (R2)
Merged
#2495 fix(tradein): image_sanitizer — reject decompression-bomb до декода (R2 security)
Merged
#2494 fix(tradein/pdf): честность отчёта — убрать фейк-сроки, хардкод EKБ, противоречивый дисконт (R2)
Merged
#2493 fix(tradein/estimator): СберИндекс только вторичка + confidence dispersion-ceiling (R2 H1+H2)
Merged
#2492 fix(tradein/estimator): non-EKB headline из deals + geo-bound Tier-S analog leak
Merged
#2491 feat(tradein/backtest): --city per-city валидация точности + corridor city-parity
Merged
#2490 fix(tradein/estimator): резолвить target-город коридора из payload.address (C2 hotfix)
Merged
#2488 fix(tradein/estimator): city-scope ДКП-коридора + oblast city-tokens/bbox
Merged
#2489 fix(tradein): city-scope ДКП-запросы — убрать oblast-контаминацию (C1+C2)
Merged
#2487 feat(tradein/scraper): per-city sweep capability для 5 городов области (schedules disabled)
Merged
#2486 fix(tradein/dadata): suggest-fallback для house_fias_id когда CLEAN выключен
Merged
#2485 fix(tradein/estimator): per-city ценовой band ДКП-сделок для всей Свердловской обл. (66)
Merged
#2484 fix(tradein/geocoder): раз-хардкод геокодера/DaData на всю Свердловскую обл. (region 66)
Merged
#2483 fix(tradein/v2): аналитика — выровнять два графика в равную высоту
Merged
#2482 fix(tradein/ingest): раз-хардкод rosreestr DKP импорта на всю Свердловскую обл. (region 66)
Merged
#2481 fix(tradein/v2): честность+консистентность — реконсиляция счётчика аналогов, убрать фейк-donut/линейку, outlier-guard, created_at, дисклеймеры
Merged
#2480 fix(tradein/v2): аналитика — 2 графика в ряд, чтобы Цена×срок влезала на экран
Merged
#2479 fix(tradein/v2): polish АНАЛИТИКА — растянуть scatter, клэмп оси к 0, честные легенды/бакеты, убрать фейк-тренд
Merged
#2478 feat(tradein/v2): карта вторички — сделки Росреестра + объявления по источникам (SourcesView)
Merged
#2477 fix(tradein): repoint rosreestr_poll to /data-sets/ + verify Content-Type (СДЕЛКИ dataset moved off /opendata)
Merged
#2476 feat(tradein): fill houses.year_built/material_walls from ДОМ.РФ КР1.1/1.2 + zhkh_year, propagate to listings (#2013)
Merged
#2475 tech-debt(tradein/estimator): collapse won estimate_* flags into defaults (#1970)
7 unresolved conversations
Open
#2464
EPIC: exhaustive line-by-line аудит backend ПТИЦЫ (2026-07-07) — 89 подтверждённых находок
Open
#9
Stage 2c: Интеграция Site Finder ↔ Generative + подача в реестр ПО
Open
#2376
backend: POST /api/v1/trade-in/lead + persist (parent #1971)
Open
#2013
[tradein][avito] year_built = 0% — источник не отдаёт год постройки (потолок ~1.7% через houses-catalog)
Open
#2214
[P1] Observability: off-box uptime-probe + fail health-check на dead backend + mem-лимиты + log-rotation
Open
#2087
trade-in/v2: data-contract — рассинхрон счётчика источников / ratio-vs-медианы / базы торга + кросс-source дедуп (из аудита #2081)
Open
#1970
[tradein][tech-debt] Flag sprawl: ~40 estimate_* флагов, матрица взаимодействий непротестирована → паралич правок