Estado: Activo — actualizado 2025-10-07 15:28 CLT. Responsable: Equipo datos.
Trazabilidad, API y MCP
Esta página centraliza cómo navegar la trazabilidad extremo a extremo, consumirla vía API y aprovechar el router MCP público. Resume los artefactos, comandos y endpoints clave para mantener el catálogo actualizado y ofrecer permalinks estables para tablas y columnas.
1. Resumen ejecutivo
make schema-cataloggenera todos los artefactos de trazabilidad (docs/schema_catalog.md,docs/lineage_paths.json,docs/schema_explorer.html)./mcpentrega un API auto-descubrible con permalinks y lineage hasta RAW (/mcp/tables/{code}/lineage).docs/schema_explorer.htmles la UI online para navegar capas, dominios, métricas de calidad y relaciones.tasks/export/resolve_code.pyy los CSV (docs/schema_codes.csv,docs/column_codes.csv) permiten resolver códigos y construir permalinks desde scripts, MCP o LLMs.- Mantén todo alineado ejecutando
make schema-catalogtras cambios de esquema y revisando diffs antes de publicar.
2. Flujo de datos y trazabilidad
- Capas:
data_raw/→bronze.*→staging/stg.*→silver.*→gold.*→pub.*→ API/UI. - Scripts ETL: viven en
tasks/(descargas y orquestación),etl/(procesos programados) y SQL enetl/sql/siguiendo prefijos (gold_*,silver_*, etc.). - Lineage automático:
tasks/export/lineage_trace_export.pyresume rutas endocs/lineage_paths.json, usadas por el MCP y el explorer. - Calidad: métricas
null_frac,nn,nf, sample sizes y outliers se anotan enschema_graph.json.gzy aparecen como tooltips en la UI.
Comandos útiles
# Regenerar catálogo, lineage y explorer (usa $DATABASE_URL)
make schema-catalog
# Inspeccionar lineage crudo de una tabla gold
jq '.\"gold.funnel_stage_matrix\"' docs/lineage_paths.json
# Trazar un dato específico
psql "$DATABASE_URL" -c "SELECT * FROM gold.funnel_stage_matrix WHERE region_id=13 AND anio=2023;"
psql "$DATABASE_URL" -c "SELECT * FROM silver.policiales_region WHERE region_id=13 AND anio=2023;"UI online
Sirve la carpeta docs/ (quarto preview docs o python -m http.server) y abre docs/schema_explorer.html. La URL soporta permalinks (?table=<code> o ?column=<table_code:column_code>) y muestra:
- Dominio, capa y tipo de objeto.
- Primary keys, foreign keys, unique constraints.
- Métricas de calidad (
null %,hist_min,hist_max, outliers). - Rutas de lineage hacia capas inferiores (tooltip y panel lateral).
3. API de catálogo y trazabilidad
Los endpoints FastAPI en ops/services/api publican vistas pub.*. Para explorar y validar:
- Referencia rápida:
docs/API_ENDPOINTS.md(contratos) ydocs/API_STATUS_ROADMAP.md(estado). - Gibbs: usa
uvicorn app:app --reload --port 8120omake serve-api. - Cada vista se sustenta en tablas
gold.*opublish.*incluidas en el explorer; cruza el permalink para auditar cambios.
Ejemplo de verificación
# Levanta el API
make serve-api
# Chequea un endpoint funnel
curl -s "http://localhost:8120/api/v1/funnel/region?region_id=13&anio=2023" | jq '.[0]'Relaciona la respuesta con el permalink de gold.funnel_stage_matrix (docs/schema_explorer.html?table=a33678976933) para confirmar columnas y lineage.
4. Router MCP público
El router en illanes_api/routes/mcp.py expone un catálogo navegable por agentes MCP, Codex o LLMs. Se alimenta de los artefactos generados por make schema-catalog.
| Endpoint | Descripción | Ejemplo |
|---|---|---|
GET /mcp/status |
Metadata (generated_at, capas disponibles, recuentos). |
curl http://localhost:8120/mcp/status |
GET /mcp/tables |
Lista filtrable (layer, domain, q, limit, offset). |
curl "http://localhost:8120/mcp/tables?layer=gold&domain=funnel" |
GET /mcp/tables/{code} |
Detalle completo de tabla/columna (constraints, métricas, permalinks). | curl http://localhost:8120/mcp/tables/a33678976933 |
GET /mcp/tables/{code}/lineage |
Paths completos hasta bronze y archivos RAW. |
curl http://localhost:8120/mcp/tables/a33678976933/lineage |
Las respuestas incluyen:
permalink(schema_explorer.html?table=code).- Metadatos (
layer,domain,kind,row_count,null_ratio). - Columnas con sus códigos (
column_code), tipos y flags (is_primary_key,is_foreign_key). lineage.paths: secuencia de tablas y scripts (etl/sql/<archivo>.sql,tasks/<ingesta>.py) para alcanzar el origen.
Mantención
- Ejecuta
pytest tests/backend/api/test_mcp_router.pytras cambios en el router. - Documenta nuevos dominios o capas en
docs/DATA_CATALOG.mdydocs/LINEAGE_GUIDE.mdpara que los agentes MCP los descubran. - Si añades columnas o tablas, vuelve a generar
docs/schema_codes.csvy commitea los diffs.
5. CLI y permalinks
python tasks/export/resolve_code.py table <code>devuelve JSON con nombre lógico, tipo y permalink.python tasks/export/resolve_code.py column <table_code:column_code>localiza columnas puntuales.- Usa los códigos en tickets, PRs y verificaciones para evitar ambigüedades; los permalinks son estables mientras el nombre del objeto no cambie.
6. Checklist de publicación
- Ejecuta
make schema-catalog. - Revisa
git diff docs/schema_catalog.md docs/schema_explorer.html docs/lineage_paths.json. - Corre
pytest tests/backend/api/test_schema_permalinks.py tests/backend/api/test_mcp_router.py. - Actualiza este documento si hay cambios de flujo o endpoints.
- Reconstruye el sitio (
quarto render docs) antes de publicar.
7. Recursos relacionados
docs/LINEAGE_GUIDE.md: guía detallada de lineage y dominios.docs/PERMALINKS.md: especificación de códigos y permalinks.docs/DATA_CATALOG.md: catálogo maestro con capas y dominios.docs/API_ENDPOINTS.md: contratos públicos del API.docs/schema_explorer.html: vista interactiva con relaciones y métricas.
¿Necesitas extender la trazabilidad para un nuevo dominio? Duplica el patrón (etl/sql/<layer>_<dominio>_*.sql, usa prefijos consistentes) y agrega las rutas en los scripts/SQL correspondientes. Ejecuta nuevamente make schema-catalog para reflejarlo en el MCP, el explorer y los permalinks.