morozovka-portal/app/config.py

72 lines
4.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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"))