"""Конфигурация приложения — все настройки в одном месте.""" import os VERSION = "2.0.24" def _load_env(): """Загрузить переменные окружения из .env файла при его наличии. Назначение: Позволяет локальному серверу разработки и фоновым скриптам автоматически считывать боевые или тестовые параметры (включая LLM_API_KEY и URL сервисов) без необходимости ручного экспорта в shell. Почему так: Порядок поиска обходит текущую директорию site/, родительский каталог contracts-flask/ и корень репозитория. Значения уже установленных системных переменных окружения имеют приоритет и НЕ перезаписываются. """ for candidate in [ os.path.join(os.path.dirname(__file__), ".env"), os.path.join(os.path.dirname(__file__), "..", ".env"), os.path.join(os.path.dirname(__file__), "..", "..", ".env"), ]: if os.path.isfile(candidate): try: with open(candidate, "r", encoding="utf-8") as f: for line in f: line = line.strip() if line and not line.startswith("#") and "=" in line: k, v = line.split("=", 1) k = k.strip() v = v.strip().strip('"').strip("'") if k and k not in os.environ: os.environ[k] = v except Exception: pass _load_env() LLM_URL = os.getenv("LLM_API_URL", "https://api.aillm.ru/v1/chat/completions") LLM_KEY = os.getenv("LLM_API_KEY") or os.getenv("LLM_KEY", "") LLM_MODEL = os.getenv("LLM_MODEL", "gpt-oss-120b") MAX_CONTENT_LENGTH = 200 * 1024 * 1024 # 200 MB API_KEY = os.getenv("API_KEY", "") CONVERT_SERVICE_URL = os.getenv("CONVERT_SERVICE_URL", "https://liberta.containerk8s.dev.nubes.ru") # ── VM-буфер загрузки (паттерн drhider) ────────────────────────────── # Браузер кладёт файл на ВМ через WebDAV (мимо шлюза кластера ~64КБ), # бэк сам тянет его исходящим GET (egress без лимита). VM_UPLOAD_URL = os.getenv("VM_UPLOAD_URL", "https://contracts-upload.sinefo.ru/contracts-upload/") # SSRF-защита: тянуть можно ТОЛЬКО с этого префикса. VM_UPLOAD_PREFIX = os.getenv("VM_UPLOAD_PREFIX", "https://contracts-upload.sinefo.ru/contracts-upload/") # Лимит на один файл (совпадает с фронтом). VM_UPLOAD_MAX_BYTES = int(os.getenv("VM_UPLOAD_MAX_BYTES", str(50 * 1024 * 1024))) # Ретраи pull с ВМ (разовые DNS/сетевые сбои не роняют загрузку). PULL_RETRIES = int(os.getenv("PULL_RETRIES", "3")) PULL_RETRY_DELAY = 2.0