3.8 KiB
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
-
Problem: 404 auf
/ca/- Annahme: Nginx-Konfiguration oder Vite
basePfad ist falsch. - Analyse: Beides war korrekt. Der
competitor-analysisContainer startete gar nicht.
- Annahme: Nginx-Konfiguration oder Vite
-
Problem:
SyntaxError: unterminated string literal- Analyse: Python-Logs zeigten den Absturz. Der
f-stringim Prompt war fehlerhaft (z.B. durch"statt"""am Ende). - Fehlversuche: Mehrere
replace- undwrite_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!
- Analyse: Python-Logs zeigten den Absturz. Der
-
Problem:
ImportError: cannot import name 'Schema'- Analyse: Der Code verwendete moderne SDK-Features (
Schema-Klasse), aber dierequirements.txthatte das uraltegoogle-generativeai==0.3.0spezifiziert. - Lösung: Umstellung aller
Schema(...)Objekte auf einfache Python-Dictionaries. - Lehre: IMMER
requirements.txtPRÜFEN!
- Analyse: Der Code verwendete moderne SDK-Features (
-
Problem:
TypeError: unexpected keyword argument 'response_mime_type'/'response_schema'- Analyse: Selbst nach Korrektur der
Schema-Klasse kannte das alte SDK0.3.0diese Argumente nicht. - Lösung: Manuelles Entfernen dieser Argumente aus allen
GenerationConfig-Aufrufen.
- Analyse: Selbst nach Korrektur der
-
Problem:
404 models/gemini-1.5-pro is not found for API version v1beta- Analyse: Das alte SDK
0.3.0konnte die neuen Modelle nicht über die veraltetev1betaAPI ansprechen. Selbst der Fallback aufgemini-proscheiterte. - Lösung (Der entscheidende Durchbruch): Radikales Upgrade.
google-generativeaiausrequirements.txtentfernt.- Das moderne
google-genaiPaket hinzugefügt. - Den Orchestrator komplett auf den neuen
genai.Clientumgeschrieben.
- Analyse: Das alte SDK
-
Problem:
TypeError: unexpected keyword argument 'client_options'- Analyse: Obwohl
google-genaiinrequirements.txtstand, hat der--no-cacheBuild 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) undgoogle-api-corezurrequirements.txtund ein weiterer--no-cacheBuild.
- Analyse: Obwohl
-
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_industriesvs.industries). - Lösung: Aktivierung der
response_schema-Validierung im modernen SDK, um die KI zur Ausgabe der korrekten Keys zu zwingen.
- Analyse: Das Backend lief, aber das Frontend crashte. Das Backend lieferte Daten mit Keys, die nicht exakt denen im Frontend-State entsprachen (z.B.
Finale Konfiguration & Lessons Learned
- SDK: Immer das neueste
google-genaiPaket mit einer Mindestversion (>=1.2.0) verwenden. - Prompts: Immer
.format()für Prompts. - Docker: Bei Problemen sofort
--no-cacheund--force-recreateverwenden. - Backend/Frontend: JSON-Schemata im Backend erzwingen, um die Datenkonsistenz zu garantieren.
- Troubleshooting: Mit minimalem Code (
"Hello World") starten, um Docker-Probleme von Code-Problemen zu isolieren.
Dokumentation finalisiert am 10.01.2026 nach erfolgreicher Migration.