diff --git a/b2b-marketing-assistant/b2b_marketing_orchestrator.py b/b2b-marketing-assistant/b2b_marketing_orchestrator.py index 450532b1..653c4eef 100644 --- a/b2b-marketing-assistant/b2b_marketing_orchestrator.py +++ b/b2b-marketing-assistant/b2b_marketing_orchestrator.py @@ -333,12 +333,11 @@ PROMPTS = { # --- API & SCRAPING HELPERS --- def load_api_key(): - try: - with open("gemini_api_key.txt", "r") as f: - return f.read().strip() - except FileNotFoundError: - logging.error("API key file 'gemini_api_key.txt' not found.") + api_key = os.getenv("GEMINI_API_KEY") + if not api_key: + logging.error("GEMINI_API_KEY environment variable not found.") return None + return api_key def call_gemini_api(prompt, api_key, retries=3): url = f"https://generativelanguage.googleapis.com/v1/models/gemini-2.5-flash:generateContent?key={api_key}" diff --git a/content-engine/Dockerfile b/content-engine/Dockerfile index e1c26379..5463eb14 100644 --- a/content-engine/Dockerfile +++ b/content-engine/Dockerfile @@ -35,8 +35,5 @@ COPY config.py ./ # Copy built frontend COPY --from=frontend-build /app/frontend/dist ./dist -# Keys and persistence placeholders -RUN touch gemini_api_key.txt serpapikey.txt - EXPOSE 3006 CMD ["node", "server.cjs"] \ No newline at end of file diff --git a/dockerfiles/Dockerfile.market b/dockerfiles/Dockerfile.market index df3793f0..2ae20a74 100644 --- a/dockerfiles/Dockerfile.market +++ b/dockerfiles/Dockerfile.market @@ -24,10 +24,9 @@ RUN cd general-market-intelligence && npm install --omit=dev # 4. App Code COPY general-market-intelligence/server.cjs ./general-market-intelligence/ -COPY market_intel_orchestrator.py . +COPY general-market-intelligence/market_intel_orchestrator.py . COPY market_db_manager.py . COPY config.py . -COPY gemini_api_key.txt . # (Falls helpers.py existiert, wird sie durch docker-compose volume gemountet, aber wir kopieren sie für Standalone-Builds) COPY helpers.py . diff --git a/general-market-intelligence/market_intel_orchestrator.py b/general-market-intelligence/market_intel_orchestrator.py index 179cbf55..247476dc 100644 --- a/general-market-intelligence/market_intel_orchestrator.py +++ b/general-market-intelligence/market_intel_orchestrator.py @@ -37,26 +37,24 @@ logging.basicConfig( logger = logging.getLogger(__name__) # --- END AUTARKES LOGGING SETUP --- # -def load_gemini_api_key(file_path="gemini_api_key.txt"): - try: - with open(file_path, "r") as f: - api_key = f.read().strip() - return api_key - except Exception as e: - logger.critical(f"Fehler beim Laden des Gemini API Keys: {e}") - raise +def load_gemini_api_key(file_path=None): + """Loads the Gemini API Key from environment variables.""" + api_key = os.getenv("GEMINI_API_KEY") + if not api_key: + logger.critical("Gemini API Key not found in environment variables.") + # Fallback for local dev if absolutely necessary, but prefer env + if file_path and os.path.exists(file_path): + with open(file_path, "r") as f: return f.read().strip() + raise ValueError("GEMINI_API_KEY not set") + return api_key -def load_serp_api_key(file_path="serpapikey.txt"): - """Lädt den SerpAPI Key. Gibt None zurück, wenn nicht gefunden.""" - try: - if os.path.exists(file_path): - with open(file_path, "r") as f: - return f.read().strip() - # Fallback: Versuche Umgebungsvariable - return os.environ.get("SERP_API_KEY") - except Exception as e: - logger.warning(f"Konnte SerpAPI Key nicht laden: {e}") +def load_serp_api_key(file_path=None): + """Loads the SerpAPI Key from environment variables.""" + api_key = os.getenv("SERP_API_KEY") + if not api_key: + logger.warning("SerpAPI Key not found in environment variables.") return None + return api_key def get_website_text(url): # Auto-fix missing scheme