cleanup: убрать мёртвые env-переменные, консолидировать чтение в agent/_config.py

Удалены из кода:
- JWT_SECRET — мёртвая (decode_token использует AUTH_SECRET_KEY)
- SESSION_SECRET_KEY — заменён на прямой AUTH_SECRET_KEY
- POSTGRES_URL — deprecated fallback, удалён из database.py и reencrypt.py

Консолидировано чтение env-переменных agent-модуля:
- Создан agent/_config.py — единый модуль для FASTAPI_URL,
  SERVICE_JWT, GRADIO_*, STORAGE_ROOT, AGENT_* (9 констант)
- Все agent/*.py импортируют из _config вместо разрозненных os.getenv

Удалены or-дефолты (безопасность):
- agent/langgraph_setup.py — удалён hardcoded DB URL postgres:postgres
- agent/langgraph_setup.py — удалены fallback API URL и model name
- scripts/reencrypt.py — удалён hardcoded DB URL postgres:postgres
- plugins/llm_analysis/service.py — удалены or-дефолты URL/app name

.env.example — минимализация:
- backend/.env.example: только 4 обязательные переменные
- root/.env.example: обязательные + docker + SSO/админ

Обновлены тесты (139 passed)
This commit is contained in:
2026-07-04 14:58:43 +03:00
parent a99c1d6d01
commit ec9bc76a37
16 changed files with 163 additions and 179 deletions

View File

@@ -1,23 +1,21 @@
# ── Required: Secrets ──
# Generate with: python -c "import secrets; print(secrets.token_urlsafe(32))"
# ======================================================================
# superset-tools — backend .env.example
# Только обязательные переменные. Остальное настраивается через web UI.
# ======================================================================
# ── Обязательно: секреты ──
# JWT-ключ подписи токенов (backend + agent используют один)
# Сгенерировать: python -c "import secrets; print(secrets.token_urlsafe(32))"
AUTH_SECRET_KEY=change-me-to-a-random-secret
# Generate with: python3 -c "import base64,os; print(base64.urlsafe_b64encode(os.urandom(32)).decode())"
# Fernet-ключ шифрования паролей подключений и API-ключей
# Сгенерировать: python3 -c "import base64,os; print(base64.urlsafe_b64encode(os.urandom(32)).decode())"
ENCRYPTION_KEY=
# ── Required: Database ──
# PostgreSQL via docker-compose:
# ── Обязательно: база данных ──
# PostgreSQL
DATABASE_URL=postgresql+psycopg2://postgres:postgres@localhost:5432/ss_tools
# Отдельная БД для аутентификации (если не задана — требуется явно)
AUTH_DATABASE_URL=postgresql+psycopg2://postgres:postgres@localhost:5432/ss_tools
# Отдельная БД для задач (если не задана — DATABASE_URL)
TASKS_DATABASE_URL=postgresql+psycopg2://postgres:postgres@localhost:5432/ss_tools
# Run after pulling: cd backend && source .venv/bin/activate && alembic upgrade head
# ── Optional ──
ALLOWED_ORIGINS=http://localhost:5173
SESSION_SECRET_KEY=change-me-to-a-random-secret
FEATURES__DATASET_REVIEW=true
FEATURES__HEALTH_MONITOR=true
APP_TIMEZONE=Europe/Moscow
# HSTS — включать только при настроенном HTTPS (nginx/ingress)
# Включение без сертификатов сломает доступ к сайту!
# FORCE_HTTPS=true