fix(nspd-geo): rosreestr2coord cache permission in non-root worker

rosreestr2coord.Area() by default creates ./tmp/ media cache relative
to CWD. In our worker container CWD=/app (owned by root), runs as
non-root user `app` → PermissionError: '/app/tmp' on every target.

Fix: pass explicit kwargs to Area():
  - use_cache=False (we don't need cache — each cad_num is unique)
  - media_path='/tmp/rosreestr2coord' (world-writable in container)

Vault: fixes/Bug_Nspd_Geo_Tmp_Permission_Fixed.md
This commit is contained in:
lekss361 2026-05-11 14:22:11 +03:00
parent 3e6cddde33
commit b19ca1ed41

View file

@ -165,11 +165,18 @@ def fetch_via_rosreestr2coord(
except ImportError as e:
raise NspdLiteError(f"rosreestr2coord не установлен (uv add rosreestr2coord): {e}") from e
# rosreestr2coord по дефолту пишет media-cache в `./tmp/` (относительно CWD).
# У нас CWD = /app, контейнер worker'а запущен под non-root user → Permission
# denied при первом fetch.
# Фикс: use_cache=False + media_path=/tmp/rosreestr2coord (writable для всех).
# Кеш нам не нужен — каждый cad_num уникален, обращаемся раз.
a = Area(
code=cad_num,
area_type=area_type,
timeout=timeout,
with_log=False,
use_cache=False,
media_path="/tmp/rosreestr2coord",
)
try:
return a.to_geojson_poly()