gendesign/tradein-mvp/backend/tests
bot-backend c1918b404d
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / changes (pull_request) Successful in 9s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m46s
test(tradein/avito): тест закреплял отсутствие проводки пула
`assert_called_once_with(source=..., endpoint=...)` требует, чтобы других
аргументов у вызова НЕ БЫЛО. Тем самым тест закреплял ровно тот дефект, который
чинит этот PR: браузерный фетчер обязан был строиться без проводки пула, иначе
CI краснел.

Заменено на проверку вхождения: source и endpoint по-прежнему сверяются, плюс
явно требуется наличие proxy_provider/use_pool/environment — то, без чего
прогон уходит мимо пула (proxy_lease_id=None, 5 блоков из 5 при здоровом пуле).

Прогон: 277 тестов зелёные, ruff чист.
2026-08-27 16:16:26 +03:00
..
core feat(tradein/scraper): cooperative SIGTERM-drain for graceful deploy (#1182 Phase 2) 2026-06-28 19:52:09 +03:00
fixtures fix(tradein/avito): починить чтение параметров, добавить metro/is_homeowner/days_on_market 2026-08-21 23:36:19 +03:00
matching fix(tradein/yandex): снести признак «панорама» — его нет на площадке (#2851) 2026-08-12 20:44:11 +00:00
scrapers fix(tradein/avito): повтор после блока терял прокси и уходил с адреса машины 2026-08-27 15:33:29 +03:00
scripts chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
services test(3051): tests/services/test_location_index.py переведён на _covered_region 2026-08-26 18:47:29 +05:00
support chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
tasks test(tradein/avito): тест закреплял отсутствие проводки пула 2026-08-27 16:16:26 +03:00
__init__.py feat(tradein): avito_imv.py — Avito IMV evaluation API client (2 requests) (#444) 2026-05-23 12:16:47 +00:00
conftest.py feat(mera/b2c): анти-абуз для анонимного трафика — этап 2 из 8 (#2546) 2026-08-25 16:27:02 +00:00
skip_allowlist.txt fix(tests): объявить два живых теста #3063 в skip_allowlist (#3069) 2026-08-23 22:14:49 +00:00
test_781_quality_gate.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_930_scheduler_resume_checkpoint.py feat(tradein/scheduler): планировщик подхватывает чекпоинт оборванного прогона (#930) (#2845) 2026-08-12 18:51:02 +00:00
test_1781_secondary_only_param.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_2625_run_that_did_nothing.py fix(tradein/scraper): прогон, у которого отказал каждый якорь, перестаёт быть успехом (#2625) (#2813) 2026-08-10 09:36:23 +00:00
test_2657_domclick_proxy_pool.py fix(tradein/domclick): свип ходит через прокси-пул, а отказ узла не обнуляет прогон (#2657) (#2796) 2026-08-09 17:21:49 +00:00
test_2670_stale_source_digest.py fix(tradein/scraper): сводка «что сейчас не собирает» — лестница вех не видит стрик 0 (#2670) (#2806) 2026-08-10 08:29:26 +00:00
test_2670_streak_and_partial_coverage.py fix(tradein/domclick): свип ходит через прокси-пул, а отказ узла не обнуляет прогон (#2657) (#2796) 2026-08-09 17:21:49 +00:00
test_2674_avito_full_load_coverage.py fix(tradein/avito): верное объяснение границы окна и критерий приёмки по глубине (#2674) 2026-08-06 04:09:05 +05:00
test_2674_dead_admin_metrics.py fix(tradein/quality): витрина перестаёт рапортовать «доля с кадастром» (#2674) (#2850) 2026-08-12 20:37:16 +00:00
test_2674_writers_honor_schema.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_2677_house_anchor_repair_basis.py fix(tradein/estimate): домовой IMV-якорь приводится к базису ремонта квартиры (#2677) (#2816) 2026-08-12 20:17:10 +00:00
test_2678_house_type_canon.py fix(tradein/houses): camelCase-типы домов приводятся к канону у источника (#2678) (#2719) 2026-08-06 09:55:54 +00:00
test_2686_ban_kind_split.py fix(tradein/scraper): диагноз бана перестаёт назначаться по умолчанию (#2764) (#2765) 2026-08-06 23:17:59 +00:00
test_2687_domclick_ban_kind.py fix(tradein/domclick): распознанный QRATOR-блок свипа — ban_kind='platform', не 'unknown' (#2687) (#2832) 2026-08-12 20:55:05 +00:00
test_2687_pool_exhaustion_keeps_checkpoint.py fix(tradein/scraper): пустой пул прокси перестаёт стирать чекпоинт полного обхода (#2834) 2026-08-12 12:18:03 +00:00
test_2698_imv_sidecar_wiring.py fix(tradein/imv): домовая оценка ходит в сайдкар через пул, а не через чужой env-прокси (#2698) (#2708) 2026-08-06 06:52:15 +00:00
test_2700_cian_detail_403_node.py fix(tradein/cian): 403 снимает узел с выдачи, а не гаснет в return None (#2700) (#2821) 2026-08-10 11:29:19 +00:00
test_2702_run_timestamps.py fix(tradein/scraper): отметки времени прогона перестают замерзать в его же транзакции (#2702) (#2718) 2026-08-06 09:55:50 +00:00
test_2703_zero_result_watchdog.py fix(tradein/scraper): сторож «ноль результатов» перестаёт читать «не измерено» как ноль (#2703) (#2713) 2026-08-06 08:28:59 +00:00
test_2723_browser_probe.py fix(tradein/proxy): проба спрашивает каждую площадку, вердикт пишется на пару «узел × источник» (#2800 B) (#2803) 2026-08-09 18:28:37 +00:00
test_2725_heartbeat_in_batch.py fix(tradein/cian): показать, ЧТО пришло вместо состояния ЖК-страницы, и честно закрывать нулевой прогон (#2767) (#2768) 2026-08-07 08:06:25 +00:00
test_2731_listing_sources_timestamps.py fix(tradein/matching): listing_sources датируется построчно, а не стартом транзакции (#2731) (#2743) 2026-08-06 16:35:29 +00:00
test_2731_observation_timestamps.py fix(tradein/scrapers): метка наблюдения — время строки, а не старта транзакции (#2731) (#2742) 2026-08-06 16:19:56 +00:00
test_2764_ban_kind_no_default.py fix(tradein/scraper): диагноз бана перестаёт назначаться по умолчанию (#2764) (#2765) 2026-08-06 23:17:59 +00:00
test_2767_cian_waf_block.py fix(tradein/cian): Циан переименовал MFE карточки ЖК — читать оба имени (#2767) (#2804) 2026-08-09 18:41:02 +00:00
test_2767_newbuilding_parse_miss.py fix(tradein/newbuilding): счётчики записи различают вставку и обновление (#2807) (#2809) 2026-08-10 08:50:56 +00:00
test_2800_per_source_probe.py fix(tradein/proxy): проба Домклика спрашивает защищённый путь, а не robots.txt (#2855) (#2856) 2026-08-13 06:02:38 +00:00
test_2807_write_counters_honesty.py fix(tradein/newbuilding): счётчики записи различают вставку и обновление (#2807) (#2809) 2026-08-10 08:50:56 +00:00
test_2830_pool_bypass_tails.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_2857_search_mv_placeholder_columns.py chore(tradein/db): убрать три колонки-заглушки витрины поиска (#2857) (#2858) 2026-08-13 07:25:43 +00:00
test_2860_yandex_sweep_run_status.py fix(tradein): фильтр выдачи Яндекса мёртв — slug ЖК ищем по странице объекта (#2860) (#2923) 2026-08-19 08:37:40 +00:00
test_2899_market_percentile.py feat(tradein): позиция квартиры внутри когорты аналогов — перцентиль (#2899) (#2926) 2026-08-19 10:08:18 +00:00
test_2924_yandex_resolve_tried_at.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_2936_unknown_attr_penalty.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_2953_nominatim_throttle.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_2992_upsert_unchanged_gate.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_2996_mislocated_houses_watchdog.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_3033_avito_native_secondary_filter.py feat(tradein/avito): путь вторички для якорного и citywide-обхода (#3033, follow-up) (#3042) 2026-08-21 15:33:22 +00:00
test_3036_detail_house_params_to_houses.py feat(tradein/avito): house-поля с детальной страницы доезжают в houses (#3036) (#3040) 2026-08-21 14:48:36 +00:00
test_3044_avito_439_classified_as_block.py fix(avito): считать HTTP 439 блокировкой, а не концом выдачи (#3065) 2026-08-23 21:49:35 +00:00
test_3044_enriched_result_key.py fix(tradein/observability): результат detail-бэкфиллов доезжает до колонки total_seen (#3044) 2026-08-26 12:23:19 +05:00
test_3045_detail_backfill_browser_proxy.py fix(tradein/avito): браузерный бэкфилл ходил мимо пула прокси 2026-08-27 15:58:26 +03:00
test_3051_houses_region_code.py feat(tradein/matching): region_code у houses — вывод, а не выдумка (#3051 п.4) 2026-08-27 13:51:48 +05:00
test_3051_region_registry.py feat(tradein/geo): реестр регионов — единственный источник гео-границ (#3051, шард 1a) 2026-08-26 18:39:28 +05:00
test_3063_pro_seller_from_agency.py feat(tradein/yandex): is_pro_seller выводится из агентского блока + бэкфилл 4469 строк (#3063 п.2) 2026-08-26 12:48:18 +05:00
test_3063_seller_fields_not_eroded.py fix(scraper-kit): бедный re-scrape больше не стирает признаки продавца (#3067) 2026-08-23 21:52:38 +00:00
test_3074_avito_anchor_checkpoint.py feat(tradein/scraper): чекпоинт по якорям для avito_city_sweep (#3074) 2026-08-26 14:52:46 +03:00
test_3074_checkpoint_survives_claim.py fix(tradein/scheduler): чекпоинт предшественника переживает обрыв до первой новой корзины (#3074) 2026-08-26 12:35:44 +05:00
test_3074_cian_anchor_checkpoint.py feat(tradein/scraper): чекпоинт по якорям для cian_city_sweep (#3074) 2026-08-26 17:21:58 +03:00
test_3074_yandex_sweep_checkpoint.py feat(tradein/yandex): чекпоинты для yandex_city_sweep — combo как единица возобновления (#3074) 2026-08-26 12:43:58 +05:00
test_3082_estimate_concurrency_cap.py feat(tradein/estimate): потолок одновременных оценок — 4 слота, быстрый 429 (#3082) 2026-08-26 12:29:31 +05:00
test_3118_domclick_checkpoint.py feat(tradein/domclick): чекпоинты для city_sweep — корзина как единица возобновления (#3118, #3074) 2026-08-27 16:52:44 +05:00
test_3122_boot_reap.py feat(tradein/scheduler): boot-reap — прогоны предыдущего контейнера снимаются на старте (#3122) 2026-08-27 14:17:42 +05:00
test_account_quota.py feat(mera/b2c): анти-абуз для анонимного трафика — этап 2 из 8 (#2546) 2026-08-25 16:27:02 +00:00
test_admin_cian_session_endpoints.py fix(tradein/admin): развести исходы проверки кук — бан не равен «плохим кукам» (#2829) 2026-08-11 06:08:16 +00:00
test_admin_proxies.py fix(tradein/proxy): backup-узел должен быть пригоден + рычаг снятия бана (#2600 п.2) 2026-08-05 17:45:07 +05:00
test_admin_scrape_avito_proxy_provider.py fix(tradein/scraper): подключить браузерный путь Авито к пулу прокси 2026-08-02 17:31:00 +03:00
test_admin_ssrf.py chore(tradein): полное выключение источника n1 — миграция 165 + вычистка backend/ops (#2204) 2026-07-03 10:08:56 +03:00
test_admin_stale_counters.py fix(tradein): сегментный гард в «медианном торге», свежесть в индексе локации, честные админ-счётчики (#2660) 2026-08-05 22:39:48 +05:00
test_alerts_become_events.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_api_avito_stage4a.py fix(tradein): single-run guard на avito-city-sweep admin-endpoint (#874) 2026-05-31 08:55:33 +00:00
test_asking_sold_ratio_cache_poison.py fix(tradein/estimator): savepoint+retry вокруг ratio-lookup — transient не гасит expected_sold (#2265) 2026-07-03 10:19:57 +03:00
test_asking_to_sold_ratio.py Merge origin/main into fix/2656-anchor-ratio-freshness — конфликты: метки #2656→#2661 (main), импорт-union, baseline unrecorded=0 (перезахваченная фикстура) 2026-08-26 18:22:54 +05:00
test_audit_api.py fix(tradein/auth): отказ по насыщению — до выборки из БД и с агрегированным следом (#2715) (#2734) 2026-08-06 14:27:26 +00:00
test_auth_api.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_auth_dsn_from_parts.py feat(tradein): DSN к БД auth собирается из AUTH_DB_PASSWORD, а не дублирует секрет 2026-08-02 12:05:41 +03:00
test_auth_session.py feat(tradein): переключаемый реестр людей — подготовка переезда «Меры» в БД auth [PR-2b/6] 2026-08-01 02:50:14 +03:00
test_avito_backfill_cadence.py fix(tradein/avito): бэкфилл простаивал 23 часа из 24 — каденс был суточным 2026-08-22 14:57:20 +03:00
test_avito_detail_fields_3047.py chore(tradein/avito): ссылки на реальный issue #3047 вместо выдуманного номера 2026-08-21 23:40:22 +03:00
test_avito_detail_publish_date_year_rollover.py fix(tradein/scrapers): детекция дрейфа разметки вместо тихой пустоты (#2535) 2026-07-26 22:33:54 +00:00
test_avito_imv_parse.py chore(tradein/scraper-kit): удалить 5 orphaned legacy-модулей (#2277 финальный шаг, частичный) 2026-07-04 10:41:46 +03:00
test_avito_newbuilding_sweep.py chore(tradein/scrapers): удалить весь legacy scrapers/ каталог — final E (#2397, #2277) 2026-07-04 15:58:15 +03:00
test_avito_offers_per_page.py fix(tradein/avito): страница SERP отдаёт 60 карточек, а не 50 2026-08-21 17:38:55 +03:00
test_avito_serp_city_slug.py fix(tradein/oblast): city-slug в avito SERP + geo/city guard в Tier-2b матчинга 2026-07-12 22:38:11 +03:00
test_avito_sweep_dom_drift.py fix(tradein/proxy): доводить сигнал бана площадки до пула (#2600 п.1) (#2653) 2026-08-05 11:37:35 +00:00
test_backfill_external_valuations_house_id.py fix(tradein/data): external_valuations.house_id — резолв в write-path + идемпотентный бэкфилл (#2236) 2026-07-03 09:22:44 +03:00
test_backfill_honest_status.py fix(tradein/scrapers): не путать rows_inserted/processed с честным результатным ключом 2026-08-15 18:49:37 +03:00
test_backfill_wave2.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_backtest_estimator.py feat(tradein/backtest): --city per-city валидация + corridor city-parity 2026-07-12 20:49:04 +03:00
test_backtest_fixture_roundtrip.py fix(tradein/estimate): не строить цену по одному-двум аналогам, не отдавать 0 ₽ (#2629) 2026-08-02 12:41:48 +00:00
test_backtest_regression_gate.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_buildings_api.py fix(tradein/sale-share): гард по этажности — отсечь near-neighbor mis-match 2026-06-29 00:31:09 +03:00
test_captcha_vs_empty_detect.py fix(tradein/proxy): доводить сигнал бана площадки до пула (#2600 п.1) (#2653) 2026-08-05 11:37:35 +00:00
test_ceiling_height_unify_2699.py fix(tradein): свести высоту потолков к одной колонке ceiling_height_m (#2779) 2026-08-07 09:18:48 +00:00
test_cian_bti_house_persist.py fix(tradein/matching): город развёртки доезжает до стража Tier-2a — межгородские склейки домов (#2777) (#2808) 2026-08-10 08:51:14 +00:00
test_cian_city_sweep.py refactor(tradein/scrapers): удалить legacy scrape_pipeline.py + тест-хирургия (#2397 Part E1) 2026-07-04 13:56:06 +03:00
test_cian_history_backfill_listings_rollback.py fix(tradein): откат транзакции в backfill + неотрицательный счётчик квот (#2538) 2026-07-26 22:21:08 +00:00
test_cian_serp_offers_total_mismatch.py fix(tradein/scrapers): детекция дрейфа разметки вместо тихой пустоты (#2535) 2026-07-26 22:33:54 +00:00
test_cian_session.py fix(tradein/scrapers): egress по источнику из пула с учётом банов, а не статичный env (#2831) 2026-08-11 06:29:48 +00:00
test_cian_state_parser.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_cian_views_parse.py fix(tradein/yandex): просмотры режутся по разделителю тысяч + Циан молчит о непонятой фразе (#2669) (#2773) 2026-08-07 08:44:48 +00:00
test_city_sweep.py feat(tradein): вся Свердловская область — 40 городов в city-sweep (#2879) 2026-08-13 19:08:44 +00:00
test_config_avito_rotations.py fix(avito): proactive IP rotate at sweep start + raise max_rotations 2->4 (Datadome ban recovery) 2026-06-17 23:35:24 +03:00
test_consent_text_frontend_sync.py fix(tradein/lead): кликабельная ссылка на политику ПДн в чекбоксе согласия 2026-08-14 15:29:49 +03:00
test_coverage_probe_endpoint.py fix(mera/b2c): житель Серова получал «вы вне области», а подсказки игнорировали выбранный город 2026-08-16 13:03:19 +03:00
test_data_erasure.py fix(tradein/privacy): нормализация телефона к каноническому РФ-виду при erasure (#2547) 2026-08-06 19:59:34 +03:00
test_deactivate_stale_avito.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_deactivate_stale_deactivation_cap.py feat(tradein/deactivate-stale): страховочные рельсы объёма снятия (#3066) 2026-08-24 08:44:32 +00:00
test_deactivate_stale_floor_degradation.py feat(tradein/deactivate-stale): страховочные рельсы объёма снятия (#3066) 2026-08-24 08:44:32 +00:00
test_deactivate_stale_health_gate.py fix(tradein): TTL-деактивация не исполняется, пока сбор по источнику лежит (#2659) (#2710) 2026-08-06 08:40:41 +00:00
test_deactivate_stale_listings.py fix(tradein/deactivate): resolve migration 264 renumber collision on merge with main 2026-08-15 21:13:41 +03:00
test_deactivate_stale_revisit_floor.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_deactivate_stale_ttl_cap.py docs(tradein/deactivate): убрать неверное число из обоснования потолка 2026-08-15 21:00:42 +03:00
test_dead_code_sweep_2674.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_deals_freshness_monitor.py refactor(tradein/scheduler): удалить legacy scheduler_loop + scraper-scheduling, kit единственный путь (#2397 Part C) 2026-07-04 13:00:30 +03:00
test_deals_sanitize.py fix(tradein): Mera-audit fix-2 — _is_plausible_deal floor edge + area/price guards 2026-06-21 09:04:54 +03:00
test_dkp_corridor_as_of_2846.py fix(tradein/dkp): «ФАКТИЧЕСКИЕ СДЕЛКИ» называют свой возраст, а не окно поиска (#2847) 2026-08-12 18:51:10 +00:00
test_domclick_admin_apis.py feat(tradein/domclick): cookie-injection MVP для обхода QRATOR-блока (#2000) (#2433) 2026-07-04 17:49:40 +00:00
test_domclick_session.py feat(tradein/domclick): cookie-injection MVP для обхода QRATOR-блока (#2000) (#2433) 2026-07-04 17:49:40 +00:00
test_domclick_sweep.py feat(tradein/domklik): ЖК в свою колонку вместо только raw_payload (#3076) 2026-08-24 16:04:24 +00:00
test_domrf_kapremont_loader.py fix(tradein/ingest): 4 data-integrity дефекта в бэкфилле годов и импорте ДКП 2026-07-12 22:12:31 +03:00
test_ekb_geoportal_ingest.py chore(tradein/geocoder): удалить Яндекс-геокодер (#2593) 2026-07-31 21:22:09 +03:00
test_estimate_consent_gate.py chore(tradein/privacy): перенумерация миграций и merge main - разблокировка PR (#2547) 2026-08-06 15:56:02 +03:00
test_estimate_external_sources_background.py feat(tradein/estimate): внешние оценки не ждутся в запросе — 9 секунд превращаются в 1 2026-08-22 15:51:31 +03:00
test_estimate_idor.py feat(tradein): позиция квартиры внутри когорты аналогов — перцентиль (#2899) (#2926) 2026-08-19 10:08:18 +00:00
test_estimate_rate_limit.py feat(mera/b2c): анти-абуз для анонимного трафика — этап 2 из 8 (#2546) 2026-08-25 16:27:02 +00:00
test_estimate_revival.py fix(tradein/estimate): отдавать фактический радиус подбора, а не выбор пользователя (#2835) 2026-08-12 12:48:18 +00:00
test_estimator_analogs_display_consistency.py fix(tradein/estimator): displayed analog cards match n_analogs + cross-source dedup (#2518) 2026-07-13 20:19:20 +00:00
test_estimator_anchor_dedup_gap_2265.py fix(tradein/estimator): дедуп кросс-source дублей в anchor-пути (#2265 follow-up) (#2311) 2026-07-03 20:35:37 +00:00
test_estimator_audit_fixes.py fix(tradein/sber): сторож мерит отставание загрузки, а не календарь (#2846) (#2849) 2026-08-12 19:36:20 +00:00
test_estimator_cian_budget.py fix(tradein): budget Cian valuation call to stop 25s estimate stalls 2026-06-19 12:43:28 +03:00
test_estimator_cian_integration.py chore(tradein/scrapers): удалить весь legacy scrapers/ каталог — final E (#2397, #2277) 2026-07-04 15:58:15 +03:00
test_estimator_client_coords.py feat(tradein): estimate accepts client-provided coords, skips geocode (Variant A) 2026-06-19 14:15:02 +03:00
test_estimator_cohort.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_estimator_confidence_reliability_consistency.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_estimator_deals_headline_fallback_oblast_d.py fix(tradein/estimate): не строить цену по одному-двум аналогам, не отдавать 0 ₽ (#2629) 2026-08-02 12:41:48 +00:00
test_estimator_dedup_cross_source_2087.py chore(tradein): разбор мёртвого кода — подключить, удалить или задокументировать (#2674) 2026-08-06 05:00:36 +05:00
test_estimator_enrich.py fix(tradein/estimator): честная маркировка quarter-precision дат ДКП + insufficient_data флаг для sell-time-sensitivity (#1995) (#2355) 2026-07-04 00:14:02 +00:00
test_estimator_event_loop_2207.py perf(tradein): снять блокировку event loop на POST /estimate (#2207) (#2225) 2026-07-02 20:39:48 +00:00
test_estimator_expected_sold.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_estimator_expected_sold_clamp.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_estimator_floor_optional.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_estimator_ghost_anchor_1871.py tech-debt(tradein/estimator): collapse won estimate_* flags into defaults (#1970) (#2475) 2026-07-12 12:46:18 +00:00
test_estimator_ghost_anchor_radius_empty_1871.py fix(estimator): ghost-anchor — confidence='low' when radius analogs empty (#1871) (#1920) 2026-06-26 16:07:12 +00:00
test_estimator_headline_sufficiency.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_estimator_hedonic.py fix(tradein/estimator): rebase ground-floor hedonic term onto current main (#2002, #2382) (#2391) 2026-07-04 07:33:37 +00:00
test_estimator_implausible_year.py fix(tradein/estimate): не применять хедонику к неправдоподобному году постройки 2026-08-02 14:04:11 +03:00
test_estimator_imv_blend.py fix(tradein/estimate): не строить цену по одному-двум аналогам, не отдавать 0 ₽ (#2629) 2026-08-02 12:41:48 +00:00
test_estimator_imv_budget.py feat(mera/b2c): анти-абуз для анонимного трафика — этап 2 из 8 (#2546) 2026-08-25 16:27:02 +00:00
test_estimator_imv_integration.py feat(tradein/estimator): switch core valuation call sites to scraper_kit (#2337) 2026-07-04 02:40:34 +03:00
test_estimator_kitchen_ceiling_2012.py fix(tradein/estimator): kitchen_area_m2/ceiling_height_m/is_apartments comp-scoring (#2012) (#2396) 2026-07-04 08:33:17 +00:00
test_estimator_manual_review.py tech-debt(tradein/estimator): collapse won estimate_* flags into defaults (#1970) (#2475) 2026-07-12 12:46:18 +00:00
test_estimator_n_analogs_priced.py fix(tradein/estimate): не строить цену по одному-двум аналогам, не отдавать 0 ₽ (#2629) 2026-08-02 12:41:48 +00:00
test_estimator_null_floor_timeout.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_estimator_premium_building.py feat(tradein): AI-curated premium-building overlay — class + false-positive demotion (#2002) 2026-06-27 18:43:05 +00:00
test_estimator_price_spine.py fix(tradein/estimate): залипший anchor_tier молча глушил IMV-blend и quarter-index 2026-08-17 10:54:07 +03:00
test_estimator_price_trend_dedup.py tech-debt(tradein/estimator): collapse won estimate_* flags into defaults (#1970) (#2475) 2026-07-12 12:46:18 +00:00
test_estimator_pure_units.py chore(ci): деплой на изменение ролей, ruff-гейт для МЕРЫ, удаление мёртвого workflow 2026-08-06 21:34:36 +03:00
test_estimator_quarter_from_own_coords.py fix(tradein/estimate): не подставлять квартал соседа вместо квартала цели (#2839) 2026-08-12 15:55:24 +00:00
test_estimator_quarter_index.py fix(tradein/estimate): нет индекса у аналогов — нет квартальной поправки (#2583 C3) 2026-08-12 19:18:01 +05:00
test_estimator_radius_dedup_1871.py tech-debt(tradein/estimator): collapse won estimate_* flags into defaults (#1970) (#2475) 2026-07-12 12:46:18 +00:00
test_estimator_radius_floor.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_estimator_radius_m_2044.py fix(tradein): честный радиус поиска аналогов на карте v2 (#2632) (#2643) 2026-08-05 06:13:58 +00:00
test_estimator_range_floor.py fix(tradein/estimate): не строить цену по одному-двум аналогам, не отдавать 0 ₽ (#2629) 2026-08-02 12:41:48 +00:00
test_estimator_ratio_savepoint_retry_2265.py fix(tradein/estimator): savepoint+retry вокруг ratio-lookup — transient не гасит expected_sold (#2265) 2026-07-03 10:19:57 +03:00
test_estimator_ratio_tier_fix.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_estimator_repair_coef.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_estimator_sber_time_adjust.py test(tradein): fix #794 test regressions on main (broken by #919 early squash-merge) (#921) 2026-05-31 19:05:10 +00:00
test_estimator_search_radius_2632.py fix(tradein/estimate): отдавать фактический радиус подбора, а не выбор пользователя (#2835) 2026-08-12 12:48:18 +00:00
test_estimator_segment_multiplier.py fix(tradein/estimate): не строить цену по одному-двум аналогам, не отдавать 0 ₽ (#2629) 2026-08-02 12:41:48 +00:00
test_estimator_source_metrics_2043.py fix(tradein/v2): canonical sources_used — kill «ИСТОЧНИКОВ X/7» POST↔GET desync 2026-07-02 17:22:20 +03:00
test_estimator_source_quota.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_estimator_split_corridor_1871.py tech-debt(tradein/estimator): collapse won estimate_* flags into defaults (#1970) (#2475) 2026-07-12 12:46:18 +00:00
test_estimator_tier_s_house_boundary.py fix(tradein/estimator): граница номера дома в подборе аналогов «тот же дом» (#2534) 2026-07-26 22:07:00 +00:00
test_estimator_yandex_integration.py fix(tradein/yandex): снести признак «панорама» — его нет на площадке (#2851) 2026-08-12 20:44:11 +00:00
test_extract_short_addr.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_extval_house_id_write_path.py chore(tradein/scrapers): удалить весь legacy scrapers/ каталог — final E (#2397, #2277) 2026-07-04 15:58:15 +03:00
test_freshness_filter_2656.py test(2656): краснота на main — по значению, не ImportError 2026-08-26 18:25:54 +05:00
test_gar_flats_loader.py fix(tests): починить и вычистить проверки, которые не исполнялись ни разу (#2744) 2026-08-06 16:57:28 +00:00
test_geo_precision.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_geocode_reverse_api.py chore(tradein/geocoder): удалить Яндекс-геокодер (#2593) 2026-07-31 21:22:09 +03:00
test_geocoder_bbox.py chore(tradein/geocoder): удалить Яндекс-геокодер (#2593) 2026-07-31 21:22:09 +03:00
test_geocoder_cadastral_matcher.py fix(tradein/geocoder): строгий матч литеры дома + починка DaData region-фильтра (#2622) 2026-08-02 12:06:44 +00:00
test_geocoder_city_hint.py fix(tradein/geocode): гейт мусорного города вынести в общий хелпер и прошить в admin-путь (#2603) 2026-08-05 20:20:41 +05:00
test_geocoder_city_substitution.py fix(tradein/geocoder): инвариант «чужой топоним + результат внутри ЕКБ = недостоверно» (#2590) (#2837) 2026-08-12 14:26:58 +00:00
test_geocoder_local_houses_fallback.py fix(tradein/geocoder): stop apt number leaking into house + houses bbox/sibling guard 2026-08-15 18:50:17 +03:00
test_geocoder_nominatim_lookup.py chore(tradein/geocoder): удалить остатки скриптов Яндекс-геокодера, часть 3 (#2593) 2026-07-31 23:16:19 +03:00
test_glitchtip_webhook.py feat(tradein/ops): приёмник GlitchTip webhook-алертов в Telegram-тему 2026-08-15 22:39:44 +03:00
test_health_endpoint.py fix(health): HEAD /health на верном бэкенде (Site Finder) + честные заголовки 2026-08-15 18:44:31 +03:00
test_history_scope.py feat(tradein/history): вернуть все параметры оценки в GET /history (#2420) 2026-07-04 13:09:22 +00:00
test_honest_run_status_failed_ratio.py fix(tradein/scrapers): не путать rows_inserted/processed с честным результатным ключом 2026-08-15 18:49:37 +03:00
test_house_dedup_merge.py fix(tradein/dedup): остаток схлопывания домов становится измеряемым числом, а не оценкой (#2690) (#2820) 2026-08-10 11:18:19 +00:00
test_house_imv_backfill_browser_flag.py feat(tradein-imv): route IMV backfill через BrowserFetcher.fetch_json за dormant-флагом (#915 Stage 3) (#1916) 2026-06-26 09:54:28 +00:00
test_house_imv_params_honesty.py fix(tradein/imv): «временная» ошибка снова временная — 1390 домов возвращаются в очередь (#2843) 2026-08-12 16:06:24 +00:00
test_house_imv_retry_stuck.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_identity_store.py feat(tradein): DSN к БД auth собирается из AUTH_DB_PASSWORD, а не дублирует секрет 2026-08-02 12:05:41 +03:00
test_impersonate_single_source.py fix(tradein/scraper-kit): actualize avito fingerprint - impersonate/Sec-Fetch-Site/referer/cookie-check 2026-08-21 17:02:53 +03:00
test_insufficient_data_flag.py feat(tradein): insufficient_data flag on AggregatedEstimate (#697) (#734) 2026-05-30 14:40:04 +00:00
test_internal_auth_secret.py fix(tradein/tests): тесты авторизации проверяют настоящий guard + реальный рендер PDF (#2541) 2026-07-26 23:04:43 +00:00
test_kit_browser_fetcher_proxy_pool.py fix(tradein/proxy): доводить сигнал бана площадки до пула (#2600 п.1) (#2653) 2026-08-05 11:37:35 +00:00
test_kit_serp_proxy_pool.py chore(tradein): удалить мёртвые mobileproxy env-переменные и rotate-ip (#2616 шаги 2-3) (#2650) 2026-08-05 09:35:54 +00:00
test_listing_segment_upsert_selfheal.py fix(tradein/scraper): listing_segment самочинится при upsert вместо вечного NULL 2026-08-15 22:28:05 +03:00
test_listing_source_snapshot.py fix(tradein): убрать невыводимые события, развести «снято» и «протухло» (#2674) 2026-08-06 03:01:05 +05:00
test_listings_city_from_sweep.py fix(tradein): бэкфилл-чистка неверных oblast-меток city для yandex/cian (#2628) (#2646) 2026-08-05 07:13:28 +00:00
test_location_index_endpoint.py fix(tradein/location): заменить сломанный коэффициент локации на калиброванный индекс (#2531) 2026-07-26 21:48:15 +00:00
test_matching.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_matching_tier_reachability_2674.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_me_brand.py feat(tradein/v2): реальный display-профиль в TopNav через /me (#2046) 2026-07-03 22:55:12 +03:00
test_metrics.py feat(observability): /metrics в обоих бэкендах — счётчики, задержка, дашборд 2026-08-26 11:30:18 +03:00
test_migration_164_yandex_url_canonicalize.py fix(tradein/data): yandex url-дубли — дедуп-миграция + инвариант + корень (#2235) 2026-07-03 09:39:29 +03:00
test_migration_165_remove_n1_source.py chore(tradein): полное выключение источника n1 — миграция 165 + вычистка backend/ops (#2204) 2026-07-03 10:08:56 +03:00
test_migration_189_account_estimate_usage_nonnegative.py fix(tradein): откат транзакции в backfill + неотрицательный счётчик квот (#2538) 2026-07-26 22:21:08 +00:00
test_migration_191_account_quota_unlimited_flag.py feat(tradein/auth): восстановить доступ praktika + безлимит через данные вместо хардкода (#2544) 2026-07-26 23:29:53 +00:00
test_migration_197_backfill_listings_city_from_url.py fix(tradein/geocode): бэкфилл listings.city из слага города в URL Авито (#2594) 2026-08-01 01:46:03 +03:00
test_migration_200_region_code_foreign_cities.py fix(tradein/data): убрать ложный region_code=66 у объявлений чужих городов (#2604) 2026-08-01 21:52:00 +03:00
test_migration_201_purge_dead_mobileproxy_proxies.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_migration_204_cian_oblast_sweeps_secondary.py fix(tradein/scraper): исключить Верхнюю Пышму из вторички Циана — грязная городская метка 2026-08-02 14:07:56 +03:00
test_migration_205_sales_vs_listings_city_filter.py fix(tradein/ui): городской фильтр в витрине «сделки против объявлений» (#2583 H4) (#2627) 2026-08-02 11:54:33 +00:00
test_migration_206_scrape_schedules_cut_wasteful_load.py chore(tradein/scraper): срезать бесполезную нагрузку — темп cian_full_load и джобы с нулевым выходом 2026-08-02 16:51:08 +03:00
test_migration_211_sales_vs_listings_segment_guard.py fix(tradein): сегментный гард в «медианном торге», свежесть в индексе локации, честные админ-счётчики (#2660) 2026-08-05 22:39:48 +05:00
test_migration_257_yandex_source_url_backfill.py fix(tradein/yandex): 3535 source_url ведут на сайт застройщика — переписываем из offerId (#2840) 2026-08-12 15:33:31 +00:00
test_migration_262_oblast_city_sweeps_wave2.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_migration_numbering.py fix(tradein): гейт номеров миграций берёт эталон из git, ручной манифест удалён 2026-08-07 14:35:28 +05:00
test_paid_retention_text_consistency.py fix(tradein/payments): pre-flight должен ловить аномалию, не штатное состояние (review PR #2754) 2026-08-06 22:49:09 +03:00
test_password.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_password_call_sites.py test(tradein/auth): правило про синхронную сверку — сторожем, а не комментарием (#2715) (#2735) 2026-08-06 14:35:32 +00:00
test_payments_notification.py fix(tradein/payments): строгий разбор нотификации и отказ вместо догадок на враждебном входе 2026-08-06 15:48:57 +03:00
test_payments_receipt.py feat(tradein/payments): подпись Token, клиент Т-Банка и сборка чека (#2733) 2026-08-06 12:36:57 +00:00
test_payments_token.py fix(tradein/payments): строгий разбор нотификации и отказ вместо догадок на враждебном входе 2026-08-06 15:48:57 +03:00
test_pdf_real_render.py fix(tradein/tests): тесты авторизации проверяют настоящий guard + реальный рендер PDF (#2541) 2026-07-26 23:04:43 +00:00
test_pdf_security.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_pipeline_browser_routing.py fix(tradein/avito): catch sidecar timeout/transport errors in SERP fetch → graceful banned, not crash (#2523) 2026-07-13 20:59:39 +00:00
test_pipeline_browserfetcher_environment.py fix(tradein/scraper): не ходить через мёртвый запасной прокси (#2634) 2026-08-04 18:27:49 +00:00
test_proxy_pool_curl_paths.py fix(tradein/proxy): доводить сигнал бана площадки до пула (#2600 п.1) (#2653) 2026-08-05 11:37:35 +00:00
test_public_mera_api.py fix(mera/b2c): житель Серова получал «вы вне области», а подсказки игнорировали выбранный город 2026-08-16 13:03:19 +03:00
test_purge_expired_trade_in_data.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_ratelimit.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_rbac.py chore(ci+rbac): auth/** в paths-фильтры + «Поиск домов» только у админа 2026-07-31 20:24:24 +03:00
test_request_audit.py fix(tradein/payments): тело нотификации не течёт в мониторинг и аудит, повторы банка не отбиваются лимитом 2026-08-07 16:17:59 +03:00
test_revisit_floor_lateral_lookup.py fix(tradein/deactivate-stale): пол переобхода — LATERAL вместо equality-join по дате 2026-08-23 15:45:53 +03:00
test_rosreestr_dedup_key.py fix(tradein/ingest): 4 data-integrity дефекта в бэкфилле годов и импорте ДКП 2026-07-12 22:12:31 +03:00
test_rosreestr_poll.py fix(tradein): repoint rosreestr_poll to /data-sets/ + verify Content-Type (СДЕЛКИ dataset moved off /opendata) (#2477) 2026-07-12 13:21:58 +00:00
test_sales_vs_listings.py fix(tradein): поштучный процент гаснет вместе со сводным, когда причина — сама пара (#2672) (#2774) 2026-08-07 08:56:43 +00:00
test_same_building_anchor.py fix(tradein/estimate): не строить цену по одному-двум аналогам, не отдавать 0 ₽ (#2629) 2026-08-02 12:41:48 +00:00
test_same_building_match.py fix(tradein/estimator): граница номера дома в подборе аналогов «тот же дом» (#2534) 2026-07-26 22:07:00 +00:00
test_sber_freshness_monitor.py fix(tradein/sber): сторож мерит отставание загрузки, а не календарь (#2846) (#2849) 2026-08-12 19:36:20 +00:00
test_sber_index.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_schedule_save_respects_interval_2674.py fix(tradein): такт в сохранении расписания, position_in_serp невыразим (#2674) 2026-08-06 05:49:48 +00:00
test_scheduler.py refactor(tradein/scheduler): удалить legacy scheduler_loop + scraper-scheduling, kit единственный путь (#2397 Part C) 2026-07-04 13:00:30 +03:00
test_scheduler_main.py refactor(tradein/scheduler): удалить legacy scheduler_loop + scraper-scheduling, kit единственный путь (#2397 Part C) 2026-07-04 13:00:30 +03:00
test_scrape_run_alert.py fix(tradein/scraper): сторож «ноль результатов» перестаёт читать «не измерено» как ноль (#2703) (#2713) 2026-08-06 08:28:59 +00:00
test_scrape_skip_visibility.py fix(tradein/scraper): отметки времени прогона перестают замерзать в его же транзакции (#2702) (#2718) 2026-08-06 09:55:50 +00:00
test_scraped_at_bump_2206.py fix(tradein/scrapers): метка наблюдения — время строки, а не старта транзакции (#2731) (#2742) 2026-08-06 16:19:56 +00:00
test_scraper_adapters_contracts.py fix(tradein/proxy): доводить сигнал бана площадки до пула (#2600 п.1) (#2653) 2026-08-05 11:37:35 +00:00
test_scraper_admin_apis.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_scraper_kit_group_c_backfill_kit_parity.py fix(tradein/cian): обогащение ЖК падало не на разметке, а на сожжённом узле (#2767) (#2798) 2026-08-09 17:38:40 +00:00
test_scraper_kit_newbuilding_endpoint.py fix(tradein): фильтр выдачи Яндекса мёртв — slug ЖК ищем по странице объекта (#2860) (#2923) 2026-08-19 08:37:40 +00:00
test_scraper_kit_pipeline_parity.py fix(tradein/scraper): диагноз бана перестаёт назначаться по умолчанию (#2764) (#2765) 2026-08-06 23:17:59 +00:00
test_scraper_kit_pipeline_parity2.py fix(tradein/scraper): диагноз бана перестаёт назначаться по умолчанию (#2764) (#2765) 2026-08-06 23:17:59 +00:00
test_scraper_kit_providers_base.py fix(tradein/scraper-kit): actualize avito fingerprint - impersonate/Sec-Fetch-Site/referer/cookie-check 2026-08-21 17:02:53 +03:00
test_scraper_kit_scheduler_parity.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_scraper_proxy.py chore(tradein): удалить мёртвые mobileproxy env-переменные и rotate-ip (#2616 шаги 2-3) (#2650) 2026-08-05 09:35:54 +00:00
test_scraper_settings.py chore(tradein): деактивировать N1.ru scraper — источник переехал в Cian 2026-06-16 14:50:51 +03:00
test_search_api.py fix(tradein): молча задеселекченный тест починен, deselect снят (#2722) (#2729) 2026-08-06 11:30:42 +00:00
test_segment_guard_1186.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_sell_time_sensitivity.py fix(tradein/estimator): честная маркировка quarter-precision дат ДКП + insufficient_data флаг для sell-time-sensitivity (#1995) (#2355) 2026-07-04 00:14:02 +00:00
test_sentry_init_wiring.py fix(tradein/payments): тело нотификации не течёт в мониторинг и аудит, повторы банка не отбиваются лимитом 2026-08-07 16:17:59 +03:00
test_sentry_scrub.py merge(tradein/payments): влить main в feat/tradein-payments-perimeter-hardening 2026-08-15 22:32:28 +03:00
test_serp_city_location_urls.py fix(tradein/scraper): per-city SERP location for oblast city-sweep (#12) (#2525) 2026-07-13 21:41:07 +00:00
test_snapshot_writer.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_street_deals_endpoint.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_suggest_fias_contract.py feat(tradein/matching): fias_exact tier + estimate fias persist + suggest fias_id contract 2026-07-02 20:49:04 +03:00
test_support.py feat(tradein/support): чат поддержки без входа — экран логина и «доступа нет» 2026-07-31 16:04:51 +03:00
test_sweep_imv_phase.py chore(tradein): удалить мёртвые mobileproxy env-переменные и rotate-ip (#2616 шаги 2-3) (#2650) 2026-08-05 09:35:54 +00:00
test_team_api.py feat(tradein): переключаемый реестр людей — подготовка переезда «Меры» в БД auth [PR-2b/6] 2026-08-01 02:50:14 +03:00
test_tier_a_primary_1774.py fix(tradein/estimator): гео-ограничение якорного тира — не брать чужие города (#2581) 2026-07-31 17:39:00 +03:00
test_trade_in_lead.py fix(tradein/security): утечка ключа прокси, аудит действий админа, отличимость неудачного входа, IDOR в заявке (#2536) 2026-07-26 22:42:15 +00:00
test_user_events.py feat(tradein/audit): request-audit middleware + estimate_request logging → user_events (#2519) 2026-07-13 20:09:22 +00:00
test_version_api.py feat(tradein): версионирование продукта — единый источник, подвал, PDF, /versions (#2824) 2026-08-10 16:00:54 +00:00
test_yandex_city_sweep.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_yandex_detail.py fix(tradein/yandex): просмотры режутся по разделителю тысяч + Циан молчит о непонятой фразе (#2669) (#2773) 2026-08-07 08:44:48 +00:00
test_yandex_detail_structural.py chore(tradein/scraper-kit): удалить 5 orphaned legacy-модулей (#2277 финальный шаг, частичный) 2026-07-04 10:41:46 +03:00
test_yandex_history_area_filter.py fix(tradein/yandex): снести признак «панорама» — его нет на площадке (#2851) 2026-08-12 20:44:11 +00:00
test_yandex_price_history.py chore(tradein/scrapers): удалить весь legacy scrapers/ каталог — final E (#2397, #2277) 2026-07-04 15:58:15 +03:00
test_yandex_scrapers_delay_wiring.py chore(tradein): удалить мёртвые mobileproxy env-переменные и rotate-ip (#2616 шаги 2-3) (#2650) 2026-08-05 09:35:54 +00:00
test_yandex_valuation.py chore(format): нормализация под ruff 0.15.20 — 161 файл, только формат (#2864) (#3022) 2026-08-21 12:01:52 +00:00
test_yandex_valuation_save.py fix(tradein/yandex): снести признак «панорама» — его нет на площадке (#2851) 2026-08-12 20:44:11 +00:00
test_zhkh_flats_loader.py fix(tradein): cadastre ЖКХ-fallback + COALESCE merge-key + median-floors guard 2026-06-29 01:32:48 +03:00