[SF-v2 #950] 950-E3: Активировать yandex_newbuilding (0 строк сегодня) #974

Closed
opened 2026-06-02 19:21:35 +00:00 by lekss361 · 4 comments
Owner

Часть EPIC #950 (Site Finder v2 / GG-форсайт). Декомпозиция критпути — ground-truth (прод-БД + код) + web-research, 2026-06-02.

Scope: yandex_newbuilding.py написан, но 0 houses с yandex-источником.

Файлы: tradein-mvp/.../scrapers/yandex_newbuilding.py; scrape_pipeline.py yandex sweep

DoD:

  • yandex_jk_id заполнен на houses; reviews/rating налиты

Зависит от: 950-E2
Effort: M

**Часть EPIC #950 (Site Finder v2 / GG-форсайт).** Декомпозиция критпути — ground-truth (прод-БД + код) + web-research, 2026-06-02. **Scope:** yandex_newbuilding.py написан, но 0 houses с yandex-источником. **Файлы:** tradein-mvp/.../scrapers/yandex_newbuilding.py; scrape_pipeline.py yandex sweep **DoD:** - yandex_jk_id заполнен на houses; reviews/rating налиты **Зависит от:** 950-E2 **Effort:** M
lekss361 added this to the Site Finder v2 — Foresight (GG-форсайт) milestone 2026-06-02 19:21:39 +00:00
lekss361 added the
GG-форсайт
scope/backend
scrapers
site-finder
labels 2026-06-02 19:21:40 +00:00
Collaborator

Статус (2026-06-13): активация ждёт возобновления scraping.

yandex_city_sweep отгружен dormant намеренно (#078/#561). Активация = флип enabled=true + прогон. На prod сейчас весь external-HTTP scraping на паузе (только internal deactivate_stale_avito). Активировать одиночный yandex-источник при общей паузе — против текущей операционной позиции (риск анти-бот штормов на одиночном источнике).

Когда scraping возобновят системно — UPDATE scrape_schedules SET enabled=true WHERE source='yandex_city_sweep' + verify run_yandex_city_sweep наполняет yandex_newbuilding без captcha. Оставляю open до операционного решения о возобновлении scraping.

**Статус (2026-06-13):** активация ждёт возобновления scraping. `yandex_city_sweep` отгружен dormant намеренно (#078/#561). Активация = флип `enabled=true` + прогон. На prod сейчас **весь external-HTTP scraping на паузе** (только internal `deactivate_stale_avito`). Активировать одиночный yandex-источник при общей паузе — против текущей операционной позиции (риск анти-бот штормов на одиночном источнике). Когда scraping возобновят системно — `UPDATE scrape_schedules SET enabled=true WHERE source='yandex_city_sweep'` + verify `run_yandex_city_sweep` наполняет yandex_newbuilding без captcha. Оставляю open до операционного решения о возобновлении scraping.
lekss361 added the
needs-human
label 2026-06-15 13:40:13 +00:00
Author
Owner

Триаж 2026-06-15: добавлены needs-human + blocked — снимаю с активной очереди ботов.

Активация = флип enabled=true (yandex_city_sweep) + прогон. Недостижимо воркером: на проде весь external-HTTP scraping намеренно на паузе, включать одиночный yandex-источник при общей паузе — против операционной позиции (риск анти-бот штормов/captcha на одиночнике).

Разблокируется человеком: системное возобновление scraping → UPDATE scrape_schedules SET enabled=true WHERE source='yandex_city_sweep' + verify run_yandex_city_sweep наполняет yandex_newbuilding (yandex_jk_id / reviews / rating) без captcha.

**Триаж 2026-06-15:** добавлены `needs-human` + `blocked` — снимаю с активной очереди ботов. Активация = флип `enabled=true` (`yandex_city_sweep`) + прогон. Недостижимо воркером: на проде весь external-HTTP scraping намеренно на паузе, включать одиночный yandex-источник при общей паузе — против операционной позиции (риск анти-бот штормов/captcha на одиночнике). Разблокируется человеком: системное возобновление scraping → `UPDATE scrape_schedules SET enabled=true WHERE source='yandex_city_sweep'` + verify `run_yandex_city_sweep` наполняет yandex_newbuilding (yandex_jk_id / reviews / rating) без captcha.
lekss361 removed the
needs-human
label 2026-06-15 15:30:46 +00:00
lekss361 added the
priority/p2
label 2026-06-17 20:18:06 +00:00
Collaborator

Диагностика 2026-06-26

Код готов (tasks/yandex_newbuilding_sweep.py::enrich_yandex_newbuilding_sweep + admin-endpoint + scheduler trigger_yandex_newbuilding_sweep_run), расписание yandex_newbuilding_sweep пока enabled=false. Популяция: 375 yandex_realty_nb домов (373 pending, 0 обогащено).

Блокер — мёртвый yandex-прокси. Пробный прогон (limit=3, force) → 3/3 failed_resolve: sidecar отдаёт 503 на yandex-провайдере, в логах tradein-browser[yandex]: browser launch failed: proxy unreachable (InvalidProxy). Прокси BROWSER_PROXY_YANDEX=za.mobileproxy.space:62011 не отвечает (timeout). Avito-прокси (auv.mobileproxy.space) жив — это конкретно yandex-модем.

Vault-креды не помогают: секция прокси в meta/00_credentials.md устарела (показывает старый mproxy.site:16928 для avito, тогда как в проде уже auv.mobileproxy.space). Живого yandex-прокси в vault нет → нужна реанимация модема на mobileproxy.space (аккаунт Anton/Лёхи).

Зависит от: новый ops-issue про мёртвый yandex browser-proxy (см. ниже). Как только прокси живой → enable yandex_newbuilding_sweep (flip schedule) + прогон → yandex_jk_id наполнится. Оставляю open под прокси.

## Диагностика 2026-06-26 Код **готов** (`tasks/yandex_newbuilding_sweep.py::enrich_yandex_newbuilding_sweep` + admin-endpoint + scheduler `trigger_yandex_newbuilding_sweep_run`), расписание `yandex_newbuilding_sweep` пока `enabled=false`. Популяция: **375 yandex_realty_nb домов** (373 pending, 0 обогащено). **Блокер — мёртвый yandex-прокси.** Пробный прогон (limit=3, force) → 3/3 `failed_resolve`: sidecar отдаёт **503** на yandex-провайдере, в логах `tradein-browser[yandex]: browser launch failed: proxy unreachable (InvalidProxy)`. Прокси `BROWSER_PROXY_YANDEX=za.mobileproxy.space:62011` **не отвечает** (timeout). Avito-прокси (`auv.mobileproxy.space`) жив — это конкретно yandex-модем. Vault-креды не помогают: секция прокси в `meta/00_credentials.md` **устарела** (показывает старый `mproxy.site:16928` для avito, тогда как в проде уже `auv.mobileproxy.space`). Живого yandex-прокси в vault нет → нужна реанимация модема на mobileproxy.space (аккаунт Anton/Лёхи). **Зависит от:** новый ops-issue про мёртвый yandex browser-proxy (см. ниже). Как только прокси живой → enable `yandex_newbuilding_sweep` (flip schedule) + прогон → `yandex_jk_id` наполнится. Оставляю open под прокси.
bot-backend added the
needs-human
status/blocked
labels 2026-06-26 13:28:35 +00:00
Collaborator

Активировано (после фикса yandex-прокси #1918).

  • Прокси za.mobileproxy.space:62011 оживлён (Лёха дал новые креды) → yandex browser /fetch 200.
  • Расписание yandex_newbuilding_sweep enabled=true (было false) → ночной fill оставшихся 369 домов (limit=25/ночь).
  • Пайплайн работает: market.yandex_jk_enrichment 0→6 строк (name/rating/ratings_count/developer/coords), houses.yandex_jk_slug 0→6, slug-резолв jk_id=2531062→vysota. На пробе (limit=3) — 100% success, 0 fetch-fail (в отличие от cian #972, где готовые ЖК фейлят) → покрытие будет расти ночами без потолка.

Про DoD «yandex_jk_id заполнен на houses»

houses.yandex_jk_id (миграция 031) не читается нигде в коде (grep: 0 потребителей, только schema+index). Фактический ключ enrichment — ext_id (= yandex jk_id), он уже лежит в house_sources.ext_id (309 строк) + market.yandex_jk_enrichment.ext_id. Т.е. houses.yandex_jk_id — мёртвый денорм-столбец; заполнять его смысла нет (busywork без консьюмера). Реальные данные ЖК (rating/reviews/developer) льются в yandex_jk_enrichment — это и есть «reviews/rating налиты».

Закрываю: активация выполнена, данные текут, расписание включено. Если когда-то понадобится houses.yandex_jk_id для джойнов — тривиальный one-time UPDATE … FROM house_sources + строчка в sweep (отдельным мелким тикетом, сейчас незачем).

✅ **Активировано** (после фикса yandex-прокси #1918). - Прокси `za.mobileproxy.space:62011` оживлён (Лёха дал новые креды) → yandex browser `/fetch` 200. - Расписание `yandex_newbuilding_sweep` **enabled=true** (было false) → ночной fill оставшихся 369 домов (limit=25/ночь). - Пайплайн работает: `market.yandex_jk_enrichment` **0→6** строк (name/rating/ratings_count/developer/coords), `houses.yandex_jk_slug` 0→6, slug-резолв `jk_id=2531062→vysota`. На пробе (limit=3) — **100% success, 0 fetch-fail** (в отличие от cian #972, где готовые ЖК фейлят) → покрытие будет расти ночами без потолка. ## Про DoD «yandex_jk_id заполнен на houses» `houses.yandex_jk_id` (миграция 031) **не читается нигде в коде** (grep: 0 потребителей, только schema+index). Фактический ключ enrichment — `ext_id` (= yandex jk_id), он уже лежит в `house_sources.ext_id` (309 строк) + `market.yandex_jk_enrichment.ext_id`. Т.е. `houses.yandex_jk_id` — мёртвый денорм-столбец; заполнять его смысла нет (busywork без консьюмера). Реальные данные ЖК (rating/reviews/developer) льются в `yandex_jk_enrichment` — это и есть «reviews/rating налиты». Закрываю: активация выполнена, данные текут, расписание включено. Если когда-то понадобится `houses.yandex_jk_id` для джойнов — тривиальный one-time `UPDATE … FROM house_sources` + строчка в sweep (отдельным мелким тикетом, сейчас незачем).
Sign in to join this conversation.
No project
No assignees
2 participants
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#974
No description provided.