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."""
|
"""Actualiza el campo 'Leads Lake' de un registro GACampaignMes."""
|
||||||
self.gacampaignmes.update(gcm_record_id, {"Leads Lake": lead_ids})
|
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.
|
Actualiza en lote los campos 'Consejo' y 'Criticidad' de GACampaignMes.
|
||||||
updates: lista de (gcm_record_id, consejo_text)
|
updates: lista de (gcm_record_id, consejo_text, criticidad)
|
||||||
|
criticidad: 'Crítico' | 'Peligro' | 'Mantener'
|
||||||
"""
|
"""
|
||||||
for i in range(0, len(updates), 10):
|
for i in range(0, len(updates), 10):
|
||||||
batch = [
|
batch = [
|
||||||
{"id": rid, "fields": {"Consejo": consejo}}
|
{"id": rid, "fields": {"Consejo": consejo, "Criticidad": criticidad}}
|
||||||
for rid, consejo in updates[i:i+10]
|
for rid, consejo, criticidad in updates[i:i+10]
|
||||||
if consejo
|
|
||||||
]
|
]
|
||||||
if batch:
|
if batch:
|
||||||
self.gacampaignmes.batch_update(batch)
|
self.gacampaignmes.batch_update(batch, typecast=True)
|
||||||
|
|
||||||
# ------------------------------------------------------------------ #
|
# ------------------------------------------------------------------ #
|
||||||
# Métodos legacy (usados internamente / compatibilidad) #
|
# Métodos legacy (usados internamente / compatibilidad) #
|
||||||
|
|||||||
25
run.py
25
run.py
@ -76,6 +76,12 @@ SECCION_LABELS = {
|
|||||||
2: "SIN CAMBIOS (MANTENER)",
|
2: "SIN CAMBIOS (MANTENER)",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CRITICIDAD_MAP = {
|
||||||
|
0: "Crítico",
|
||||||
|
1: "Peligro",
|
||||||
|
2: "Mantener",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def run():
|
def run():
|
||||||
print(f"\n{'='*55}")
|
print(f"\n{'='*55}")
|
||||||
@ -169,7 +175,7 @@ def run():
|
|||||||
|
|
||||||
# === SEGUNDA PASADA: imprimir en orden + aplicar decisiones ===
|
# === SEGUNDA PASADA: imprimir en orden + aplicar decisiones ===
|
||||||
resumen = []
|
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
|
last_priority = -1
|
||||||
|
|
||||||
for item in collected:
|
for item in collected:
|
||||||
@ -219,8 +225,11 @@ def run():
|
|||||||
|
|
||||||
apply_decision(campaign, decision, metrics, gads)
|
apply_decision(campaign, decision, metrics, gads)
|
||||||
|
|
||||||
if decision.get("consejo"):
|
advice_updates.append((
|
||||||
consejo_updates.append((campaign["airtable_id"], decision["consejo"]))
|
campaign["airtable_id"],
|
||||||
|
decision.get("consejo", ""),
|
||||||
|
CRITICIDAD_MAP[p],
|
||||||
|
))
|
||||||
|
|
||||||
resumen.append({
|
resumen.append({
|
||||||
"curso": campaign["curso"],
|
"curso": campaign["curso"],
|
||||||
@ -236,11 +245,11 @@ def run():
|
|||||||
|
|
||||||
print()
|
print()
|
||||||
|
|
||||||
# Guardar consejos en GACampaignMes
|
# Guardar consejos y criticidad en GACampaignMes
|
||||||
if consejo_updates:
|
if advice_updates:
|
||||||
print(f"→ Guardando {len(consejo_updates)} consejos en GACampaignMes...")
|
print(f"→ Guardando consejos y criticidad en GACampaignMes ({len(advice_updates)} registros)...")
|
||||||
at.batch_update_gacampaignmes_consejos(consejo_updates)
|
at.batch_update_gacampaignmes_advice(advice_updates)
|
||||||
print(" ✓ Consejos guardados.")
|
print(" ✓ Consejos y criticidad guardados.")
|
||||||
|
|
||||||
# Resumen final ordenado por prioridad (ya está ordenado)
|
# Resumen final ordenado por prioridad (ya está ordenado)
|
||||||
print(f"{'='*55}")
|
print(f"{'='*55}")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user