diff --git a/scripts/auto_deploy_v2.py b/scripts/auto_deploy_v2.py index d0638d84a3..85c06ff470 100755 --- a/scripts/auto_deploy_v2.py +++ b/scripts/auto_deploy_v2.py @@ -14,7 +14,7 @@ def validar_promocion(data: Dict[str, Any]) -> None: if campo not in data: raise ValueError(f"Falta el campo requerido: {campo}") -def main(): +def main() -> None: if len(sys.argv) < 2: print("Uso: python3 auto_deploy_v2.py ") sys.exit(1) diff --git a/scripts/automatizacion_despliegue.py b/scripts/automatizacion_despliegue.py index bcbe56aab8..a4f140e132 100644 --- a/scripts/automatizacion_despliegue.py +++ b/scripts/automatizacion_despliegue.py @@ -7,6 +7,7 @@ """ import os +import re import sys import json import time @@ -40,15 +41,21 @@ def process_file(filepath: str, dry_run: bool) -> bool: with open(filepath, "r", encoding="utf-8") as f: contenido_archivo = f.read() + match = re.search(r"```(?:json)?\s*(\{.*?\})\s*```", contenido_archivo, re.DOTALL) + if match: + contenido_limpio = match.group(1).strip() + else: + contenido_limpio = contenido_archivo.strip() + try: - datos_cargados = json.loads(contenido_archivo) + datos_cargados = json.loads(contenido_limpio) except json.JSONDecodeError as e: # Fallback en caso de que el LLM incluya texto extra if e.pos > 0: try: - datos_cargados = json.loads(contenido_archivo[:e.pos]) - except json.JSONDecodeError: - raise ValueError(f"Error parseando JSON incluso con el texto extra cortado.") + datos_cargados = json.loads(contenido_limpio[:e.pos]) + except json.JSONDecodeError as err: + raise ValueError(f"Error parseando JSON incluso con el texto extra cortado.") from err else: raise