gendesign/backend/tests/scrapers
bot-backend d43dd7d257
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 10s
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 / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 2m0s
CI / backend-tests (pull_request) Successful in 17m12s
fix(ptica): отказ слоя НСПД больше не выглядит как «здесь ничего нет»
get_features_in_bbox_grid глушил ЛЮБОЕ исключение ячейки (warning + continue)
и возвращал []. Бан IP по WAF или падение слоя целиком становились
неотличимы от честного пустого ответа.

Замер на проде: nspd_quarter_dumps — 669 строк, у 124 territorial_zones_count=0,
и у 50 из них соседний legacy-слой данные всё-таки нашёл. То есть это не
«зон нет», а «мы не узнали».

Правка — зеркало уже исправленного близнеца в
app/scrapers/nspd_bulk_client.get_features_in_bbox_grid (Issue #252-mirror):
- NspdBulkWafError → немедленный re-raise (продолжать обход = углублять бан);
- NspdBulkServerError считаем отдельно; если 5xx были И ни одна ячейка не
  прошла — бросаем вместо ложного пустого;
- прочие (сетевые/parse) ошибки ячейки по-прежнему не валят обход.

get_riasurt_sverdl_in_bbox ловит NspdBulkServerError и сохраняет прежний
контракт («пустой list если слой пуст / упал»), но НЕ ловит WafError.
Ограничение записано в коде честно: наружу оттуда «упал» и «пусто»
по-прежнему неразличимы — у функции нет канала для флага.

Докстрока search_by_quarter обещала атомарность, которой не было; теперь
описывает, что бросается и где partial-success ВОЗМОЖЕН (#2464-H).

Тесты двусторонние: против main 2 из 3 падают
(waf_403_aborts_grid, all_cells_5xx_raises), третий — контроль
partial_5xx_keeps_data — зелёный с обеих сторон.

Один хунк форматирования — не мой: pre-commit ruff v0.7.4 против 0.15.12 (#2864).

Refs #2464
2026-08-13 21:59:30 +05:00
..
__init__.py feat(cadastre): NSPDBulkClient + schemas for bulk ingest (#168 PR2/5) (#170) 2026-05-15 12:50:41 +03:00
test_cbr_macro.py feat(macro): CBR inflation (ИПЦ YoY) -> macro_indicator + activate §9.5 channel (#946) 2026-06-08 11:41:14 +05:00
test_emiss_sdmx.py fix(sql): EMISS PK includes period_type so yearly+Q1 coexist (#1606 follow-up) 2026-06-17 21:27:34 +03:00
test_nspd_bulk_client.py feat(site-finder): per-building помещения/машино-места + parking_ratio (on-demand MVP, #96) 2026-06-14 18:48:16 +05:00
test_nspd_grid_walk.py fix(ptica): отказ слоя НСПД больше не выглядит как «здесь ничего нет» 2026-08-13 21:59:30 +05:00
test_pravo_gov66_client.py fix(backend): reservation_ingest пейсинг + короткоживущая DB-сессия (#2445-D4) (#2458) 2026-07-05 20:09:00 +00:00
test_rosstat_emiss.py feat(macro): land construction price index (СМР) via open Rosstat xlsx (#946) 2026-06-09 11:28:05 +05:00