Skip to content

Airbyte · PostgreSQL svc_master (DB operativa del producto)

Replica el PostgreSQL operativo del producto (base "svc master", alimentada por los microservicios del monorepo vulture) a solvento-data-prod.svc_master_public.* mediante un conector Postgres de Airbyte, cada ~20 min.

¿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…
Dashboards operativos del producto en Metabase solvento-data-prod.svc_master_public.* (RAW) Metabase lee DIRECTO del RAW (sin dbt). El SQL vive en la propia pregunta de Metabase
Loads / deliveries / invoices / payment_orders en analytics solvento-data-prod.svc_master_public.* (RAW) dbt-analytics → models/staging/svc_public/
svc_master_public.xml_data (CFDIs parseados) solvento-data-prod.svc_master_public.xml_data (RAW) Origen escrito por bucket-xml-parser; ver ficha de ese proceso. Airbyte solo lo replica
Una tabla svc_master_public.* cruda solvento-data-prod.svc_master_public.* (RAW) Ingesta vía Airbyte (sin lógica de negocio); ver "Paso a paso"

Resumen

Campo Valor
Origen PostgreSQL operativo "svc master" (microservicios del monorepo vulture)
Patrón Airbyte (conector Postgres) — sin lógica de negocio en la ingesta
Destino solvento-data-prod.svc_master_public.*
Frecuencia Sync cada ~20 min
Criticidad 🔴 Alta — muchos dashboards operativos de Metabase corren DIRECTO de este dataset
Dueño Gero (Airbyte) · transformaciones: Diego (dbt-analytics)
Repos (servicio gestionado — sin repo; configurado en consola de Airbyte) · sistema fuente: vulture

Diagrama de linaje

graph LR
    SRC[["🗄️ PostgreSQL svc_master<br/>microservicios de vulture"]]

    subgraph ing["1 · Ingesta (sin lógica de negocio)"]
        AB["Airbyte<br/>conector Postgres svc_master"]
        RAW[("solvento-data-prod<br/>svc_master_public.* · RAW")]
    end

    XMLP["bucket-xml-parser<br/><i>escribe public.xml_data en el origen</i>"]

    subgraph cons["2 · Consumo"]
        MB["🖥️ Metabase<br/>dashboards operativos (DIRECTO del RAW)"]
        DBT["dbt-analytics<br/>models/staging/svc_public"]
    end

    SRC -->|"Postgres · ~20 min"| AB --> RAW
    XMLP -.->|"public.xml_data"| SRC
    RAW --> MB
    RAW --> DBT

    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 SRC src;
    class RAW store;
    class DBT logic;

Paso a paso

1 · Ingesta (mueve datos, no aplica lógica de negocio)

  1. PostgreSQL svc_master es la base operativa del producto. La escriben los microservicios del monorepo vulture (vulture) — accounts-payable, factoring, carriers, kyc, etc.
  2. Airbyte corre un conector Postgres configurado en la consola de Airbyte (no hay repo de código). Cada ~20 min lanza un sync que replica las tablas del esquema public.
  3. Airbyte escribe los datos crudos en solvento-data-prod.svc_master_public.*. La ingesta solo replica; no aplica reglas de negocio.
  4. svc_master_public.xml_data es un caso especial: en el origen, la tabla Postgres public.xml_data es alimentada por el proceso bucket-xml-parser (parseo de CFDIs XML); Airbyte luego la replica a BigQuery como una tabla más.

2 · Consumo (atención: aquí no siempre hay capa dbt)

  • Metabase — muchos dashboards operativos del producto corren DIRECTO del dataset RAW svc_master_public.*. Por eso este proceso es de criticidad alta: si el sync se atrasa, esos dashboards quedan desactualizados. El SQL de negocio vive en cada pregunta de Metabase, no en dbt.
  • dbt-analytics (models/staging/svc_public/) — staging de loads, invoices, deliveries, payment_orders, business, etc., para los modelos analíticos que sí pasan por dbt.

Tablas que alimenta

Tabla Contenido Job que la carga
svc_master_public.business Entidad de negocio del producto Airbyte (conector Postgres svc_master)
svc_master_public.loads Cargas operativas Airbyte (conector Postgres svc_master)
svc_master_public.deliveries Entregas Airbyte (conector Postgres svc_master)
svc_master_public.invoices Facturas (lado operativo) Airbyte (conector Postgres svc_master)
svc_master_public.payment_orders Órdenes de pago Airbyte (conector Postgres svc_master)
svc_master_public.carriers Transportistas Airbyte (conector Postgres svc_master)
svc_master_public.providers Proveedores Airbyte (conector Postgres svc_master)
svc_master_public.documents Documentos Airbyte (conector Postgres svc_master)
svc_master_public.xml_data CFDIs XML parseados (origen escrito por bucket-xml-parser) Airbyte (replica public.xml_data)

Consumo aguas abajo

  • Metabase — dashboards operativos del producto, directo del RAW (crítico).
  • dbt-analytics — models/staging/svc_public para modelos analíticos.
  • KYC · Documentos a Drive — lee entities_kyc (con carriers, business_info y ss_shareholders) para armar el índice de documentos por RFC (ficha, en desarrollo).

Si falla 🛠️

Impacto: 🔴 alto. Muchos dashboards operativos de Metabase leen directo de svc_master_public.*; si el sync se detiene o atrasa, esos dashboards muestran datos viejos.

Síntoma Dónde mirar Acción
svc_master_public.* no se actualiza / dashboards operativos viejos UI de Airbyte — estado y hora del último sync de la conexión svc_master Revisar logs del sync; reintentar el sync manualmente
El sync falla con error de auth/conexión Credenciales del Postgres svc_master en la consola de Airbyte Verificar credenciales/host/puerto de Postgres y conectividad de red
Solo xml_data está desactualizada Revisar el proceso bucket-xml-parser (origen) Si la falla está en el parseo de XML, ver la ficha de bucket-xml-parser; Airbyte solo replica
Un dashboard muestra un número "raro" SQL de la pregunta de Metabase (no hay dbt en medio) Revisar el SQL del dashboard / pregunta de Metabase

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

Enlaces

  • 📊 Estado en vivo: dashboard "Data Processes" (Cloud Monitoring)
  • ⚙️ Configuración de la ingesta: consola de Airbyte → conexión svc_master (servicio gestionado, sin repo)
  • 🧩 Sistema fuente: vulture (microservicios que escriben el Postgres operativo)
  • 🧮 Lógica analítica: dbt-analytics — modelos en models/staging/svc_public/

Última actualización: 2026-06-21 · Si cambia el flujo o un modelo dbt, actualizar esta ficha en el mismo MR.