feat(gtm): upgrade to google-genai, fix image gen & frontend crash

This commit is contained in:
2026-01-04 16:02:23 +00:00
parent 3b1f2967cb
commit 9ac2b9c466
242 changed files with 6075 additions and 448 deletions

View File

@@ -14,7 +14,7 @@ import gtm_db_manager as db_manager
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from helpers import call_gemini_flash, scrape_website_details
from helpers import call_gemini_flash, scrape_website_details, call_gemini_image
from config import Config, BASE_DIR # Import Config and BASE_DIR
LOG_DIR = "Log_from_docker"
@@ -401,21 +401,31 @@ def translate(payload):
return {"report": "Translated report will be here."}
def image(payload):
prompt = payload.get('prompt', 'No Prompt')[:50] + "..."
# Create a simple SVG placeholder to avoid frontend crash
svg = f"""
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg">
<rect width="100%" height="100%" fill="#eee"/>
<text x="50%" y="50%" font-family="Arial" font-size="20" fill="#555" text-anchor="middle" dy=".3em">
Image Generation Not Configured
</text>
<text x="50%" y="60%" font-family="Arial" font-size="12" fill="#888" text-anchor="middle" dy=".3em">
{prompt}
</text>
</svg>
"""
svg_b64 = base64.b64encode(svg.encode('utf-8')).decode('utf-8')
return {"imageBase64": f"data:image/svg+xml;base64,{svg_b64}"}
prompt = payload.get('prompt', 'No Prompt')
project_id = payload.get('projectId')
# Versuche, ein Referenzbild aus dem Payload zu holen (für Image-to-Image)
# Frontend sendet "referenceImagesBase64" (Array)
ref_images = payload.get('referenceImagesBase64')
ref_image = None
if ref_images and isinstance(ref_images, list) and len(ref_images) > 0:
ref_image = ref_images[0]
elif payload.get('referenceImage'): # Fallback für alte Calls
ref_image = payload.get('referenceImage')
log_and_save(project_id, "image", "prompt", prompt)
if ref_image:
logging.info(f"Image-Mode: Reference Image found (Length: {len(ref_image)})")
try:
# Aufruf mit optionalem Referenzbild
image_b64 = call_gemini_image(prompt, reference_image_b64=ref_image)
log_and_save(project_id, "image", "response_b64_preview", image_b64[:100] + "...")
return {"imageBase64": f"data:image/png;base64,{image_b64}"}
except Exception as e:
logging.error(f"Failed to generate image: {e}", exc_info=True)
return {"error": "Image generation failed.", "details": str(e)}
def main():
"""