Files
Brancheneinstufung2/MIGRATION_REPORT_COMPETITOR_ANALYSIS.md

3.5 KiB

Migration Report: Competitor Analysis Agent

Status: Jan 10, 2026 - FINAL SUCCESS

Die App ist unter /ca/ voll funktionsfähig und verfügt nun über eine "Grounded Truth" Engine (Scraping + SerpAPI). Diese Migration dauerte aufgrund einer extremen Fehlerverkettung über 5 Stunden.

🚨 Vollständige Chronik der Fehler & Lösungen

  1. Problem: 404 auf /ca/

    • Ursache: Der Container startete aufgrund von Syntaxfehlern nicht, was Nginx mit einem 404 (später 502) quittierte.
  2. Problem: SyntaxError: unterminated string literal (Runde 1)

    • Ursache: Verwendung von f"""...""" für komplexe Prompts.
    • Lösung: Umstellung auf .format(). Wichtig: Docker-Volumes synchronisierten nicht zuverlässig, was zu "Phantom-Fehlern" führte. Ein build --no-cache war nötig.
  3. Problem: ImportError: cannot import name 'Schema'

    • Ursache: Uralte SDK-Version google-generativeai==0.3.0 in requirements.txt.
    • Lösung: Umstellung auf Dictionaries, später komplettes SDK-Upgrade.
  4. Problem: 404 models/gemini-1.5-pro ... for API version v1beta

    • Ursache: Das alte SDK nutzte veraltete Endpunkte.
    • Lösung: Migration auf das moderne google-genai Paket (v1.x) und Nutzung des neuen genai.Client.
  5. Problem: TypeError: unexpected keyword argument 'client_options'

    • Analyse: Obwohl das SDK in requirements.txt aktualisiert wurde, installierte Docker auf der Diskstation hartnäckig eine alte Version.
    • Lösung: Erzwingen der Version google-genai>=1.2.0.
  6. Problem: Das "Grounding Upgrade" & Die Syntax-Hölle (Runde 2)

    • Aufgabe: Einbau von echtem Web-Scraping und SerpAPI zur Qualitätssteigerung.
    • Fehler: SyntaxError: f-string: expecting '}' in komplexen Listen-Generatoren (z.B. c_sum).
    • Ursache: Python 3.11 erlaubt keine geschachtelten Anführungszeichen in F-Strings, wenn diese Backslashes oder komplexe Ausdrücke enthalten.
    • Lösung: RADIKALER VERZICHT auf F-Strings in allen kritischen Logik-Bereichen. Umstellung auf einfache Schleifen und .format().
  7. Problem: unterminated string literal (detected at line 203)

    • Ursache: Einfache Anführungszeichen ' in Kombination mit \n wurden im Container-Kontext falsch interpretiert.
    • Lösung: ULTIMATIVE SYNTAX: Verwendung von Triple Raw Quotes (r"""...""") für jeden einzelnen String, der Variablen oder Sonderzeichen enthält.

🛡️ Die finale "Grounded" Architektur

  • Scraping: Nutzt requests und BeautifulSoup, um nicht nur die Homepage, sondern auch Produkt- und Branchen-Unterseiten zu lesen.
  • Discovery: Findet relevante Links automatisch auf der Homepage.
  • SerpAPI: Sucht via Google (site:domain.com) nach den tiefsten Fakten, bevor die KI gefragt wird.
  • Logging: Jede KI-Anfrage und jede Antwort wird im DEBUG-Level vollständig protokolliert.

Lessons Learned für die Ewigkeit

  1. F-STRINGS SIND VERBOTEN für Prompts und komplexe Listen-Operationen.
  2. TRIPLE RAW QUOTES (r"""...""") sind der einzige sichere Weg für Strings in Docker-Umgebungen.
  3. DUAL SDK STRATEGY: Legacy SDK für Stabilität (gemini-2.0-flash), Modern SDK für Spezial-Features.
  4. API KEY LOADING: Immer /app/gemini_api_key.txt ZUERST prüfen, dann Environment.

Dokumentation finalisiert am 10.01.2026 nach erfolgreicher Migration und Grounding-Implementierung.