From 43672a0068e511029966f506b3d3eaced45fa48a Mon Sep 17 00:00:00 2001 From: lekss361 Date: Mon, 11 May 2026 16:12:58 +0300 Subject: [PATCH] fix(api): bulk geo includes all doc_types by default (only_ddu opt-in) --- backend/app/api/v1/admin_scrape.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/backend/app/api/v1/admin_scrape.py b/backend/app/api/v1/admin_scrape.py index 7c4d9774..368f314f 100644 --- a/backend/app/api/v1/admin_scrape.py +++ b/backend/app/api/v1/admin_scrape.py @@ -698,6 +698,10 @@ class BulkGeoEnqueueRequest(BaseModel): parallelism: int = Field(default=5, ge=1, le=10) thematic_id: int = Field(default=2, ge=1, le=15, description="1=parcel, 2=quarter, 5=building") + only_ddu: bool = Field( + default=False, + description="True = только ДДУ (002001003000); False = все cad-кварталы", + ) @router.post("/geo/bulk") @@ -708,9 +712,9 @@ def bulk_enqueue_geo( ) -> dict[str, Any]: """Разбить pending cad-номера (region 66) на N чанков и запустить N geo-jobs параллельно. - Логика выборки pending — те же правила что у source_kind='rosreestr_pending': - quarter_cad_number из rosreestr_deals (region 66, ДДУ, тип 002001003000) - которых нет в cad_quarters_geom. + Логика выборки pending: distinct quarter_cad_number из rosreestr_deals + (region 66, валидный cad-формат) которых нет в cad_quarters_geom. + Если only_ddu=True — дополнительный фильтр по ДДУ (тип 002001003000). """ _check_token(x_admin_token) from app.services.job_settings import get_setting_value @@ -718,14 +722,16 @@ def bulk_enqueue_geo( from app.workers.tasks.nspd_geo import process_nspd_geo_job # 1) Собрать все pending cad-номера для region 66 + ddu_filter = ( + "AND doc_type = 'ДДУ' AND realestate_type_code = '002001003000'" if payload.only_ddu else "" + ) rows = db.execute( text( - """ + f""" SELECT DISTINCT quarter_cad_number AS cad FROM rosreestr_deals WHERE region_code = ANY(:rc) - AND doc_type = 'ДДУ' - AND realestate_type_code = '002001003000' + {ddu_filter} AND quarter_cad_number IS NOT NULL AND quarter_cad_number NOT LIKE :bp AND quarter_cad_number NOT LIKE :bs