refactor(env): unify Docker env vars — canonical AUTH_SECRET_KEY, remove JWT_SECRET fallback

Canonical variables:
  - AUTH_SECRET_KEY — JWT signing key for backend + agent (was split across
    AUTH_SECRET_KEY / JWT_SECRET)
  - SERVICE_JWT — agent→backend service token
  - No JWT_SECRET fallback: decoder fails with migration guidance if only
    JWT_SECRET is set

Compose files unified:
  - docker-compose.yml, docker-compose.enterprise-clean.yml,
    docker-compose.e2e.yml — all use AUTH_SECRET_KEY
  - build.sh generated compose now passes AUTH_SECRET_KEY + ENCRYPTION_KEY
    to backend

Env examples unified and completed:
  - .env.example — comprehensive template, all compose vars
  - .env.enterprise-clean.example — production template
  - backend/.env.example — backend-only run
  - docker/.env.agent.example — agent-only run
  - NEW: .env.current.example, .env.master.example,
    .env.e2e.example, frontend/.env.example

Tests aligned:
  - conftest sets AUTH_SECRET_KEY (canonical value matched across test files)
  - test mocks use canonical name
  - 1176 passed, 0 failed
This commit is contained in:
2026-07-06 14:24:17 +03:00
parent a5b7adb61c
commit 48e3ff4503
15 changed files with 586 additions and 126 deletions

View File

@@ -1,6 +1,37 @@
# Agent container env vars
# LLM конфигурация берётся из FastAPI /api/agent/llm-config (настраивается через web UI).
AUTH_SECRET_KEY=<shared-with-backend-secret> # JWT-ключ (общий с backend)
FASTAPI_URL=http://backend:8000 # URL основного API
SERVICE_JWT=<agent-service-secret> # Сервисный токен для agent→backend
DATABASE_URL=postgresql+psycopg2://postgres:postgres@db:5432/ss_tools # БД для checkpoint'ов
# Используется для прямого запуска агента (без docker compose).
# При использовании docker-compose — переменные задаются в compose/environment.
# ВАЖНО: AUTH_SECRET_KEY должен совпадать с ключом бекенда.
# ── Безопасность (ОБЯЗАТЕЛЬНО) ─────────────────────────────────────────
# JWT-ключ подписи токенов — единый для backend и agent.
# Сгенерировать: python3 -c "import secrets; print(secrets.token_urlsafe(32))"
AUTH_SECRET_KEY=<same-as-backend-AUTH_SECRET_KEY>
# Сервисный токен для agent→backend вызовов.
SERVICE_JWT=agent-service-secret
# ── Подключение ────────────────────────────────────────────────────────
FASTAPI_URL=http://backend:8000
DATABASE_URL=postgresql+psycopg2://postgres:postgres@db:5432/ss_tools
# ── LLM ────────────────────────────────────────────────────────────────
LLM_API_KEY=
LLM_BASE_URL=https://api.openai.com/v1
LLM_MODEL=gpt-4o
# ── Gradio ─────────────────────────────────────────────────────────────
GRADIO_SERVER_NAME=0.0.0.0
GRADIO_SERVER_PORT=7860
# GRADIO_ALLOW_PORT_FALLBACK=true
# ── Тонкие настройки агента ────────────────────────────────────────────
# AGENT_ENABLE_LLM_TITLES=true
# AGENT_TITLE_GENERATION_TIMEOUT_S=0.25
# AGENT_PREFETCH_DASHBOARD_LIMIT=25
# AGENT_CONFIRM_TOOLS=false
# AGENT_INTERRUPT_BEFORE=
# ── Embedding routing (только для bundle:embeddings) ────────────────────
# EMBEDDING_SIMILARITY_THRESHOLD=0.65
# EMBEDDING_TOP_K=5