Syntage · Background Checks (verificación de antecedentes)
Del webhook de Syntage a las tablas de verificación de antecedentes (cabecera, scores, archivos y estatus de bases consultadas). Streaming.
¿Llegaste hasta acá desde…?
Usa esta tabla para entrar en sentido inverso (lo que ves → de dónde sale):
| Si ves… | Eso sale de… | La lógica está en… |
|---|---|---|
| Resultado de verificación de antecedentes | solvento-data-prod.syntage.background_checks |
Ingesta; sin capa dbt — se consume el RAW directo |
| Scores por categoría | solvento-data-prod.syntage.background_check_scores |
Ingesta; sin capa dbt — RAW directo |
| Estatus de bases consultadas / archivos del reporte | syntage.background_check_database_statuses · syntage.background_check_files |
Ingesta; ver "Paso a paso" |
Resumen
| Campo | Valor |
|---|---|
| Origen | Webhook de Syntage (evento de background check) |
| Patrón | Event-driven (Cloud Run → Pub/Sub → Cloud Run handler → Pub/Sub → Dataflow) |
| Tabla RAW | solvento-data-prod.syntage.background_checks (+ background_check_scores, background_check_files, background_check_database_statuses) |
| Frecuencia | Streaming |
| Criticidad | 🟡 Media |
| Dueño | Martin (data eng) |
| Repos | webhook_syntage · api_syntage_handler · templates-dataflow |
Diagrama de linaje
graph LR
SYN[["📨 Syntage<br/>webhook background check"]]
subgraph ing["Ingesta (sin lógica de negocio)"]
CR["Cloud Run<br/>webhook-syntage-inline-prod"]
T1(["Pub/Sub<br/>background-checks-webhook"])
H["Cloud Run handler<br/>background-checks-api-syntage-requests-handler-prod"]
T2(["Pub/Sub<br/>background-checks-api-syntage-success"])
DF["Dataflow<br/>background-checks-prod-20260415-140726"]
RAW[("solvento-data-prod.syntage<br/>background_checks · background_check_scores<br/>background_check_files · background_check_database_statuses")]
end
subgraph cons["Consumo"]
AN["Riesgo / antecedentes<br/>(lee el RAW directo)"]
end
SYN -->|HTTP| CR --> T1 --> H --> T2 --> DF --> RAW
RAW --> AN
classDef src fill:#fde68a,stroke:#b45309,color:#000;
classDef store fill:#bfdbfe,stroke:#1e40af,color:#000;
classDef logic fill:#dcfce7,stroke:#15803d,color:#000;
class SYN src;
class RAW store;
class AN logic;
Paso a paso
- Syntage emite un webhook con el resultado de una verificación de antecedentes.
- Cloud Run
webhook-syntage-inline-prod(webhook_syntage) recibe todos los eventos de Syntage y hace fan-out; para background checks publica al topicbackground-checks-webhook(envBACKGROUND_CHECK_TOPIC). Es el componente más crítico del ecosistema. - Cloud Run handler
background-checks-api-syntage-requests-handler-prod(api_syntage_handler,CONTEXT=background-checks, colabackground-checks-api-syntage-queue) pide el detalle a la API de Syntage y publica al topicbackground-checks-api-syntage-success. - Dataflow
background-checks-prod-20260415-140726(templates-dataflow, carpetabackground-checks) consume la suscripción de entrada (background-checks-webhook-sub/background-checks-api-syntage-success-sub, confirmar cuál usa el job actual) y escribe en streaming a las 4 tablas RAW desolvento-data-prod.syntage.
Nota: el
prod.envde este template trae una DLQ llamadacp-dlqheredada del template de cartas porte; es un valor mal configurado, ignorar (no es la DLQ real de background checks).
Tablas que alimenta
| Tabla | Contenido | Job que la carga |
|---|---|---|
syntage.background_checks |
Cabecera del background check | background-checks-prod-20260415-140726 |
syntage.background_check_scores |
Scores por categoría | background-checks-prod-20260415-140726 |
syntage.background_check_files |
Archivos / reportes (p. ej. background_check_report.pdf) |
background-checks-prod-20260415-140726 |
syntage.background_check_database_statuses |
Estatus de búsqueda en cada base consultada | background-checks-prod-20260415-140726 |
Nota: los nombres de las 3 tablas de detalle son singulares (
background_check_*); solo la cabecera es plural (background_checks).
Consumo aguas abajo
- Riesgo / análisis de antecedentes: este proceso no tiene transformación dbt downstream (por diseño). El consumo se hace directo sobre las tablas RAW en
solvento-data-prod.syntage.
Si falla 🛠️
Impacto: si cae webhook-syntage-inline-prod se afecta todo Syntage (no solo background checks). Mitigante: Syntage reintenta los webhooks; recuperar el servicio suele bastar.
| Síntoma | Dónde mirar | Acción |
|---|---|---|
| No llegan background checks nuevos | Logs Cloud Run webhook-syntage-inline-prod y background-checks-api-syntage-requests-handler-prod |
Si fue un deploy → rollback; si es saturación → subir instancias/memoria. Syntage reintenta |
| Llega al handler pero no a RAW | Dataflow background-checks-prod-…: watermark y backlog de la suscripción de entrada |
Transitorios se recuperan solos; relanzar consumiendo la misma suscripción. Si hay duda, escalar |
| Faltan algunas tablas pero otras cargan | Logs del Dataflow (multi-schema) | Revisar el esquema de la tabla afectada en templates-dataflow/background-checks |
Escalación: lógica SQL / Metabase → Diego · Airbyte → Gero · resto (webhook, handler, Dataflow) → Martin.
Enlaces
- 📊 Estado en vivo: dashboard "Data Processes" (Cloud Monitoring)
- 📦 Ingesta:
webhook_syntage·api_syntage_handler·templates-dataflow(background-checks) - 🧮 Lógica: sin capa dbt (por diseño) — se consume el RAW directo
Última actualización: 2026-06-21 · Confirmado: sin downstream dbt; la DLQ cp-dlq del template es un valor mal configurado a ignorar.