Proyecto Terminal
Proyecto completo de análisis y visualización de datos de terminales de carga, que consume datos del Data Warehouse (DWH) y los expone a través de una aplicación web construida con Lovable.
Descripción
El Proyecto Terminal es una solución end-to-end que transforma datos de terminales desde el DWH (solvento-adv-analytics-prod) hacia Supabase, donde una aplicación web construida con Lovable consume y visualiza los datos para análisis de mercado y operaciones de terminales.
Arquitectura del Proyecto
graph TB
subgraph dwh["Data Warehouse<br/>solvento-adv-analytics-prod"]
DBT[dbt ETLs<br/>Transformaciones]
TerminalSchema[terminal schema<br/>client_dbt, market_dbt]
end
subgraph etl["ETL Pipeline"]
CloudRun[Cloud Run<br/>terminal-uploader-prod]
Scheduler[Cloud Scheduler<br/>Cron: 10:30 AM diario]
end
subgraph supabase["Supabase<br/>PostgreSQL"]
FreightShipments[freight_shipments<br/>Envíos de Clientes]
Market[market<br/>Datos de Mercado]
ETLControl[etl_control<br/>Control de ETL]
end
subgraph app["Aplicación Web"]
LovableApp[Solvento Terminal<br/>Lovable + React + TypeScript]
SupabaseClient[Supabase Client<br/>Consultas en tiempo real]
end
DBT -->|"Genera tablas<br/>client_dbt, market_dbt"| TerminalSchema
Scheduler -->|"HTTP GET /run"| CloudRun
CloudRun -->|"Query incremental<br/>WHERE etl_dts > watermark"| TerminalSchema
CloudRun -->|"UPSERT por batches"| FreightShipments
CloudRun -->|"UPSERT por batches"| Market
CloudRun -->|"Actualiza watermark"| ETLControl
FreightShipments -->|"Consulta datos"| SupabaseClient
Market -->|"Consulta datos"| SupabaseClient
SupabaseClient --> LovableApp
Componentes del Proyecto
1. Data Warehouse (Origen)
Proyecto GCP: solvento-adv-analytics-prod
Dataset: terminal
Tablas Generadas por dbt:
- client_dbt: Modelo gold de datos de clientes terminales
- Generado por: Proyecto dbt dbt-etls (modelo client_dbt)
- Schema: terminal
- Contiene: Datos depurados de envíos de carga de clientes terminales
market_dbt: Modelo gold de datos de mercado terminal- Generado por: Proyecto dbt
dbt-etls(modelomarket_dbt) - Schema:
terminal - Contiene: Datos agregados de mercado terminal para análisis
Relación con dbt: Ver dbt - Terminal Client y Terminal Market
2. ETL Pipeline (Cloud Run)
Servicio: terminal-uploader-prod
Repositorio: terminal-uploader (ubicado en /Users/solvento/Desktop/terminal-uploader)
Funcionalidad:
- Extrae datos incrementales de BigQuery (solvento-adv-analytics-prod.terminal)
- Carga datos a Supabase mediante UPSERT
- Gestiona watermarks para carga incremental
- Procesa en batches para optimizar rendimiento
Orquestación: Cloud Scheduler ejecuta el pipeline diariamente a las 10:30 AM
Detalles técnicos: Ver Terminal Uploader - ETL
3. Supabase (Destino)
Base de Datos: PostgreSQL (hosted en Supabase)
Tablas:
- freight_shipments: Envíos de carga de clientes terminales
- Mapeo desde: terminal.client_dbt
- Primary Key: uuid
- Constraint: UNIQUE en uuid (para UPSERT)
market: Datos agregados de mercado terminal- Mapeo desde:
terminal.market_dbt - Primary Key:
uuid -
Constraint: UNIQUE en
uuid(para UPSERT) -
etl_control: Tabla de control para gestión de watermarks - Gestiona:
last_etl_dts,last_execution,status,records_processed
4. Aplicación Web (Solvento Terminal)
Plataforma: Lovable (React + TypeScript + Supabase)
Repositorio: solvento-terminal (ubicado en /Users/solvento/Desktop/solvento-terminal)
Tecnologías: - Frontend: React, TypeScript, Tailwind CSS - UI Components: shadcn-ui - Backend: Supabase (PostgreSQL + Auth + Real-time) - Build Tool: Vite
Funcionalidades:
- Dashboard de analytics de terminales
- Visualización de datos de envíos (freight_shipments)
- Análisis de mercado terminal (market)
- Filtros y búsquedas interactivas
- Integración directa con Supabase para consultas en tiempo real
- Chat interface para análisis conversacional
Flujo de Datos Completo
1. Transformación (dbt)
Los datos raw de solvento-data-prod son transformados por dbt hacia solvento-adv-analytics-prod.terminal:
Proceso dbt:
- Silver Layer: Transformaciones intermedias de datos de terminales
- Gold Layer: Modelos finales client_dbt y market_dbt
- Frecuencia: Ejecución programada de dbt (ver dbt)
2. ETL Incremental (Cloud Run)
El servicio terminal-uploader-prod sincroniza datos desde BigQuery hacia Supabase:
Proceso ETL:
1. Cloud Scheduler invoca el servicio a las 10:30 AM diariamente
2. El servicio lee el último watermark desde etl_control en Supabase
3. Extrae registros nuevos de BigQuery con WHERE etl_dts > last_etl_dts
4. Procesa datos en batches (1,000 registros para freight_shipments, 250 para market)
5. Ejecuta UPSERT en Supabase usando uuid como clave
6. Actualiza watermark con el máximo etl_dts procesado
Características:
- Carga incremental basada en etl_dts
- UPSERT para manejar actualizaciones históricas
- Procesamiento paralelo por batches
- Connection pooling optimizado
3. Consumo (Aplicación Web)
La aplicación Solvento Terminal consume datos directamente de Supabase:
Consultas: - Consultas SQL directas a Supabase - Filtros y agregaciones en tiempo real - Visualizaciones interactivas - Análisis de tendencias y métricas
Repositorios del Proyecto
terminal-uploader
Ubicación: /Users/solvento/Desktop/terminal-uploader
Contenido: - Pipeline ETL Python (Cloud Run) - Configuración de batches y workers - Gestión de watermarks - Scripts de deployment
Estructura:
terminal-uploader/
├── gcp-etl/
│ ├── main.py # Cloud Run entry point
│ ├── config.py # Configuración centralizada
│ ├── extractors/ # Extracción de BigQuery
│ ├── loaders/ # Carga a Supabase
│ ├── utils/ # Watermarks y batches
│ └── terraform/ # Infraestructura como código
solvento-terminal
Ubicación: /Users/solvento/Desktop/solvento-terminal
Contenido: - Aplicación web React + TypeScript - Componentes de dashboard y analytics - Integración con Supabase - Configuración de Lovable
Estructura:
solvento-terminal/
├── src/
│ ├── components/ # Componentes React
│ ├── pages/ # Páginas de la aplicación
│ ├── hooks/ # Custom hooks
│ ├── integrations/ # Integración Supabase
│ └── lib/ # Utilidades
├── supabase/ # Configuración Supabase
└── public/ # Assets estáticos
Integración con Otros Componentes
dbt (Procesamiento)
Relación: dbt genera las tablas client_dbt y market_dbt en solvento-adv-analytics-prod.terminal
Ver: dbt - Terminal Client y Terminal Market
Cloud Run (Consumo)
Relación: El servicio terminal-uploader-prod ejecuta el pipeline ETL
Ver: Cloud Run - terminal-uploader-prod
Cloud Scheduler (Orquestación)
Relación: Cloud Scheduler orquesta la ejecución diaria del pipeline
Job: Terminal_Uploader (10:30 AM diario)
Ver: Cloud Scheduler
Monitoreo y Métricas
Estado del ETL
Consultar en Supabase:
Logs del Pipeline
Métricas Clave
- Registros procesados: Por tabla y por ejecución
- Tiempo de ejecución: Duración del pipeline
- Tasa de éxito: Porcentaje de ejecuciones exitosas
- Gap de datos: Diferencia entre BigQuery y Supabase (monitoreo de integridad)
Próximos Pasos
- [ ] Documentar modelos específicos de dbt para Terminal
- [ ] Agregar métricas de uso de la aplicación web
- [ ] Documentar procesos de deployment de la aplicación Lovable
- [ ] Agregar diagramas de flujo específicos por funcionalidad
Referencias
- ETL Pipeline: Terminal Uploader - ETL
- Transformaciones dbt: dbt - Terminal
- Cloud Run Service: Cloud Run
- Cloud Scheduler: Cloud Scheduler
- Repositorio ETL:
terminal-uploader(ubicado en/Users/solvento/Desktop/terminal-uploader) - Repositorio Aplicación:
solvento-terminal(ubicado en/Users/solvento/Desktop/solvento-terminal)