import config def apply_decision(campaign: dict, decision: dict, metrics: dict, gads_client) -> bool: """ Aplica la decisión del agente sobre Google Ads. En DRY_RUN solo imprime lo que haría. """ accion = decision.get("accion", "MANTENER") nuevo_budget = decision.get("nuevo_budget_diario", 0) budget_resource = metrics.get("budget_resource_name", "") if accion == "PAUSAR": print(f" ⛔ ACCIÓN: Pausar campaña") return gads_client.pause_campaign(campaign["google_campaign_id"]) elif accion in ("AUMENTAR_PRESUPUESTO", "REDUCIR_PRESUPUESTO"): if nuevo_budget <= 0: print(f" ⚠️ Presupuesto calculado inválido ({nuevo_budget}), omitiendo.") return False print(f" 💰 ACCIÓN: {accion} → {nuevo_budget:.2f}€/día") if not budget_resource: print(f" ⚠️ Sin budget_resource_name, no se puede aplicar.") return False return gads_client.set_campaign_budget(budget_resource, nuevo_budget) elif accion == "MANTENER": print(f" ✅ ACCIÓN: Mantener sin cambios") return True else: print(f" ❓ Acción desconocida: {accion}") return False