From dd3a79b47543603126b114ed7d20c15b2ce95bc2 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Thu, 27 Aug 2026 18:24:09 +0300 Subject: [PATCH] =?UTF-8?q?style(tradein):=20=D1=83=D0=BB=D0=BE=D0=B6?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=B5=D1=81?= =?UTF-8?q?=D1=91=D0=BD=D0=BD=D1=8B=D0=B5=20=D1=81=D1=82=D1=80=D0=BE=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B2=20=D0=BB=D0=B8=D0=BC=D0=B8=D1=82=20100=20=D1=81?= =?UTF-8?q?=D0=B8=D0=BC=D0=B2=D0=BE=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ruff E501 на трёх строках, которые удлинились от замены литерала на `DEFAULT_IMPERSONATE` в докстроках. Абзацы перевёрстаны целиком, а не разорваны по месту переполнения — рваный перенос читался бы как опечатка. Прогон: `ruff check app tests` — All checks passed. Refs #3148 --- tradein-mvp/backend/app/api/v1/admin.py | 6 +++--- tradein-mvp/backend/app/services/yandex_address_backfill.py | 4 ++-- tradein-mvp/backend/app/tasks/yandex_address_backfill.py | 6 +++--- tradein-mvp/backend/app/tasks/yandex_detail_backfill.py | 5 +++-- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/tradein-mvp/backend/app/api/v1/admin.py b/tradein-mvp/backend/app/api/v1/admin.py index 6b8d251a..d4cb58cc 100644 --- a/tradein-mvp/backend/app/api/v1/admin.py +++ b/tradein-mvp/backend/app/api/v1/admin.py @@ -2197,9 +2197,9 @@ async def scrape_yandex_address_backfill( """T10: Backfill listings.address для Yandex-листингов без номера дома. Yandex SERP-карточки содержат только улицу («улица Горького»). Этот endpoint - фетчит detail-страницы через curl_cffi (kit-профиль `DEFAULT_IMPERSONATE`), извлекает полный адрес - из («Екатеринбург, улица Горького, 36 — id …»), обновляет - listings.address и сбрасывает geocode_tried_at для перегеокодирования. + фетчит detail-страницы через curl_cffi (kit-профиль `DEFAULT_IMPERSONATE`), + извлекает полный адрес из <title> («Екатеринбург, улица Горького, 36 — id …»), + обновляет listings.address и сбрасывает geocode_tried_at для перегеокодирования. limit: сколько листингов обработать за запуск (default 200). request_delay_sec: пауза между запросами (default 3.0s). diff --git a/tradein-mvp/backend/app/services/yandex_address_backfill.py b/tradein-mvp/backend/app/services/yandex_address_backfill.py index ac8bbf01..059d3dc2 100644 --- a/tradein-mvp/backend/app/services/yandex_address_backfill.py +++ b/tradein-mvp/backend/app/services/yandex_address_backfill.py @@ -5,8 +5,8 @@ The offer detail page <title> has the full address including house number: «Екатеринбург, улица Горького, 36 — id 12345». This service finds active yandex listings without a house number in `address`, -fetches each detail page via curl_cffi (kit-профиль `DEFAULT_IMPERSONATE`), extracts the full address -from the <title> regex, and UPDATE listings.address. +fetches each detail page via curl_cffi (kit-профиль `DEFAULT_IMPERSONATE`), +extracts the full address from the <title> regex, and UPDATE listings.address. Deliberately NOT wired into scheduler — manual trigger only. Triggered via POST /api/v1/admin/scrape/yandex-address-backfill. diff --git a/tradein-mvp/backend/app/tasks/yandex_address_backfill.py b/tradein-mvp/backend/app/tasks/yandex_address_backfill.py index b9d267fb..b4170792 100644 --- a/tradein-mvp/backend/app/tasks/yandex_address_backfill.py +++ b/tradein-mvp/backend/app/tasks/yandex_address_backfill.py @@ -7,9 +7,9 @@ page <title> contains the full address including house number: This task selects active listings that match the predicate (source='yandex', region_code=66, address IS NOT NULL, address has no house number, source_url IS NOT NULL), fetches each -detail page via curl_cffi (kit-профиль `DEFAULT_IMPERSONATE`), extracts the full address -from the <title>, and -UPDATE listings.address ONLY when the extracted value differs from the current one. +detail page via curl_cffi (kit-профиль `DEFAULT_IMPERSONATE`), extracts the full +address from the <title>, and UPDATE listings.address ONLY when the extracted +value differs from the current one. Wired into the in-app scheduler as source='yandex_address_backfill'. Triggered nightly via the scrape_schedules seed (migration 091). Manual trigger also available via POST diff --git a/tradein-mvp/backend/app/tasks/yandex_detail_backfill.py b/tradein-mvp/backend/app/tasks/yandex_detail_backfill.py index 4ed4e0df..4ea7305e 100644 --- a/tradein-mvp/backend/app/tasks/yandex_detail_backfill.py +++ b/tradein-mvp/backend/app/tasks/yandex_detail_backfill.py @@ -96,8 +96,9 @@ OFFER_URL_PATTERN = "/offer/[0-9]+" # него собирается — это инвариант #2235 (`_canonical_source_url` в # scraper_kit/providers/yandex/serp.py) и та же формула, которой миграция 164 # чинила легаси-строки. Живая проба 2026-08-12 прод-трактом (тот же прокси, -# curl_cffi с kit-профилем (на момент замера — Chrome 120), тот же parse): 6 из 6 — HTTP 200 и parse OK, включая -# строки, чей сохранённый source_url — рекламный редирект na100.pro/go.php. +# curl_cffi с kit-профилем (на момент замера — Chrome 120), тот же parse): 6 из 6 +# — HTTP 200 и parse OK, включая строки, чей сохранённый source_url — рекламный +# редирект na100.pro/go.php. # # Откуда взялся стухший адрес: source_url пишется ТОЛЬКО при вставке — его нет ни # в `ON CONFLICT DO UPDATE`, ни в reconcile-UPDATE у `save_listings`. Значит #2235