34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
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
|