72 lines
4.5 KiB
Python
72 lines
4.5 KiB
Python
import os
|
||
from pathlib import Path
|
||
|
||
# ── Загрузка .env ─────────────────────────────────────────────────────
|
||
# Раньше .env не читался вообще (gunicorn не читает, systemd override сломан).
|
||
# Теперь явно грузим его ДО os.getenv(). Путь — /opt/morozovka-portal/.env
|
||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||
_ENV_FILE = BASE_DIR / ".env"
|
||
try:
|
||
from dotenv import load_dotenv
|
||
if _ENV_FILE.is_file():
|
||
load_dotenv(_ENV_FILE, override=False) # override=False — systemd Environment важнее
|
||
except ImportError:
|
||
# python-dotenv не установлен — просто читаем вручную (без парсинга кавычек, нам хватит)
|
||
if _ENV_FILE.is_file():
|
||
for line in _ENV_FILE.read_text(encoding="utf-8").splitlines():
|
||
line = line.strip()
|
||
if not line or line.startswith("#") or "=" not in line:
|
||
continue
|
||
k, _, v = line.partition("=")
|
||
k, v = k.strip(), v.strip().strip('"').strip("'")
|
||
os.environ.setdefault(k, v)
|
||
|
||
# ── База данных ───────────────────────────────────────────────────────
|
||
POSTGRES_USER = os.getenv("POSTGRES_USER", "morozovka")
|
||
POSTGRES_PASSWORD = os.getenv("POSTGRES_PASSWORD", "rf-slf-1945")
|
||
POSTGRES_DB = os.getenv("POSTGRES_DB", "morozovka_portal")
|
||
POSTGRES_HOST = os.getenv("POSTGRES_HOST", "127.0.0.1")
|
||
POSTGRES_PORT = os.getenv("POSTGRES_PORT", "5432")
|
||
|
||
DATABASE_URL = f"postgresql+psycopg2://{POSTGRES_USER}:{POSTGRES_PASSWORD}@{POSTGRES_HOST}:{POSTGRES_PORT}/{POSTGRES_DB}"
|
||
|
||
# ── Gitea ─────────────────────────────────────────────────────────────
|
||
GITEA_URL = os.getenv("GITEA_URL", "http://127.0.0.1:3000")
|
||
GITEA_PUBLIC_URL = os.getenv("GITEA_PUBLIC_URL", "https://git.morozovka.space")
|
||
GITEA_CLIENT_ID = os.getenv("GITEA_CLIENT_ID", "66697efe-d88b-41fe-b3d5-6498d978e1fa")
|
||
GITEA_CLIENT_SECRET = os.getenv("GITEA_CLIENT_SECRET", "gto_okjv2yj2jjrsqo6qeniz6nbnqulloo4x2rrwex6p4cqx7azrc27a")
|
||
GITEA_API_TOKEN = os.getenv("GITEA_API_TOKEN", "")
|
||
|
||
# Секрет для проверки подписи вебхуков Gitea.
|
||
# ВАЖНО: если пусто — вебхук принимается БЕЗ проверки подписи.
|
||
GITEA_WEBHOOK_SECRET = os.getenv("GITEA_WEBHOOK_SECRET", "")
|
||
|
||
# ── Сессии / подписи ──────────────────────────────────────────────────
|
||
WEB_SECRET = os.getenv("WEB_SECRET", "super-secret-morozovka-key-2026")
|
||
|
||
# ── SMTP ──────────────────────────────────────────────────────────────
|
||
SMTP_SERVER = os.getenv("SMTP_SERVER", "")
|
||
SMTP_PORT = int(os.getenv("SMTP_PORT", "587"))
|
||
SMTP_USER = os.getenv("SMTP_USER", "")
|
||
SMTP_PASSWORD = os.getenv("SMTP_PASSWORD", "")
|
||
SMTP_FROM = os.getenv("SMTP_FROM", "noreply@morozovka.space")
|
||
GITEA_REDIRECT_URI = os.getenv("GITEA_REDIRECT_URI", "https://portal.morozovka.space/auth/callback")
|
||
|
||
# ── Google Calendar sync ──────────────────────────────────────────────
|
||
# Раньше CALENDAR_ID был захардкожен в google_sync.py — вынесли в env.
|
||
GOOGLE_CALENDAR_ID = os.getenv("GOOGLE_CALENDAR_ID", "korneshoc@gmail.com")
|
||
GOOGLE_CREDENTIALS_FILE = os.getenv(
|
||
"GOOGLE_CREDENTIALS_FILE",
|
||
str(BASE_DIR / "google_credentials.json"),
|
||
)
|
||
|
||
# ── LLM ───────────────────────────────────────────────────────────────
|
||
LLM_ENABLED = os.getenv("LLM_ENABLED", "false").lower() == "true"
|
||
LLM_API_BASE = os.getenv("LLM_API_BASE", "http://localhost:11434/v1")
|
||
LLM_API_KEY = os.getenv("LLM_API_KEY", "ollama")
|
||
LLM_MODEL = os.getenv("LLM_MODEL", "qwen2.5:14b")
|
||
LLM_MAX_TOKENS = int(os.getenv("LLM_MAX_TOKENS", "1024"))
|
||
LLM_TEMPERATURE = float(os.getenv("LLM_TEMPERATURE", "0.2"))
|
||
LLM_TIMEOUT = int(os.getenv("LLM_TIMEOUT", "120"))
|
||
LLM_MAX_HISTORY = int(os.getenv("LLM_MAX_HISTORY", "10"))
|