Fix encoding, batch sync and field mapping
- Force UTF-8 stdout with line buffering to fix Windows encoding error - Use batch_create/batch_update in Airtable sync (10x faster) - Fix CampaignID field type (string, not int) - Fix FechaEntrada → Fecha in leads query Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
ef7d494aeb
commit
f954b7ee38
@ -45,6 +45,8 @@ class AirtableClient:
|
||||
|
||||
created = []
|
||||
updated = []
|
||||
to_create = []
|
||||
to_update = [] # lista de (record_id, changes, name)
|
||||
|
||||
for gc in google_campaigns:
|
||||
gid = gc["id"]
|
||||
@ -52,11 +54,7 @@ class AirtableClient:
|
||||
at_record = at_by_gid.get(gid)
|
||||
|
||||
if at_record is None:
|
||||
self.campaigns.create({
|
||||
"Campaign Name": gc["name"],
|
||||
"CampaignID": int(gid),
|
||||
"Status": at_status,
|
||||
})
|
||||
to_create.append({"Campaign Name": gc["name"], "CampaignID": gid, "Status": at_status})
|
||||
created.append(gc["name"])
|
||||
else:
|
||||
changes = {}
|
||||
@ -65,9 +63,18 @@ class AirtableClient:
|
||||
if at_record["fields"].get("Status") != at_status:
|
||||
changes["Status"] = at_status
|
||||
if changes:
|
||||
self.campaigns.update(at_record["id"], changes)
|
||||
to_update.append((at_record["id"], changes, gc["name"]))
|
||||
updated.append(gc["name"])
|
||||
|
||||
# Crear en lotes de 10
|
||||
for i in range(0, len(to_create), 10):
|
||||
self.campaigns.batch_create(to_create[i:i+10])
|
||||
|
||||
# Actualizar en lotes de 10
|
||||
for i in range(0, len(to_update), 10):
|
||||
batch = [{"id": rid, "fields": changes} for rid, changes, _ in to_update[i:i+10]]
|
||||
self.campaigns.batch_update(batch)
|
||||
|
||||
return {"created": created, "updated": updated}
|
||||
|
||||
def get_leads_this_month(self, cursoid_text: str) -> int:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user