Skip to content

Cloud Schedulers — qué corre y cuándo

Fuente única de los disparos agendados del ecosistema (proyecto solvento-data-prod, región us-central1). Casi todos los procesos batch/pull arrancan desde acá.

⚠️ Casi todos los Cloud Scheduler se crean a mano en la consola de GCP — no están en Terraform ni en los repos. Si se borra/edita uno de esos, no hay IaC que lo restaure: documentarlo acá y recrearlo a mano.

✅ Excepción (desde 2026-07-24): los jobs de consistencia ya están en IaC. Se creó el módulo modules/cloud_scheduler en terraform-gcp-infrastructure y los dos jobs de consistencia se declaran en cloud_scheduler_jobs_prod (en terraform.tfvars). Es el primer paso para cerrar esta deuda — el módulo ya sirve para migrar el resto, ver su README.md (incluye cómo importar un job que hoy existe creado a mano, sin downtime).

Jobs activos (orden aproximado del día)

Hora (cron) TZ Job Dispara (HTTP) Proceso / ficha
0 2 * * * MX keycloack-ingest-daily POST keycloack-ingest-prod/extract (sin OIDC) Keycloak — usuarios. Creado a mano; pendiente pasarlo a Terraform con OIDC
0 3 * * * MX keycloack-events-daily 🔧 POST keycloack-ingest-prod/extract-events (OIDC, {"days_back":3}) Keycloak — eventos de usuario a keycloack_events (SOL-477)
0 3 * * * MX vaas-start-kyc-process POST vaas-move-kyc-process-prod/start-vaas-kyc-process VAAS Move KYC
0 4 * * * MX shinkansen-treasury-api-daily POST treasury-api-shinkansen-requests-handler-prod/extract-incremental/treasury Shinkansen Treasury
*/10 4 * * * MX vaas-search-vault POST vaas-move-kyc-process-prod/search-vault VAAS Move KYC
0 4 * * * MX consistencia-elk-ingestion 🔧 POST consistencia-elk-bq-syntage/consistency/elk-ingestion Consistencia — capa 1, BQ vs ELK. Era horario (0 * * * *) hasta 2026-07-24
0 5 * * * MX syntage-entities-sync-daily 🔧 POST syntage-entities-sync/sync (OIDC, {"mode":"incremental"}) Entities Sync — en Terraform desde 2026-10 (MR terraform-gcp-infrastructure!129). El job manual apuntaba a /process (ruta inexistente): 404 diario y catálogo congelado desde 2026-06-17
0 5 * * * MX extract-syntage-credential-status-daily GET syntage-ciec-extraction-status-prod/extract-status CIEC Status
0 5 * * * MX elevenlabs-extractor-daily POST elevenlabs-extractor-prod/extract (OIDC) ElevenLabs · Cobranza — conversaciones del agente de cobranza del día
0 5 * * * MX banxico-scraper-daily POST banxico-scraper/scrape Banxico Scraper
15 5 * * * MX syntage-moratory-interest-daily POST syntage-moratory-interest-prod/process (OIDC, incremental) Insights Moratorios
45 5 * * * MX syntage-kyc-extractor-daily 🔧 POST syntage-kyc-extractor-prod/process (OIDC, {"mode":"incremental"}) Syntage KYC — desde 2026-09-25. No depende de syntage-entities-sync
0 6 2-31 * * Bahía B. insights-publisher-staging-daily POST insights-publisher-staging/ (12 meses) Insights Sales — productivo pese al nombre (ver nota abajo). Arranca el día 2 porque el día 1 lo cubre el mensual
30 6 * * * MX consistencia-api-source 🔧 POST consistencia-elk-bq-syntage/consistency/api-source Consistencia — capa 3, BQ vs API Syntage
0 7 * * * MX sendgrid-extractor-daily 🔧 POST sendgrid-extractor-prod/extract (OIDC) Messaging · Envíos — email (SendGrid). retry_count = 0 a propósito
0 7 * * * MX kyc-drive-sync-daily 🔧 POST kyc-drive-sync-prod/process (OIDC, {"since":"2026-09-01","window_days":90,"max_files":1000,"apply":true}) KYC · Documentos a Drive — desde 2026-10-01. since es la fecha de arranque (carga inicial desde el 01/09); desde el 30/11 manda la ventana de 90 días. Un reintento: la corrida es idempotente
30 7 * * * MX bird-extractor-daily 🔧 POST bird-extractor-prod/extract (OIDC) Messaging · Envíos — WhatsApp (Bird/MessageBird)
0 8,13,18 * * * MX contactos-adela-sheets-etl-daily 🔧 POST contactos-adela-sheets-etl-prod/extract (OIDC) Contactos Cobranza Adela — base de contactables del agente de cobranza, 3x por día
0 9,23 * * * MX diesel-price-scraper-scheduler POST diesel-price-scraper/run Diesel Price Scraper
0 23 * * * UTC extract-metabase-daily GET metabase-extractor-prod/sync-all-bigquery Metabase Extractor
0 */3 * * * UTC extract-syntage-extractions GET syntage-ciec-extraction-status-prod/search-extractions CIEC Status
0 8 * * 6 MX sendgrid-extractor-weekly-sweep 🔧 POST sendgrid-extractor-prod/extract?sweep=true (OIDC) Messaging · Envíos — barrido semanal (sábados)
0 7 1 * * Bahía B. insights-publisher-staging-monthly-5years POST insights-publisher-staging/ ({"cleanup_months_back": 60}, 5 años) Insights Sales — productivo; verificado OK el 2026-10-01

