#!/usr/bin/env python3
"""ACAO 2 - SEARSH CLOUD: TARGET_SPEND -> MAXIMIZE_CONVERSIONS (sem tCPA).
Autorizado por Renato. Confirma por releitura."""
import json
from google.ads.googleads.client import GoogleAdsClient
from google.protobuf import field_mask_pb2

TOK = json.load(open('/opt/mia/config/google_ads_tokens.json'))
CUSTOMER_ID = "2186917336"
CAMPAIGN_ID = "23567395804"
cfg = {"developer_token": TOK["developer_token"],"client_id": TOK["client_id"],
       "client_secret": TOK["client_secret"],"refresh_token": TOK["refresh_token"],
       "login_customer_id": TOK["mcc_id"],"use_proto_plus": True}
client = GoogleAdsClient.load_from_dict(cfg)
ga = client.get_service("GoogleAdsService")
camp_svc = client.get_service("CampaignService")
def micros(v): return (v or 0)/1_000_000

print("--- ANTES ---")
for r in ga.search(customer_id=CUSTOMER_ID, query=f"""
    SELECT campaign.name, campaign.status, campaign.bidding_strategy_type,
           campaign.target_spend.cpc_bid_ceiling_micros
    FROM campaign WHERE campaign.id = {CAMPAIGN_ID}"""):
    print(f"  {r.campaign.name} | {r.campaign.bidding_strategy_type.name} | "
          f"ceiling=R${micros(r.campaign.target_spend.cpc_bid_ceiling_micros):.2f} | {r.campaign.status.name}")

op = client.get_type("CampaignOperation")
c = op.update
c.resource_name = camp_svc.campaign_path(CUSTOMER_ID, CAMPAIGN_ID)
# ativar Maximize Conversions setando target_cpa_micros=0 (sem tCPA); apontar subfield exata
c.maximize_conversions.target_cpa_micros = 0
op.update_mask.CopyFrom(field_mask_pb2.FieldMask(paths=["maximize_conversions.target_cpa_micros"]))

resp = camp_svc.mutate_campaigns(customer_id=CUSTOMER_ID, operations=[op])
print("MUTATE OK:", resp.results[0].resource_name)

print("--- DEPOIS (releitura) ---")
for r in ga.search(customer_id=CUSTOMER_ID, query=f"""
    SELECT campaign.name, campaign.status, campaign.bidding_strategy_type,
           campaign.maximize_conversions.target_cpa_micros,
           campaign.target_spend.cpc_bid_ceiling_micros,
           campaign_budget.amount_micros
    FROM campaign WHERE campaign.id = {CAMPAIGN_ID}"""):
    print(f"  BIDDING: {r.campaign.bidding_strategy_type.name}")
    print(f"  tCPA: R${micros(r.campaign.maximize_conversions.target_cpa_micros):.2f} (0 = sem tCPA)")
    print(f"  STATUS: {r.campaign.status.name}")
    print(f"  BUDGET/dia: R${micros(r.campaign_budget.amount_micros):.2f}")
