# 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.*