Коллектор ДомКлика умеет Московскую область, а не только Москву #3510

Merged
lekss361 merged 1 commit from feat/domclick-collect-region-50 into main 2026-09-12 16:34:33 +00:00
Owner

Последний недостающий поставщик по региону 50. У ДомКлика, в отличие от остальных площадок, Москва и область — разные прогоны с разными GUID, одним запросом их не собрать.

GUID области

Снят живым запросом 12.09.2026 через дебаг-браузер владельца. Нашёлся не в куках, а в подсказчике адреса bff-search-web.domclick.ru/api/suggester/v1: запрос «Московская область» отдаёт узел-адрес с guid и isFinite: false.

Москва Московская область
GUID 1d1463ae-c80f-4d19-9331-a1b68a85b553 9930cc20-32c6-4f6f-a55e-cd67086c5171
карточек вторички 23 698 17 572
потолок offset 1980 ок, 2000 → HTTP 400 то же самое
параметр aids не нужен не нужен

Потолок совпал, поэтому ценовая бисекция и DOMCLICK_MAX_PAGES остаются прежними.

Попутно проверено и отвергнуто: ФИАС-GUID области 29251dcf-… даёт total = 0, у ДомКлика своё пространство идентификаторов. Поиск по нескольким GUID сразу не поддерживается — повторный параметр address молча берёт первый, список через запятую даёт HTTP 400. Городские GUID существуют (Химки 679 карточек, Балашиха 1222, Красногорск 508), но региональный уровень покрывает всё разом, и дробить на 60 прогонов не нужно.

Зачем региональный прямоугольник

Прежний гео-гард — прямоугольник Москвы с ТиНАО. Замер по 140 карточкам области с семи разных смещений:

разброс широты 54.91 … 56.68
разброс долготы 36.47 … 39.86
внутри московского прямоугольника 96 из 140, то есть 68.6%

Треть выдачи терялась бы молча: Серпухов, Коломна и Дубна лежат за его границами. Прямоугольник области равен bbox_region региона 50 из реестра; значение впечатано литералом, потому что скрипт лежит вне пакета backend и импортировать реестр не может.

Активный прямоугольник живёт модульной переменной, а не аргументом: сигнатура parse_cards зафиксирована типом PlatformAdapter и общая для всех четырёх площадок. Значение выставляется один раз при старте и печатается в лог, чтобы неверный регион был виден сразу, а не по итогам двух часов.

Две сверки на старте, обе до первого запроса

GUID против региона. --base-url принимает любой адрес, а при --resume он вообще приходит из сохранённого плана мимо --region. Расхождение залило бы Москву под областным именем батча.

Префикс имени батча против региона. В msk_raw.domclick_cards колонки региона нет вовсе, ключ уникальности — (source_id, batch_id, kind). Имя батча остаётся единственным признаком региона, и разошедшееся имя сделало бы партию неразличимой уже после заливки, когда чинить поздно.

Проверено живым запуском, все восемь случаев ведут себя как задумано:

avito + --region 50                 -> SystemExit
domclick + 50, имя по умолчанию     -> mo-serp-domclick-...   guid 9930cc20
domclick по умолчанию               -> msk-serp-domclick-...  guid 1d1463ae
--region 50 с московским base-url   -> SystemExit с обоими GUID
--region 50 с именем msk-...        -> SystemExit
--region 77 с именем mo-...         -> SystemExit
cian со своим именем батча          -> без изменений

Регресса по Москве нет

Московский base_url собирается байт-в-байт прежней строкой — сверено посимвольно. Дефолт адаптера, префикс имени батча и активный прямоугольник при --region 77 прежние. Три независимых ревью с разными углами (регресс, полнота защиты, эксплуатация долгого прогона) дали ноль подтверждённых находок; замечание про несвязанный --batch-id закрыто второй сверкой выше.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NQb6WeJtagZwZnUsSjDizs

