- Entfernt Abhängigkeit von Umgebungsvariablen für DB-Pfade in config.py (Explorer) und queue_manager.py (Connector). - Setzt die Pfade fest auf /data/companies_v3_fixed_2.db und /data/connector_queue.db. - Dies stellt sicher, dass die Anwendungen zwingend auf die korrekt gemounteten Volumes zugreifen.
74 lines
2.2 KiB
Python
74 lines
2.2 KiB
Python
import os
|
|
import logging
|
|
from typing import Optional
|
|
|
|
# Versuche Pydantic zu nutzen, Fallback auf os.environ
|
|
try:
|
|
from pydantic_settings import BaseSettings
|
|
from pydantic import Extra
|
|
|
|
class Settings(BaseSettings):
|
|
# App Info
|
|
APP_NAME: str = "Company Explorer"
|
|
VERSION: str = "0.7.3"
|
|
DEBUG: bool = True
|
|
|
|
# Database (FINAL CORRECT PATH for Docker Container)
|
|
DATABASE_URL: str = "sqlite:////data/companies_v3_fixed_2.db"
|
|
|
|
# API Keys
|
|
GEMINI_API_KEY: Optional[str] = None
|
|
OPENAI_API_KEY: Optional[str] = None
|
|
SERP_API_KEY: Optional[str] = None
|
|
|
|
# Paths
|
|
LOG_DIR: str = "/app/Log_from_docker"
|
|
|
|
# Public URL
|
|
APP_BASE_URL: str = "http://localhost:8090"
|
|
|
|
class Config:
|
|
env_file = ".env"
|
|
extra = 'ignore'
|
|
|
|
settings = Settings()
|
|
|
|
except ImportError:
|
|
# Fallback wenn pydantic-settings nicht installiert ist
|
|
class FallbackSettings:
|
|
APP_NAME = "Company Explorer"
|
|
VERSION = "0.7.3"
|
|
DEBUG = True
|
|
# HARDCODED PATH TO FORCE CONSISTENCY
|
|
DATABASE_URL = "sqlite:////data/companies_v3_fixed_2.db"
|
|
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
|
|
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
|
|
SERP_API_KEY = os.getenv("SERP_API_KEY")
|
|
LOG_DIR = "/app/Log_from_docker"
|
|
|
|
settings = FallbackSettings()
|
|
|
|
# Ensure Log Dir
|
|
try:
|
|
os.makedirs(settings.LOG_DIR, exist_ok=True)
|
|
except FileExistsError:
|
|
pass
|
|
except Exception as e:
|
|
logging.warning(f"Could not create log directory {settings.LOG_DIR}: {e}")
|
|
|
|
# API Key Loading Helper (from file if env missing)
|
|
def load_api_key_from_file(filename: str) -> Optional[str]:
|
|
try:
|
|
if os.path.exists(filename):
|
|
with open(filename, 'r') as f:
|
|
return f.read().strip()
|
|
except Exception as e:
|
|
logging.warning(f"Could not load key from {filename}: {e}")
|
|
return None
|
|
|
|
# Auto-load keys assuming the app runs in the Docker container's /app context
|
|
if not settings.GEMINI_API_KEY:
|
|
settings.GEMINI_API_KEY = load_api_key_from_file("/app/gemini_api_key.txt")
|
|
|
|
if not settings.SERP_API_KEY:
|
|
settings.SERP_API_KEY = load_api_key_from_file("/app/serpapikey.txt") |