Descripción del Proyecto
Este proyecto consiste en el diseño e implementación de una capa semántica de analítica (ADA) sobre un sistema transaccional PostgreSQL que cuenta con aproximadamente 500 tablas. La capa semántica actúa como un contrato de datos entre el sistema transaccional y las herramientas de análisis, definiendo un catálogo estructurado de módulos, datasets, métricas y dimensiones que abstrae la complejidad del modelo relacional subyacente.
El núcleo del sistema es una API de reportes dinámicos construida con FastAPI y SQLAlchemy. Esta API valida toda consulta entrante contra el catálogo semántico antes de ejecutarla, evitando SQL libre y garantizando trazabilidad de la lógica de negocio replicada en todos los reportes. Cada métrica y dimensión tiene una definición única en el catálogo, eliminando inconsistencias entre distintos reportes que calculaban la misma métrica de formas diferentes.
El diseño está pensado como base evolutiva hacia autoservicio analítico y consultas en lenguaje natural gobernadas por el catálogo (NL → payload estructurado, no NL → SQL directo). Esto permite que en el futuro un agente de IA pueda responder preguntas de negocio sin acceder directamente a la base de datos transaccional, manteniendo el gobierno de datos y la trazabilidad como principios fundamentales.
Características y Funcionalidades
Catálogo semántico
Registro centralizado de módulos, datasets, métricas y dimensiones con definición única por concepto.
API de reportes dinámicos
Endpoints que validan toda consulta contra el catálogo antes de ejecutar, garantizando trazabilidad.
Gobierno de datos
Toda métrica tiene una definición única, eliminando inconsistencias entre reportes distintos.
Abstracción del modelo relacional
Las herramientas de análisis consumen el catálogo, no el modelo de 500 tablas directamente.
Base para NL2Payload
Arquitectura preparada para consultas en lenguaje natural convertidas a payload estructurado, no SQL directo.
Trazabilidad completa
Cada reporte generado es rastreable hasta su definición en el catálogo semántico.