Control-Pipeline (Pass 0a/0b, BatchDedup, Generator) als eigenstaendiger Service in Core, damit Compliance-Repo unabhaengig refakturiert werden kann. Schreibt weiterhin ins compliance-Schema der shared PostgreSQL. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
import os
|
|
|
|
|
|
class Settings:
|
|
"""Environment-based configuration for control-pipeline."""
|
|
|
|
# Database (compliance schema)
|
|
DATABASE_URL: str = os.getenv(
|
|
"DATABASE_URL",
|
|
"postgresql://breakpilot:breakpilot123@localhost:5432/breakpilot_db",
|
|
)
|
|
SCHEMA_SEARCH_PATH: str = os.getenv(
|
|
"SCHEMA_SEARCH_PATH", "compliance,core,public"
|
|
)
|
|
|
|
# Qdrant (vector search for dedup)
|
|
QDRANT_URL: str = os.getenv("QDRANT_URL", "http://localhost:6333")
|
|
QDRANT_API_KEY: str = os.getenv("QDRANT_API_KEY", "")
|
|
|
|
# Embedding Service
|
|
EMBEDDING_SERVICE_URL: str = os.getenv(
|
|
"EMBEDDING_SERVICE_URL", "http://embedding-service:8087"
|
|
)
|
|
|
|
# LLM - Anthropic
|
|
ANTHROPIC_API_KEY: str = os.getenv("ANTHROPIC_API_KEY", "")
|
|
CONTROL_GEN_ANTHROPIC_MODEL: str = os.getenv(
|
|
"CONTROL_GEN_ANTHROPIC_MODEL", "claude-sonnet-4-6"
|
|
)
|
|
DECOMPOSITION_LLM_MODEL: str = os.getenv(
|
|
"DECOMPOSITION_LLM_MODEL", "claude-haiku-4-5-20251001"
|
|
)
|
|
CONTROL_GEN_LLM_TIMEOUT: int = int(
|
|
os.getenv("CONTROL_GEN_LLM_TIMEOUT", "180")
|
|
)
|
|
|
|
# LLM - Ollama (fallback)
|
|
OLLAMA_URL: str = os.getenv(
|
|
"OLLAMA_URL", "http://host.docker.internal:11434"
|
|
)
|
|
CONTROL_GEN_OLLAMA_MODEL: str = os.getenv(
|
|
"CONTROL_GEN_OLLAMA_MODEL", "qwen3.5:35b-a3b"
|
|
)
|
|
|
|
# SDK Service (for RAG search proxy)
|
|
SDK_URL: str = os.getenv(
|
|
"SDK_URL", "http://ai-compliance-sdk:8090"
|
|
)
|
|
|
|
# Auth
|
|
JWT_SECRET: str = os.getenv("JWT_SECRET", "")
|
|
|
|
# Server
|
|
PORT: int = int(os.getenv("PORT", "8098"))
|
|
LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO")
|
|
ENVIRONMENT: str = os.getenv("ENVIRONMENT", "development")
|
|
|
|
# Pipeline
|
|
DECOMPOSITION_BATCH_SIZE: int = int(
|
|
os.getenv("DECOMPOSITION_BATCH_SIZE", "5")
|
|
)
|
|
DECOMPOSITION_LLM_TIMEOUT: int = int(
|
|
os.getenv("DECOMPOSITION_LLM_TIMEOUT", "120")
|
|
)
|
|
|
|
|
|
settings = Settings()
|