---
name: pynspd_feasibility
description: "pynspd-sidecar НСПД ВКЛЮЧЕН в проде (NSPD_PYNSPD_SIDECAR_URL=:20155): НСПД-lookup 18-75с→0.09с, free/pro/ai e2e+снимок ✅, browser=fallback, откат=очистить флаг"
metadata: 
  node_type: memory
  type: project
  originSessionId: d0c6c5aa-4d05-42e2-a1f9-034482b88603
---

**pynspd** (PyPI, v1.1.13, github.com/yazmolod/pynspd) — чистый httpx-клиент к НСПД (nspd.gov.ru). Тест на мини (2026-06-23, изолированный venv, прод не тронут):
- `find_landplot("47:14:0532008:28")` → **0.09с**, Polygon-геометрия + полные атрибуты: category/permitted_use/readable_address/cost_value/ownership_type/status/quarter. Это всё, что нужно отчёту, через HTTP — vs текущий Playwright-скрейп **10-90с, ~0.4ГБ/прогон** (это и есть потолок `REPORT_CONCURRENCY`).
- ЗОУИТ/охранные зоны: `search_in_contour(parcel_geometry: shapely, layer_def: Layer*Feature)` — поверх ~60 сгенерированных Layer-классов НСПД. Покрытие приаэродромная/СЗЗ/водоохранная/подтопление — нужно домапить layer_configs→поля отчёта (integration-работа).

**КРИТИЧНО — почему ещё не внедрено:** весь прод-стек zemlya на **LibreSSL 2.8.3** (system python 3.9.6), а pynspd на импорте делает `set_ciphers("ALL:@SECLEVEL=1")` — директива OpenSSL-only, LibreSSL → `No cipher can be selected`. **Это и объясняет, почему текущий НСПД-путь = браузер Playwright** (LibreSSL не тянет шифры НСПД). Работает только под OpenSSL — на мини есть `/opt/homebrew/bin/python3` (3.14, OpenSSL 3.6.2).

**Путь интеграции (НЕ делать без гринлайта):** sidecar-микросервис на homebrew-python 3.14 (`nspd_fast`, свой launchd), прод-стек (LibreSSL) зовёт по localhost HTTP. Без миграции прод-venv. Fallback на Playwright при промахе/ошибке. См. [[zemlya_web_overview]], [[nspd_direct_http_2026-06-18]], [[torgi_gov_gost_tls]].
