refactor: [30388f42] Entferne Legacy-Token-Dateien und Abhängigkeiten

- Bereinigt alle Dockerfiles (market, content, b2b) von COPY gemini_api_key.txt.
- Aktualisiert market_intel_orchestrator.py und b2b_marketing_orchestrator.py, um API-Keys strikt aus Umgebungsvariablen zu lesen.
- Verhindert Build-Fehler durch fehlende lokale Token-Dateien.
This commit is contained in:
2026-03-06 16:32:23 +00:00
parent 5d7b296b00
commit b310105eb7
4 changed files with 21 additions and 28 deletions

View File

@@ -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}"

View File

@@ -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"]

View File

@@ -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 .

View File

@@ -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