---
name: zemlya-lk-enrichment-never-lands
description: "ЗБР: обогащение из ЛК Росреестра почти никогда не попадает в отчёт (grace 2с против fetch 30с, запись в result уже после save), а пустой «вид права» — чаще отсутствие поля в НСПД, чем баг парсера"
metadata: 
  node_type: memory
  type: project
  originSessionId: d0c6c5aa-4d05-42e2-a1f9-034482b88603
  modified: 2026-08-04T07:39:16.865Z
---

**Замер 04.08.2026 на 492 отчётах.** Вид права: 312 из НСПД (63%), **25 из ЛК Росреестра (5%)**, 155 нет вовсе (32%). Последний раз ЛК реально дал право **02.07.2026** — то есть месяц путь не приносит ничего.

**Почему.** `_fetch_rosreestr_lk_safe` в `bot/handlers/cadastral.py` — fire-and-forget, ждут его `ROSREESTR_LK_GRACE` = **2 секунды**, при внутреннем timeout 12с и реальном fetch до 30с. По логу: «не успел в grace window» 245 раз, «timed out» 199, успешных карточек 87. Хуже того, задача пишет в `result` **после того, как отчёт уже сохранён**: 04.08 отчёт лёг в базу в 09:08:59, а ЛК отвалился в 09:09:23 — на 24 секунды позже. Даже успешный ответ писать уже некуда. Вывод: сама доставка сломана, и наращивать точность распознавания капчи бессмысленно, пока результат некуда положить.

**Пустой «вид права» ≠ баг парсера.** Проверено напрямую через pynspd: по 70:14:0300098:1554 НСПД отдаёт `ownership_type: None` (19 из 25 полей заполнены, право — нет), по 47:07:0713003:154 → «Частная», по 04:01:020211:1170 → «Муниципальная». Парсер читает верно, поля просто нет в источнике. Гипотеза про соседнее `right_type` (оно есть у 1170) проверена на выборке 20 участков с пустым правом — **не заполнено ни разу**, фолбэк на него бесполезен. При этом у 3 из 20 НСПД отдаёт право сейчас, хотя в сохранённом отчёте пусто → часть пропусков это разовые промахи на момент проверки.

**Починено полностью 04.08.2026.** Два слоя:

1. **Доставка (коммит `7ac76d4`):** задача регистрируется в `_PENDING_LK_TASKS` по `id(result)`, место сохранения вешает на неё дозапись в строку по `report_id`. Живьём: отчёт 737 сохранён в 10:11:00, дозапись легла в 10:11:25.

2. **Чтение капчи (`.env` правка 04.08):** OmniRoute с коротким алиасом `mistral/mistral-medium-latest` → 404/401 с 4 июля. UUID-путь (`openai-compatible-chat-19f61b01-…`) — текстовая модель, vision-запросы с base64 тоже 401. Все vision-модели OmniRoute (zai/glm, tllm/gemini) без ключей. Gemini заблокирован с РФ (location error). **Решение: `kr/claude-haiku-4.5` через OmniRoute** — vision-модель, возвращает 200, прочитала тестовый текст точно (`AB3F7`→`AB3F7`). Установлено: `CAPTCHA_FALLBACK_OMNIROUTE_MODEL=kr/claude-haiku-4.5` в `.env`. Живой лог 10:37: `captcha Mistral-PRIMARY (kr/claude-haiku-4.5/raw) -> 'help'` — модель вызвана, ответ отдан. NIM с мини по-прежнему timeout (NVIDIA API из РФ недоступен).

**Проверять так:** право по КН — `~/Services/nspd-fast/venv/bin/python3` + `pynspd.Nspd().find(cn).properties.options`; это тот же источник, что и сайдкар на :20155, из которого прод берёт данные (`source='nspd_pynspd'`). Перехват в `nspd._build_geoportal_result` промахнётся — ответ приходит веткой сайдкара, минуя разбор feature.options.

Связано: [[nspd_direct_http_2026-06-18]], [[zemlya_egress_asymmetry]], [[deployed_is_not_running]].