Последний недостающий поставщик по региону 50. У ДомКлика, в отличие от остальных площадок, Москва и область — разные прогоны с разными GUID, одним запросом их не собрать. ## GUID области Снят живым запросом 12.09.2026 через дебаг-браузер владельца. Нашёлся не в куках, а в подсказчике адреса `bff-search-web.domclick.ru/api/suggester/v1`: запрос «Московская область» отдаёт узел-адрес с `guid` и `isFinite: false`. | | Москва | Московская область | |---|---|---| | GUID | `1d1463ae-c80f-4d19-9331-a1b68a85b553` | `9930cc20-32c6-4f6f-a55e-cd67086c5171` | | карточек вторички | 23 698 | 17 572 | | потолок offset | 1980 ок, 2000 → HTTP 400 | то же самое | | параметр `aids` | не нужен | не нужен | Потолок совпал, поэтому ценовая бисекция и `DOMCLICK_MAX_PAGES` остаются прежними. Попутно проверено и отвергнуто: ФИАС-GUID области `29251dcf-…` даёт `total = 0`, у ДомКлика своё пространство идентификаторов. Поиск по нескольким GUID сразу не поддерживается — повторный параметр `address` молча берёт первый, список через запятую даёт HTTP 400. Городские GUID существуют (Химки 679 карточек, Балашиха 1222, Красногорск 508), но региональный уровень покрывает всё разом, и дробить на 60 прогонов не нужно. ## Зачем региональный прямоугольник Прежний гео-гард — прямоугольник Москвы с ТиНАО. Замер по 140 карточкам области с семи разных смещений: | | | |---|---| | разброс широты | 54.91 … 56.68 | | разброс долготы | 36.47 … 39.86 | | внутри московского прямоугольника | 96 из 140, то есть 68.6% | Треть выдачи терялась бы молча: Серпухов, Коломна и Дубна лежат за его границами. Прямоугольник области равен `bbox_region` региона 50 из реестра; значение впечатано литералом, потому что скрипт лежит вне пакета backend и импортировать реестр не может. Активный прямоугольник живёт модульной переменной, а не аргументом: сигнатура `parse_cards` зафиксирована типом `PlatformAdapter` и общая для всех четырёх площадок. Значение выставляется один раз при старте и печатается в лог, чтобы неверный регион был виден сразу, а не по итогам двух часов. ## Две сверки на старте, обе до первого запроса **GUID против региона.** `--base-url` принимает любой адрес, а при `--resume` он вообще приходит из сохранённого плана мимо `--region`. Расхождение залило бы Москву под областным именем батча. **Префикс имени батча против региона.** В `msk_raw.domclick_cards` колонки региона нет вовсе, ключ уникальности — `(source_id, batch_id, kind)`. Имя батча остаётся единственным признаком региона, и разошедшееся имя сделало бы партию неразличимой уже после заливки, когда чинить поздно. Проверено живым запуском, все восемь случаев ведут себя как задумано: ``` avito + --region 50 -> SystemExit domclick + 50, имя по умолчанию -> mo-serp-domclick-... guid 9930cc20 domclick по умолчанию -> msk-serp-domclick-... guid 1d1463ae --region 50 с московским base-url -> SystemExit с обоими GUID --region 50 с именем msk-... -> SystemExit --region 77 с именем mo-... -> SystemExit cian со своим именем батча -> без изменений ``` ## Регресса по Москве нет Московский `base_url` собирается байт-в-байт прежней строкой — сверено посимвольно. Дефолт адаптера, префикс имени батча и активный прямоугольник при `--region 77` прежние. Три независимых ревью с разными углами (регресс, полнота защиты, эксплуатация долгого прогона) дали ноль подтверждённых находок; замечание про несвязанный `--batch-id` закрыто второй сверкой выше. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01NQb6WeJtagZwZnUsSjDizs
lekss361 added 1 commit 2026-09-12 16:30:52 +00:00
Коллектор ДомКлика умеет Московскую область, а не только Москву
All checks were successful
CI Trade-In / changes (pull_request) Successful in 13s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI / changes (pull_request) Successful in 17s
CI / frontend-tests (pull_request) Has been skipped
c368d5d959
У ДомКлика, в отличие от Авито, Циана и Яндекса, Москва и область — разные прогоны
с разными GUID: одним запросом их не собрать. Поэтому появился флаг --region {77,50},
действующий только для этой площадки; с остальными --region 50 падает с объяснением,
что их корпус собирается одним прогоном и делится уже при импорте.

GUID области снят живым запросом 12.09.2026: 9930cc20-32c6-4f6f-a55e-cd67086c5171,
17 572 карточки вторички, потолок offset тот же, что у Москвы (1980 отдаёт страницу,
2000 — HTTP 400), параметр aids не нужен. Значит ценовая бисекция и потолок пагинации
остаются прежними.

Гео-гард стал региональным. Прежний московский прямоугольник область не накрывает:
замер по 140 карточкам области с семи разных смещений показал разброс координат
54.91..56.68 и 36.47..39.86, внутри московского прямоугольника лежит лишь 68.6% —
треть выдачи молча терялась бы. Прямоугольник области равен bbox_region региона 50 из
реестра; значение впечатано литералом, потому что скрипт лежит вне пакета backend и
импортировать реестр не может.

Две сверки на старте, обе до первого запроса к сети. GUID в фактическом base_url
обязан совпадать с ожидаемым для региона: --base-url принимает любой адрес, а при
--resume он вообще приходит из сохранённого плана мимо --region. Префикс --batch-id
обязан совпадать с регионом: имя батча — единственный признак региона в
msk_raw.domclick_cards, колонки региона там нет, и разошедшееся имя сделало бы партию
неразличимой уже после заливки.

Московский прогон не тронут: base_url для Москвы собирается байт-в-байт прежней
строкой, дефолты адаптера, префикс batch_id и активный прямоугольник при --region 77
остаются прежними.
lekss361 merged commit 8863781589 into main 2026-09-12 16:34:33 +00:00
lekss361 deleted branch feat/domclick-collect-region-50 2026-09-12 16:34:34 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#3510
No description provided.