61 lines
3.2 KiB
Python
61 lines
3.2 KiB
Python
"""Конфигурация приложения — все настройки в одном месте."""
|
|
import os
|
|
|
|
VERSION = "3.0.3"
|
|
|
|
|
|
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
|