Files
Brancheneinstufung2/MIGRATION_REPORT_COMPETITOR_ANALYSIS.md

3.8 KiB

Migration Report: Competitor Analysis Agent

Status: Jan 10, 2026 - SUCCESS

Die App ist unter /ca/ voll funktionsfähig. Diese Migration dauerte 5 Stunden statt 15 Minuten. Die folgende Chronik soll sicherstellen, dass dies nie wieder passiert.

🚨 Chronik der Fehler & Lösungen

  1. Problem: 404 auf /ca/

    • Annahme: Nginx-Konfiguration oder Vite base Pfad ist falsch.
    • Analyse: Beides war korrekt. Der competitor-analysis Container startete gar nicht.
  2. Problem: SyntaxError: unterminated string literal

    • Analyse: Python-Logs zeigten den Absturz. Der f-string im Prompt war fehlerhaft (z.B. durch " statt """ am Ende).
    • Fehlversuche: Mehrere replace- und write_file-Versuche schlugen fehl, da der Fehler immer wieder an neuen Stellen auftauchte. Ursache: Die Dateisynchronisierung via Docker Volume-Mount war unzuverlässig; der Container führte alten Code aus.
    • Lösung: Umstellung aller Prompts auf die robuste .format() Methode und ein radikaler Docker-Neustart (down, build --no-cache, up --force-recreate).
    • Lehre: VERWENDE NIEMALS f-strings FÜR KOMPLEXE PROMPTS!
  3. Problem: ImportError: cannot import name 'Schema'

    • Analyse: Der Code verwendete moderne SDK-Features (Schema-Klasse), aber die requirements.txt hatte das uralte google-generativeai==0.3.0 spezifiziert.
    • Lösung: Umstellung aller Schema(...) Objekte auf einfache Python-Dictionaries.
    • Lehre: IMMER requirements.txt PRÜFEN!
  4. Problem: TypeError: unexpected keyword argument 'response_mime_type' / 'response_schema'

    • Analyse: Selbst nach Korrektur der Schema-Klasse kannte das alte SDK 0.3.0 diese Argumente nicht.
    • Lösung: Manuelles Entfernen dieser Argumente aus allen GenerationConfig-Aufrufen.
  5. Problem: 404 models/gemini-1.5-pro is not found for API version v1beta

    • Analyse: Das alte SDK 0.3.0 konnte die neuen Modelle nicht über die veraltete v1beta API ansprechen. Selbst der Fallback auf gemini-pro scheiterte.
    • Lösung (Der entscheidende Durchbruch): Radikales Upgrade.
      1. google-generativeai aus requirements.txt entfernt.
      2. Das moderne google-genai Paket hinzugefügt.
      3. Den Orchestrator komplett auf den neuen genai.Client umgeschrieben.
  6. Problem: TypeError: unexpected keyword argument 'client_options'

    • Analyse: Obwohl google-genai in requirements.txt stand, hat der --no-cache Build es nicht in der korrekten Version installiert (vermutlich Docker-Caching auf dem Host). Der Client kannte die Option zur API-Versions-Erzwingung nicht.
    • Lösung: Hinzufügen einer minimalen Version (google-genai>=1.2.0) und google-api-core zur requirements.txt und ein weiterer --no-cache Build.
  7. Problem: TypeError: Cannot read properties of undefined (reading 'map') (Frontend)

    • Analyse: Das Backend lief, aber das Frontend crashte. Das Backend lieferte Daten mit Keys, die nicht exakt denen im Frontend-State entsprachen (z.B. target_industries vs. industries).
    • Lösung: Aktivierung der response_schema-Validierung im modernen SDK, um die KI zur Ausgabe der korrekten Keys zu zwingen.

Finale Konfiguration & Lessons Learned

  1. SDK: Immer das neueste google-genai Paket mit einer Mindestversion (>=1.2.0) verwenden.
  2. Prompts: Immer .format() für Prompts.
  3. Docker: Bei Problemen sofort --no-cache und --force-recreate verwenden.
  4. Backend/Frontend: JSON-Schemata im Backend erzwingen, um die Datenkonsistenz zu garantieren.
  5. Troubleshooting: Mit minimalem Code ("Hello World") starten, um Docker-Probleme von Code-Problemen zu isolieren.

Dokumentation finalisiert am 10.01.2026 nach erfolgreicher Migration.