🔧 = job gestionado por Terraform (cloud_scheduler_jobs_prod en terraform-gcp-infrastructure). El resto sigue siendo manual.

Nota de orden: syntage-entities-sync-daily (5:00) corre antes que syntage-moratory-interest-daily (5:15) a propósito: el insight de moratorios necesita el catálogo rfc → entity_id fresco.

-staging en Insights no es un ambiente. insights-publisher-staging (y el Dataflow insights-sales-revenue-customers-daily-staging) es el proceso productivo: se llama así porque escribe una tabla con duplicados (insights.sales_revenue_customers_daily_staging, una recarga por corrida/webhook) que se limpia en una capa posterior (vista insights.sales_revenue_customers_daily_v). Ver Insights Sales.

Jobs deprecados (confirmado 2026-10-05): insights-publisher-daily y insights-publisher-monthly-5years apuntaban al servicio insights-publisher (sin sufijo), que ya no existe en Cloud Run. No aparecen en gcloud scheduler jobs list. No recrearlos — los vigentes son las variantes -staging.

Job eliminado (2026-07-24): consistencia-elk-bq-syntage-historical (30 7 * * *) le pegaba a /consistency/historical, endpoint que ahora responde 410 — la comparación histórica BQ-vs-ELK se sacó por no tener sentido conceptual (BigQuery tiene backfill desde 2014, ELK tiene retención de ~90 días). Ver Consistencia. Si sigue apareciendo en gcloud scheduler jobs list, borrarlo.

Job eliminado (2026-09-11): Terminal_Uploader (30 10 * * *, AR) → GET terminal-uploader-prod/run. Exportaba solvento-adv-analytics-prod.terminal a Supabase, que se dio de baja ese mismo día junto con el front de Lovable. No recrearlo — ver Apagado Terminal → Supabase.

Procesos disparados por scheduler — notas

  • banxico-scraper y diesel-price-scraper: ya documentados (Banxico, Diesel). ⚠️ Su código no está en GitLab (deuda técnica, solo local).

Si un proceso agendado no corrió

  1. Revisar el estado del job en Cloud Scheduler (state, último lastAttemptTime, status.code).
  2. Si el job está ENABLED pero falla: mirar los logs del Cloud Run destino (la columna "Dispara"). El scheduler solo hace el HTTP; la lógica (y el error real) está en el servicio.
  3. Si el job no existe (alguien lo borró): si tiene 🔧, correr terraform apply en terraform-gcp-infrastructure y lo recrea. Si no lo tiene, recrearlo a mano con el cron y el target de la tabla de arriba.

Escalación: SQL/Metabase → Diego · Airbyte → Gero · resto → Martin.


Última actualización: 2026-10-06 (alta de keycloack-events-daily) · 2026-10-05 (sincronizado contra gcloud scheduler jobs list: alta de ElevenLabs, SendGrid ×2, Bird y Contactos Adela; baja de insights-publisher-daily / -monthly-5years) · Listado base tomado de gcloud scheduler jobs list (us-central1) el 2026-06-21, más los cambios de consistencia del 2026-07-24 y la eliminación de Terminal_Uploader del 2026-09-11. Los jobs sin 🔧 se crean a mano — mantener esta tabla al día al agregar/quitar uno. Los que tienen 🔧 salen de Terraform: ahí la fuente de verdad es terraform.tfvars, y esta tabla es el índice legible.