Cloud Schedulers — qué corre y cuándo
Fuente única de los disparos agendados del ecosistema (proyecto
solvento-data-prod, regiónus-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
consistenciaya están en IaC. Se creó el módulomodules/cloud_schedulerenterraform-gcp-infrastructurey los dos jobs de consistencia se declaran encloud_scheduler_jobs_prod(enterraform.tfvars). Es el primer paso para cerrar esta deuda — el módulo ya sirve para migrar el resto, ver suREADME.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_prodenterraform-gcp-infrastructure). El resto sigue siendo manual.Nota de orden:
syntage-entities-sync-daily(5:00) corre antes quesyntage-moratory-interest-daily(5:15) a propósito: el insight de moratorios necesita el catálogorfc → entity_idfresco.
-stagingen Insights no es un ambiente.insights-publisher-staging(y el Dataflowinsights-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 (vistainsights.sales_revenue_customers_daily_v). Ver Insights Sales.Jobs deprecados (confirmado 2026-10-05):
insights-publisher-dailyyinsights-publisher-monthly-5yearsapuntaban al servicioinsights-publisher(sin sufijo), que ya no existe en Cloud Run. No aparecen engcloud 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 responde410— 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 engcloud scheduler jobs list, borrarlo.Job eliminado (2026-09-11):
Terminal_Uploader(30 10 * * *, AR) → GETterminal-uploader-prod/run. Exportabasolvento-adv-analytics-prod.terminala 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-scraperydiesel-price-scraper: ya documentados (Banxico, Diesel). ⚠️ Su código no está en GitLab (deuda técnica, solo local).
Si un proceso agendado no corrió
- Revisar el estado del job en Cloud Scheduler (
state, últimolastAttemptTime,status.code). - Si el job está
ENABLEDpero 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. - Si el job no existe (alguien lo borró): si tiene 🔧, correr
terraform applyenterraform-gcp-infrastructurey 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.