Add Criticidad field sync to GACampaignMes
- batch_update_gacampaignmes_advice() replaces consejos method, also saves Criticidad - Criticidad mapped from priority: Crítico (PAUSAR/SPRINT), Peligro, Mantener - Updated in same batch as Consejo after second pass Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
d9a8e7ee0d
commit
7bd1cf20da
@ -355,19 +355,19 @@ class AirtableClient:
|
||||
"""Actualiza el campo 'Leads Lake' de un registro GACampaignMes."""
|
||||
self.gacampaignmes.update(gcm_record_id, {"Leads Lake": lead_ids})
|
||||
|
||||
def batch_update_gacampaignmes_consejos(self, updates: list[tuple[str, str]]) -> None:
|
||||
def batch_update_gacampaignmes_advice(self, updates: list[tuple[str, str, str]]) -> None:
|
||||
"""
|
||||
Actualiza en lote el campo 'Consejo' de varios registros GACampaignMes.
|
||||
updates: lista de (gcm_record_id, consejo_text)
|
||||
Actualiza en lote los campos 'Consejo' y 'Criticidad' de GACampaignMes.
|
||||
updates: lista de (gcm_record_id, consejo_text, criticidad)
|
||||
criticidad: 'Crítico' | 'Peligro' | 'Mantener'
|
||||
"""
|
||||
for i in range(0, len(updates), 10):
|
||||
batch = [
|
||||
{"id": rid, "fields": {"Consejo": consejo}}
|
||||
for rid, consejo in updates[i:i+10]
|
||||
if consejo
|
||||
{"id": rid, "fields": {"Consejo": consejo, "Criticidad": criticidad}}
|
||||
for rid, consejo, criticidad in updates[i:i+10]
|
||||
]
|
||||
if batch:
|
||||
self.gacampaignmes.batch_update(batch)
|
||||
self.gacampaignmes.batch_update(batch, typecast=True)
|
||||
|
||||
# ------------------------------------------------------------------ #
|
||||
# Métodos legacy (usados internamente / compatibilidad) #
|
||||
|
||||
25
run.py
25
run.py
@ -76,6 +76,12 @@ SECCION_LABELS = {
|
||||
2: "SIN CAMBIOS (MANTENER)",
|
||||
}
|
||||
|
||||
CRITICIDAD_MAP = {
|
||||
0: "Crítico",
|
||||
1: "Peligro",
|
||||
2: "Mantener",
|
||||
}
|
||||
|
||||
|
||||
def run():
|
||||
print(f"\n{'='*55}")
|
||||
@ -169,7 +175,7 @@ def run():
|
||||
|
||||
# === SEGUNDA PASADA: imprimir en orden + aplicar decisiones ===
|
||||
resumen = []
|
||||
consejo_updates = [] # (gcm_record_id, consejo) para batch update final
|
||||
advice_updates = [] # (gcm_record_id, consejo, criticidad) para batch update final
|
||||
last_priority = -1
|
||||
|
||||
for item in collected:
|
||||
@ -219,8 +225,11 @@ def run():
|
||||
|
||||
apply_decision(campaign, decision, metrics, gads)
|
||||
|
||||
if decision.get("consejo"):
|
||||
consejo_updates.append((campaign["airtable_id"], decision["consejo"]))
|
||||
advice_updates.append((
|
||||
campaign["airtable_id"],
|
||||
decision.get("consejo", ""),
|
||||
CRITICIDAD_MAP[p],
|
||||
))
|
||||
|
||||
resumen.append({
|
||||
"curso": campaign["curso"],
|
||||
@ -236,11 +245,11 @@ def run():
|
||||
|
||||
print()
|
||||
|
||||
# Guardar consejos en GACampaignMes
|
||||
if consejo_updates:
|
||||
print(f"→ Guardando {len(consejo_updates)} consejos en GACampaignMes...")
|
||||
at.batch_update_gacampaignmes_consejos(consejo_updates)
|
||||
print(" ✓ Consejos guardados.")
|
||||
# Guardar consejos y criticidad en GACampaignMes
|
||||
if advice_updates:
|
||||
print(f"→ Guardando consejos y criticidad en GACampaignMes ({len(advice_updates)} registros)...")
|
||||
at.batch_update_gacampaignmes_advice(advice_updates)
|
||||
print(" ✓ Consejos y criticidad guardados.")
|
||||
|
||||
# Resumen final ordenado por prioridad (ya está ordenado)
|
||||
print(f"{'='*55}")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user